diff --git a/r2/r2/controllers/wiki.py b/r2/r2/controllers/wiki.py index b3e98966d..4172e84f4 100644 --- a/r2/r2/controllers/wiki.py +++ b/r2/r2/controllers/wiki.py @@ -86,10 +86,10 @@ class WikiController(RedditController): return self.redirect(url) if version: - edit_by = version.author_name() + edit_by = version.get_author() edit_date = version.date else: - edit_by = page.author_name() + edit_by = page.get_author() edit_date = page._get('last_edit_date') diffcontent = None diff --git a/r2/r2/lib/jsontemplates.py b/r2/r2/lib/jsontemplates.py index 2681707b0..1c95de6af 100755 --- a/r2/r2/lib/jsontemplates.py +++ b/r2/r2/lib/jsontemplates.py @@ -599,16 +599,19 @@ class WikiSettingsJsonTemplate(ThingJsonTemplate): class WikiViewJsonTemplate(ThingJsonTemplate): def render(self, thing, *a, **kw): edit_date = time.mktime(thing.edit_date.timetuple()) if thing.edit_date else None + edit_by = Wrapped(thing.edit_by).render() if thing.edit_by else None return ObjectTemplate(dict(content_md=thing.page_content_md, content_html=wikimarkdown(thing.page_content_md), - revision_by=thing.edit_by, + revision_by=edit_by, revision_date=edit_date, may_revise=thing.may_revise)) class WikiRevisionJsonTemplate(ThingJsonTemplate): def render(self, thing, *a, **kw): timestamp = time.mktime(thing.date.timetuple()) if thing.date else None - return ObjectTemplate(dict(author=thing._get('author'), + author = thing.get_author() + author = Wrapped(author).render() if author else None + return ObjectTemplate(dict(author=author, id=str(thing._id), timestamp=timestamp, reason=thing._get('reason'), diff --git a/r2/r2/models/wiki.py b/r2/r2/models/wiki.py index 0a97961d4..924705621 100644 --- a/r2/r2/models/wiki.py +++ b/r2/r2/models/wiki.py @@ -69,14 +69,6 @@ class WikiPageEditors(tdb_cassandra.View): _value_type = 'str' _connection_pool = 'main' -def get_author_name(author_name): - if not author_name: - return "[unknown]" - try: - return Account._by_name(author_name).name - except NotFound: - return '[deleted]' - class WikiRevision(tdb_cassandra.UuidThing, Printable): """ Contains content (markdown), author of the edit, page the edit belongs to, and datetime of the edit """ @@ -88,14 +80,21 @@ class WikiRevision(tdb_cassandra.UuidThing, Printable): cache_ignore = set(list(_str_props)).union(Printable.cache_ignore) - def author_name(self): - return get_author_name(self._get('author', None)) + def get_author(self): + author = self._get('author') + return Account._by_name(author, allow_deleted=True) if author else None @classmethod def add_props(cls, user, wrapped): + from r2.lib.pages import WrappedUser for item in wrapped: item._hidden = item.is_hidden item._spam = False + author = item.get_author() + if author is None: + item.printable_author = '[unknown]' + else: + item.printable_author = WrappedUser(author) item.reported = False @classmethod @@ -168,8 +167,10 @@ class WikiPage(tdb_cassandra.Thing): _int_props = ('permlevel') _bool_props = ('listed_') - def author_name(self): - return get_author_name(getattr(self, 'last_edit_by', None)) + def get_author(self): + if self._get('last_edit_by'): + return Account._by_name(self.last_edit_by, allow_deleted=True) + return None @classmethod def get(cls, sr, name): diff --git a/r2/r2/templates/wikirevision.html b/r2/r2/templates/wikirevision.html index 0ed9ae79a..a6235beba 100644 --- a/r2/r2/templates/wikirevision.html +++ b/r2/r2/templates/wikirevision.html @@ -55,7 +55,7 @@ - ${thing.author_name()} + ${thing.printable_author} diff --git a/r2/r2/templates/wikirevision.xml b/r2/r2/templates/wikirevision.xml index 3ddfeff21..ed7e36cfc 100644 --- a/r2/r2/templates/wikirevision.xml +++ b/r2/r2/templates/wikirevision.xml @@ -27,7 +27,7 @@ ${thing._id} http://${get_domain(subreddit=False)}/${c.wiki_base_url}/${thing.page}?v=${thing._id} - ${thing._get('author', 'Unknown')} + ${thing.printable_author} ${thing.sr}/${thing.page} ${thing._get('reason')} ${thing.date} diff --git a/r2/r2/templates/wikiview.html b/r2/r2/templates/wikiview.html index 1143d7836..45bc20d16 100644 --- a/r2/r2/templates/wikiview.html +++ b/r2/r2/templates/wikiview.html @@ -24,6 +24,7 @@ <%! from r2.lib.filters import wikimarkdown + from r2.lib.pages import WrappedUser %> %if thing.diff: @@ -41,7 +42,10 @@ %if thing.edit_date:
- ${_("revision by %s") % thing.edit_by} - — ${timestamp(thing.edit_date)} ago + %if thing.edit_by: + ${unsafe(_("revision by %s") % WrappedUser(thing.edit_by).render())} + —  + %endif + ${unsafe("%(time)s ago" % dict(time=timestamp(thing.edit_date)))} %endif