def _atom_feed(self, repos, public=True): journal = self._get_journal_data(repos) if public: _link = h.canonical_url('public_journal_atom') _desc = '%s %s %s' % (c.site_name, _('public journal'), 'atom feed') else: _link = h.canonical_url('journal_atom') _desc = '%s %s %s' % (c.site_name, _('journal'), 'atom feed') feed = Atom1Feed(title=_desc, link=_link, description=_desc, language=self.language, ttl=self.ttl) for entry in journal[:self.feed_nr]: user = entry.user if user is None: #fix deleted users user = AttributeDict({ 'short_contact': entry.username, 'email': '', 'full_contact': '' }) action, action_extra, ico = h.action_parser(entry, feed=True) title = "%s - %s %s" % (user.short_contact, action(), entry.repository.repo_name) desc = action_extra() _url = None if entry.repository is not None: _url = h.canonical_url('changelog_home', repo_name=entry.repository.repo_name) feed.add_item(title=title, pubdate=entry.action_date, link=_url or h.canonical_url(''), author_email=user.email, author_name=user.full_contact, description=desc) response.content_type = feed.mime_type return feed.writeString('utf-8')
def _rss_feed(self, repos, public=True): journal = self._get_journal_data(repos) if public: _link = h.canonical_url('public_journal_atom') _desc = '%s %s %s' % (c.site_name, _('Public Journal'), 'rss feed') else: _link = h.canonical_url('journal_atom') _desc = '%s %s %s' % (c.site_name, _('Journal'), 'rss feed') feed = Rss201rev2Feed(title=_desc, link=_link, description=_desc, language=language, ttl=ttl) for entry in journal[:feed_nr]: user = entry.user if user is None: #fix deleted users user = AttributeDict({'short_contact': entry.username, 'email': '', 'full_contact': ''}) action, action_extra, ico = h.action_parser(entry, feed=True) title = "%s - %s %s" % (user.short_contact, action(), entry.repository.repo_name) desc = action_extra() _url = None if entry.repository is not None: _url = h.canonical_url('changelog_home', repo_name=entry.repository.repo_name) feed.add_item(title=title, pubdate=entry.action_date, link=_url or h.canonical_url(''), author_email=user.email, author_name=user.full_contact, description=desc) response.content_type = feed.mime_type return feed.writeString('utf-8')
def _feed(self, repos, feeder, link, desc): response.content_type = feeder.content_type journal = self._get_journal_data(repos) header = dict( title=desc, link=link, description=desc, ) entries=[] for entry in journal[:feed_nr]: user = entry.user if user is None: # fix deleted users user = AttributeDict({'short_contact': entry.username, 'email': '', 'full_contact': ''}) action, action_extra, ico = h.action_parser(entry, feed=True) title = "%s - %s %s" % (user.short_contact, action(), entry.repository.repo_name) _url = None if entry.repository is not None: _url = h.canonical_url('changelog_home', repo_name=entry.repository.repo_name) entries.append(dict( title=title, pubdate=entry.action_date, link=_url or h.canonical_url(''), author_email=user.email, author_name=user.full_name_or_username, description=action_extra(), )) return feeder.render(header, entries)