Mercurial > hg > decoupage
annotate decoupage/formats.py @ 71:94298e137131
fix rss bug
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 08 Aug 2012 21:07:36 -0700 |
parents | 262fb90a54b4 |
children | cc54fa8065c5 |
rev | line source |
---|---|
54
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
1 """ |
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
2 pluggable formats for directory listings |
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
3 """ |
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
4 |
60 | 5 import datetime |
6 import PyRSS2Gen | |
7 from utils import link | |
49
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
8 try: |
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
9 import json as json |
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
10 except ImportError: |
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
11 import simplejson as json |
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
12 |
59
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
13 class JSON(object): |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
14 """ |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
15 JSON format for index pages |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
16 just (basically) return the data |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
17 """ |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
18 |
60 | 19 def __init__(self, app): |
59
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
20 self.app = app |
49
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
21 |
59
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
22 def __call__(self, request, data): |
49
ac693b8df32c
add idea of formats and json format
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
23 |
59
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
24 # fix datetime |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
25 for f in data['files']: |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
26 if 'modified' in f: |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
27 f['modified'] = f['modified'].ctime() |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
28 |
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
29 return 'application/json', json.dumps(data['files']) |
70
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
60
diff
changeset
|
30 |
54
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
31 class RSS(object): |
57 | 32 """RSS for indices""" |
54
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
33 |
57 | 34 def __init__(self, app, count=10, cascade=False): |
35 self.app = app # the decoupage | |
59
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
36 self.count = int(count) |
57 | 37 self.cascade = cascade |
38 | |
39 def __call__(self, request, data): | |
60 | 40 items = [ PyRSS2Gen.RSSItem(title=item['name'], |
70
262fb90a54b4
make template loading lenient and other fixes; bump version
Jeff Hammel <jhammel@mozilla.com>
parents:
60
diff
changeset
|
41 description=item['description'] or item.get('title') or item['name'], |
60 | 42 pubDate=item['modified'], |
43 guid=PyRSS2Gen.Guid(link(request, item['path']))) | |
44 for item in data['files'] ] | |
45 path_link = link(request, data['path']) | |
71 | 46 description = data.get('title') or data['path'] |
47 rss = PyRSS2Gen.RSS2(title=description, | |
60 | 48 link=path_link, |
71 | 49 description=description, |
60 | 50 lastBuildDate = datetime.datetime.now(), |
51 items=items | |
52 ) | |
53 return 'application/rss+xml', rss.to_xml() |