Mercurial > hg > decoupage
annotate decoupage/formats.py @ 113:cc54fa8065c5 default tip
py3
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Wed, 25 Nov 2020 10:52:36 -0800 |
parents | 94298e137131 |
children |
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 | |
113 | 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 |
113 | 31 |
54
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
32 class RSS(object): |
57 | 33 """RSS for indices""" |
54
0e2b9e0507c5
add documentation for formats and a stub
Jeff Hammel <jhammel@mozilla.com>
parents:
49
diff
changeset
|
34 |
57 | 35 def __init__(self, app, count=10, cascade=False): |
36 self.app = app # the decoupage | |
59
07cf168aa98c
make formats classes that can take arguments
Jeff Hammel <jhammel@mozilla.com>
parents:
58
diff
changeset
|
37 self.count = int(count) |
57 | 38 self.cascade = cascade |
39 | |
40 def __call__(self, request, data): | |
60 | 41 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
|
42 description=item['description'] or item.get('title') or item['name'], |
60 | 43 pubDate=item['modified'], |
44 guid=PyRSS2Gen.Guid(link(request, item['path']))) | |
45 for item in data['files'] ] | |
46 path_link = link(request, data['path']) | |
71 | 47 description = data.get('title') or data['path'] |
48 rss = PyRSS2Gen.RSS2(title=description, | |
60 | 49 link=path_link, |
71 | 50 description=description, |
60 | 51 lastBuildDate = datetime.datetime.now(), |
52 items=items | |
53 ) | |
54 return 'application/rss+xml', rss.to_xml() |