PageRenderTime 12ms CodeModel.GetById 5ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 0ms

/shabti/templates/shenu/+package+/lib/feed/feed.py_tmpl

https://bitbucket.org/gawel/shabti
Unknown | 75 lines | 65 code | 10 blank | 0 comment | 0 complexity | 1c8cb85abd67d095695c33b3056498b3 MD5 | raw file
 1import time
 2from warnings import warn
 3import pylons
 4from pylons import request
 5from pylons.controllers import *
 6from pylons.controllers.util import redirect
 7from {{package}}.lib.base import BaseController, render
 8from {{package}}.model import *
 9import {{package}}.lib.helpers as h
10
11import logging
12log = logging.getLogger(__name__)
13
14class FeedControllerBase(BaseController):
15    """ Object for generating feeds in multiple formats """
16
17    def __init__(self, default="atom1.0"):
18        self.default = default
19        self.formats = ["atom1.0", "rss2.0"]
20
21    def date_to_3339(self, date):
22        date = date.strftime("%Y-%m-%dT%H:%M:%SZ")
23        return date
24
25    def date_to_822(self, date):
26        date = date.strftime("%a, %d %b %Y %H:%M:%S GMT")
27        return date
28    
29    def depr_entrys(self, feed):
30        if "entrys" in feed:
31            warn("You should use 'entries' instead of 'entrys'",
32                DeprecationWarning, 3)
33            feed['entries'] = feed['entrys']
34            del feed['entrys']
35
36    def format_dates(self, feed, format):
37        if format == 822:
38            convert_date = self.date_to_822
39        else:
40            convert_date = self.date_to_3339
41        if feed.has_key('updated'):
42            feed["updated"] = convert_date(feed["updated"])
43        self.depr_entrys(feed)
44        for entry in feed['entries']:
45            if entry.has_key('updated'):
46                entry["updated"] = convert_date(entry["updated"])
47            if entry.has_key('published'):
48                entry["published"] = convert_date(entry["published"])
49        return feed
50
51    def index(self):
52        return redirect("%s" % self.default)
53
54    def atom1_0(self, **kwargs):
55        feed = self.get_feed_data(**kwargs)
56        self.format_dates(feed, 3339)
57        feed["href"] = "%s/" % feed['feedmeta']['link']
58        self.depr_entrys(feed)
59        c.feedmeta = feed['feedmeta']
60        c.entries = feed['entries']
61        return render("feed/atom1_0.mak")
62                        # ,
63                        # content_type="application/atom+xml", 
64                        # feed)
65
66    def rss2_0(self, **kwargs):
67        feed = self.get_feed_data(**kwargs)
68        self.format_dates(feed, 822)
69        self.depr_entrys(feed)
70        c.feedmeta = feed['feedmeta']
71        c.entries = feed['entries']
72        return render("feed/rss2_0.mak")
73                               #  ,
74                               # content_type="application/rss+xml", 
75                               # feed)