# HG changeset patch # User Mads Kiilerich # Date 2019-11-11 00:20:43 # Node ID f9b1c7d12beb68c24f0f5f4db1ff20ee112350cf # Parent 19e046dd9771ea6806482e96ffda6d2fa4aeb68c journal: refactor to reduce feed code duplication diff --git a/kallithea/controllers/journal.py b/kallithea/controllers/journal.py --- a/kallithea/controllers/journal.py +++ b/kallithea/controllers/journal.py @@ -104,21 +104,16 @@ class JournalController(BaseController): return journal - def _atom_feed(self, repos, public=True): + def _feed(self, repos, feed_factory, link, desc): 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=language, - ttl=ttl) + feed = feed_factory( + title=desc, + link=link, + description=desc, + language=language, + ttl=ttl, + ) for entry in journal[:feed_nr]: user = entry.user @@ -130,7 +125,6 @@ class JournalController(BaseController): 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', @@ -141,52 +135,32 @@ class JournalController(BaseController): link=_url or h.canonical_url(''), author_email=user.email, author_name=user.full_contact, - description=desc) + description=action_extra()) response.content_type = feed.mime_type return feed.writeString('utf-8') - def _rss_feed(self, repos, public=True): - journal = self._get_journal_data(repos) + def _atom_feed(self, repos, public=True): if public: - _link = h.canonical_url('public_journal_atom') - _desc = '%s %s %s' % (c.site_name, _('Public Journal'), + 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') + + return self._feed(repos, Atom1Feed, link, desc) + + def _rss_feed(self, repos, public=True): + 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) + link = h.canonical_url('journal_atom') + desc = '%s %s %s' % (c.site_name, _('Journal'), 'rss feed') - 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') + return self._feed(repos, Rss201rev2Feed, link, desc) @LoginRequired() def index(self):