annotate bitsyblog/utils.py @ 133:ce478807848e default tip

py3
author Jeff Hammel <k0scist@gmail.com>
date Mon, 28 Dec 2020 21:18:19 +0000
parents 73434c2db108
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
1 """utlity functions for bitsyblog"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
2
75
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
3 import cgi
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
4 import datetime
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
5 import os
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
6
79
4df927b0d847 fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 75
diff changeset
7 import docutils
4df927b0d847 fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 75
diff changeset
8 import docutils.core
4df927b0d847 fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 75
diff changeset
9
4df927b0d847 fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 75
diff changeset
10 from docutils.utils import SystemMessage
4df927b0d847 fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 75
diff changeset
11
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
12 # format to uniquely label blog posts
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
13 timeformat = ( 'YYYY', 'MM', 'DD', 'HH', 'MM', 'SS' )
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
14 timestamp = '%Y%m%d%H%M%S' # strftime representation
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
15
113
Jeff Hammel <k0scist@gmail.com>
parents: 84
diff changeset
16
75
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
17 def ReST2html(string):
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
18 """renders a string with restructured text"""
84
e5a23f5ea14e make cooked bodies depend on file mtime
Jeff Hammel <jhammel@mozilla.com>
parents: 79
diff changeset
19
75
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
20 settings = { 'report_level': 5 }
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
21 string = string.strip()
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
22 try:
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
23 parts = docutils.core.publish_parts(string,
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
24 writer_name='html',
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
25 settings_overrides=settings)
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
26 body = parts['body']
113
Jeff Hammel <k0scist@gmail.com>
parents: 84
diff changeset
27 except (SystemMessage, UnicodeError) as e:
75
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
28 lines = [ cgi.escape(i.strip()) for i in string.split('\n') ]
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
29 body = '<br/>\n'.join(lines)
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
30 return body
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
31
113
Jeff Hammel <k0scist@gmail.com>
parents: 84
diff changeset
32
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
33 def validate_css(css):
114
73434c2db108 soft-deprecate validate_css method
Jeff Hammel <k0scist@gmail.com>
parents: 113
diff changeset
34 # DEPRECATED! Just return `True` for now
73434c2db108 soft-deprecate validate_css method
Jeff Hammel <k0scist@gmail.com>
parents: 113
diff changeset
35 return True
73434c2db108 soft-deprecate validate_css method
Jeff Hammel <k0scist@gmail.com>
parents: 113
diff changeset
36
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
37
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
38 def date(datestamp):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
39 datestamp = os.path.split(datestamp)[-1]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
40 retval = []
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
41 for i in timeformat:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
42 retval.append(int(datestamp[:len(i)]))
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
43 datestamp = datestamp[len(i):]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
44 return datetime.datetime(*retval)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
45
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 5
diff changeset
46 def datestamp(date=None):
84
e5a23f5ea14e make cooked bodies depend on file mtime
Jeff Hammel <jhammel@mozilla.com>
parents: 79
diff changeset
47 if isinstance(date, float):
e5a23f5ea14e make cooked bodies depend on file mtime
Jeff Hammel <jhammel@mozilla.com>
parents: 79
diff changeset
48 date = datetime.datetime.fromtimestamp(date)
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 5
diff changeset
49 if date is None:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 5
diff changeset
50 date = datetime.datetime.now()
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
51 return date.strftime(timestamp)