diff --git a/daemon.py b/daemon.py index d79b2f44b..b1c30a742 100644 --- a/daemon.py +++ b/daemon.py @@ -11472,7 +11472,8 @@ class PubServer(BaseHTTPRequestHandler): if htmlGET and usersInPath: if '/calendar' in self.path: # show the calendar screen - msg = htmlCalendar(self.server.cssCache, + msg = htmlCalendar(self.server.personCache, + self.server.cssCache, self.server.translate, self.server.baseDir, self.path, self.server.httpPrefix, diff --git a/happening.py b/happening.py index 3c78521be..e13c8270b 100644 --- a/happening.py +++ b/happening.py @@ -233,6 +233,8 @@ def getTodaysEvents(baseDir: str, nickname: str, domain: str, # link to the id so that the event can be # easily deleted tag['postId'] = postId.split('#statuses#')[1] + tag['sender'] = postId.split('#statuses#')[0] + tag['sender'] = tag['sender'].replace('#', '/') postEvent.append(tag) else: # tag is a place diff --git a/webapp_calendar.py b/webapp_calendar.py index 025614e79..787d64165 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -10,6 +10,7 @@ import os from datetime import datetime from datetime import date from shutil import copyfile +from utils import getDisplayName from utils import getConfigParam from utils import getNicknameFromActor from utils import getDomainFromActor @@ -94,7 +95,7 @@ def htmlCalendarDeleteConfirm(cssCache: {}, translate: {}, baseDir: str, return deletePostStr -def _htmlCalendarDay(cssCache: {}, translate: {}, +def _htmlCalendarDay(personCache: {}, cssCache: {}, translate: {}, baseDir: str, path: str, year: int, monthNumber: int, dayNumber: int, nickname: str, domain: str, dayEvents: [], @@ -134,6 +135,8 @@ def _htmlCalendarDay(cssCache: {}, translate: {}, eventDescription = None eventPlace = None postId = None + senderName = '' + senderActor = None # get the time place and description for ev in eventPost: if ev['type'] == 'Event': @@ -144,12 +147,35 @@ def _htmlCalendarDay(cssCache: {}, translate: {}, datetime.strptime(ev['startTime'], "%Y-%m-%dT%H:%M:%S%z") eventTime = eventDate.strftime("%H:%M").strip() + if ev.get('sender'): + # get display name from sending actor + if ev.get('sender'): + senderActor = ev['sender'] + dispName = \ + getDisplayName(baseDir, senderActor, + personCache) + if dispName: + senderName = \ + '' + \ + dispName + ': ' if ev.get('name'): eventDescription = ev['name'].strip() elif ev['type'] == 'Place': if ev.get('name'): eventPlace = ev['name'] + # prepend a link to the sender of the calendar item + if senderName and eventDescription: + # if the sender is also mentioned within the event + # description then this is a reminder + senderActor2 = senderActor.replace('/users/', '/@') + if senderActor not in eventDescription and \ + senderActor2 not in eventDescription: + eventDescription = senderName + eventDescription + else: + eventDescription = \ + translate['Reminder'] + ': ' + eventDescription + deleteButtonStr = '' if postId: deleteButtonStr = \ @@ -200,7 +226,7 @@ def _htmlCalendarDay(cssCache: {}, translate: {}, return calendarStr -def htmlCalendar(cssCache: {}, translate: {}, +def htmlCalendar(personCache: {}, cssCache: {}, translate: {}, baseDir: str, path: str, httpPrefix: str, domainFull: str, textModeBanner: str) -> str: @@ -259,7 +285,8 @@ def htmlCalendar(cssCache: {}, translate: {}, if events: if events.get(str(dayNumber)): dayEvents = events[str(dayNumber)] - return _htmlCalendarDay(cssCache, translate, baseDir, path, + return _htmlCalendarDay(personCache, cssCache, + translate, baseDir, path, year, monthNumber, dayNumber, nickname, domain, dayEvents, monthName, actor) diff --git a/webapp_profile.py b/webapp_profile.py index b5398be0d..272719eb5 100644 --- a/webapp_profile.py +++ b/webapp_profile.py @@ -1757,7 +1757,7 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str, # danger zone section editProfileForm += '
' + \ - translate['Danger Zone'] + '\n' + translate['Danger Zone'] + '\n' editProfileForm += '
\n' editProfileForm += '
\n'