annotate bitsyblog/utils.py @ 75:6b8ccf6ec819

move restructured text string rendering to its own method
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 24 Sep 2010 19:01:07 -0700
parents c228832db770
children 4df927b0d847
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 import urllib
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
7 import urllib2
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
8
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
9 # 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
10 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
11 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
12
75
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
13 def ReST2html(string):
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
14 """renders a string with restructured text"""
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
15
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
16 settings = { 'report_level': 5 }
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
17 string = string.strip()
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
18 try:
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
19
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
20 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
21 writer_name='html',
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
22 settings_overrides=settings)
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
23 body = parts['body']
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
24 except (SystemMessage, UnicodeError), e:
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
25 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
26 body = '<br/>\n'.join(lines)
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
27 return body
6b8ccf6ec819 move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents: 45
diff changeset
28
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
29 def validate_css(css):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
30 """use a webservice to determine if the argument is valid css"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
31 url = 'http://jigsaw.w3.org/css-validator/validator?text=%s'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
32 url = url % urllib.quote_plus(css)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
33 foo = urllib2.urlopen(url)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
34 text = foo.read()
5
794dac65c9b6 comment about how brittle the CSS validation is
k0s <k0scist@gmail.com>
parents: 0
diff changeset
35 return not 'We found the following errors' in text # XXX hacky
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
36
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
37 def date(datestamp):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
38 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
39 retval = []
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
40 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
41 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
42 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
43 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
44
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 5
diff changeset
45 def datestamp(date=None):
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 5
diff changeset
46 if date is None:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 5
diff changeset
47 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
48 return date.strftime(timestamp)