Mercurial > hg > bitsyblog
annotate bitsyblog/utils.py @ 79:4df927b0d847
fix unicode error in titles (i hope)
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sat, 23 Oct 2010 16:54:36 -0700 |
parents | 6b8ccf6ec819 |
children | e5a23f5ea14e |
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 |
79
4df927b0d847
fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents:
75
diff
changeset
|
9 import docutils |
4df927b0d847
fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents:
75
diff
changeset
|
10 import docutils.core |
4df927b0d847
fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents:
75
diff
changeset
|
11 |
4df927b0d847
fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents:
75
diff
changeset
|
12 from docutils.utils import SystemMessage |
4df927b0d847
fix unicode error in titles (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents:
75
diff
changeset
|
13 |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
14 # 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
|
15 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
|
16 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
|
17 |
75
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
18 def ReST2html(string): |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
19 """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
|
20 |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
21 settings = { 'report_level': 5 } |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
22 string = string.strip() |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
23 try: |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
24 |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
25 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
|
26 writer_name='html', |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
27 settings_overrides=settings) |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
28 body = parts['body'] |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
29 except (SystemMessage, UnicodeError), e: |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
30 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
|
31 body = '<br/>\n'.join(lines) |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
32 return body |
6b8ccf6ec819
move restructured text string rendering to its own method
Jeff Hammel <jhammel@mozilla.com>
parents:
45
diff
changeset
|
33 |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
34 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
|
35 """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
|
36 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
|
37 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
|
38 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
|
39 text = foo.read() |
5
794dac65c9b6
comment about how brittle the CSS validation is
k0s <k0scist@gmail.com>
parents:
0
diff
changeset
|
40 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
|
41 |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
42 def date(datestamp): |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
43 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
|
44 retval = [] |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
45 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
|
46 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
|
47 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
|
48 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
|
49 |
45 | 50 def datestamp(date=None): |
51 if date is None: | |
52 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
|
53 return date.strftime(timestamp) |