annotate decoupage/formats.py @ 70:262fb90a54b4

make template loading lenient and other fixes; bump version
author Jeff Hammel <jhammel@mozilla.com>
date Sat, 04 Aug 2012 15:55:52 -0700
parents cf18ea0313f9
children 94298e137131
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
5 import datetime
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
6 import PyRSS2Gen
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
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
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
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
884e6c805208 more stubbing for RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
32 """RSS for indices"""
54
0e2b9e0507c5 add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents: 49
diff changeset
33
57
884e6c805208 more stubbing for RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
34 def __init__(self, app, count=10, cascade=False):
884e6c805208 more stubbing for RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
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
884e6c805208 more stubbing for RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
37 self.cascade = cascade
884e6c805208 more stubbing for RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
38
884e6c805208 more stubbing for RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 55
diff changeset
39 def __call__(self, request, data):
60
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
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
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
42 pubDate=item['modified'],
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
43 guid=PyRSS2Gen.Guid(link(request, item['path'])))
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
44 for item in data['files'] ]
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
45 path_link = link(request, data['path'])
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
46 rss = PyRSS2Gen.RSS2(title=data['title'] or data['path'],
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
47 link=path_link,
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
48 description=data['title'] or data['path'],
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
49 lastBuildDate = datetime.datetime.now(),
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
50 items=items
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
51 )
cf18ea0313f9 add some RSS
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
52 return 'application/rss+xml', rss.to_xml()