diff --git a/webapp_post.py b/webapp_post.py index 14947d45..0a8079bb 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -542,6 +542,66 @@ def getMuteIconHtml(isMuted: bool, return muteStr +def getDeleteIconHtml(nickname: str, domainFull: str, + allowDeletion: bool, + postActor: str, + messageId: str, + postJsonObject: {}, + pageNumberParam: str, + iconsPath: str, + translate: {}) -> str: + """Returns html for delete icon/button + """ + deleteStr = '' + if (allowDeletion or + ('/' + domainFull + '/' in postActor and + messageId.startswith(postActor))): + if '/users/' + nickname + '/' in messageId: + if not isNewsPost(postJsonObject): + deleteStr = \ + ' <a class="imageAnchor" href="/users/' + \ + nickname + \ + '?delete=' + messageId + pageNumberParam + \ + '" title="' + translate['Delete this post'] + '">\n' + deleteStr += \ + ' ' + \ + '<img loading="lazy" alt="' + \ + translate['Delete this post'] + \ + ' |" title="' + translate['Delete this post'] + \ + '" src="/' + iconsPath + '/delete.png"/></a>\n' + return deleteStr + + +def getPublishedDateStr(postJsonObject: {}, + showPublishedDateOnly: bool) -> str: + """Return the html for the published date on a post + """ + publishedStr = '' + if postJsonObject['object'].get('published'): + publishedStr = postJsonObject['object']['published'] + if '.' not in publishedStr: + if '+' not in publishedStr: + datetimeObject = \ + datetime.strptime(publishedStr, "%Y-%m-%dT%H:%M:%SZ") + else: + datetimeObject = \ + datetime.strptime(publishedStr.split('+')[0] + 'Z', + "%Y-%m-%dT%H:%M:%SZ") + else: + publishedStr = \ + publishedStr.replace('T', ' ').split('.')[0] + datetimeObject = parse(publishedStr) + if not showPublishedDateOnly: + publishedStr = datetimeObject.strftime("%a %b %d, %H:%M") + else: + publishedStr = datetimeObject.strftime("%a %b %d") + # if the post has replies then append a symbol to indicate this + if postJsonObject.get('hasReplies'): + if postJsonObject['hasReplies'] is True: + publishedStr = '[' + publishedStr + ']' + return publishedStr + + def individualPostAsHtml(allowDownloads: bool, recentPostsCache: {}, maxRecentPosts: int, iconsPath: str, translate: {}, @@ -890,23 +950,15 @@ def individualPostAsHtml(allowDownloads: bool, timelinePostBookmark, translate) - deleteStr = '' - if (allowDeletion or - ('/' + domainFull + '/' in postActor and - messageId.startswith(postActor))): - if '/users/' + nickname + '/' in messageId: - if not isNewsPost(postJsonObject): - deleteStr = \ - ' <a class="imageAnchor" href="/users/' + \ - nickname + \ - '?delete=' + messageId + pageNumberParam + \ - '" title="' + translate['Delete this post'] + '">\n' - deleteStr += \ - ' ' + \ - '<img loading="lazy" alt="' + \ - translate['Delete this post'] + \ - ' |" title="' + translate['Delete this post'] + \ - '" src="/' + iconsPath + '/delete.png"/></a>\n' + deleteStr = \ + getDeleteIconHtml(nickname, domainFull, + allowDeletion, + postActor, + messageId, + postJsonObject, + pageNumberParam, + iconsPath, + translate) # benchmark 13.1 if enableTimingLog: @@ -1224,29 +1276,8 @@ def individualPostAsHtml(allowDownloads: bool, replyStr, announceStr, likeStr, bookmarkStr, deleteStr, muteStr) - publishedStr = '' - if postJsonObject['object'].get('published'): - publishedStr = postJsonObject['object']['published'] - if '.' not in publishedStr: - if '+' not in publishedStr: - datetimeObject = \ - datetime.strptime(publishedStr, "%Y-%m-%dT%H:%M:%SZ") - else: - datetimeObject = \ - datetime.strptime(publishedStr.split('+')[0] + 'Z', - "%Y-%m-%dT%H:%M:%SZ") - else: - publishedStr = \ - publishedStr.replace('T', ' ').split('.')[0] - datetimeObject = parse(publishedStr) - if not showPublishedDateOnly: - publishedStr = datetimeObject.strftime("%a %b %d, %H:%M") - else: - publishedStr = datetimeObject.strftime("%a %b %d") - # if the post has replies then append a symbol to indicate this - if postJsonObject.get('hasReplies'): - if postJsonObject['hasReplies'] is True: - publishedStr = '[' + publishedStr + ']' + publishedStr = \ + getPublishedDateStr(postJsonObject, showPublishedDateOnly) # benchmark 15 if enableTimingLog: