From 56b101a6fc8e52a0e27880e74e0410cf3c6d1694 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 23 Feb 2020 13:28:27 +0000 Subject: [PATCH] Function to remove calendar event --- daemon.py | 18 ++++++++++++++++++ happening.py | 23 +++++++++++++++++++++++ webinterface.py | 3 +++ 3 files changed, 44 insertions(+) diff --git a/daemon.py b/daemon.py index 43f485c26..f1090a1db 100644 --- a/daemon.py +++ b/daemon.py @@ -175,6 +175,7 @@ from schedule import runPostSchedule from schedule import runPostScheduleWatchdog from schedule import removeScheduledPosts from outbox import postMessageToOutbox +from happening import removeCalendarEvent import os import sys @@ -4792,6 +4793,16 @@ class PubServer(BaseHTTPRequestHandler): pageNumberStr=pageNumberStr.split('&')[0] if pageNumberStr.isdigit(): pageNumber=int(pageNumberStr) + yearStr=None + if 'year=' in removePostConfirmParams: + yearStr=removePostConfirmParams.split('year=')[1] + if '&' in yearStr: + yearStr=yearStr.split('&')[0] + monthStr=None + if 'month=' in removePostConfirmParams: + monthStr=removePostConfirmParams.split('month=')[1] + if '&' in monthStr: + monthStr=monthStr.split('&')[0] if '/statuses/' in removeMessageId: removePostActor=removeMessageId.split('/statuses/')[0] if originPathStr in removePostActor: @@ -4805,6 +4816,13 @@ class PubServer(BaseHTTPRequestHandler): } self.postToNickname=getNicknameFromActor(removePostActor) if self.postToNickname: + if monthStr and yearStr: + if monthStr.isdigit() and yearStr.isdigit(): + removeCalendarEvent(self.server.baseDir, \ + self.postToNickname, \ + self.server.domain, \ + int(yearStr),int(monthStr), \ + removeMessageId) self._postToOutboxThread(deleteJson) if pageNumber==1: self._redirect_headers(originPathStr+'/outbox',cookie) diff --git a/happening.py b/happening.py index eb967fbd1..f09412953 100644 --- a/happening.py +++ b/happening.py @@ -369,3 +369,26 @@ def getCalendarEvents(baseDir: str,nickname: str,domain: str, \ calendarFile.close() return events + +def removeCalendarEvent(baseDir: str,nickname: str,domain: str, \ + year: int,monthNumber: int,messageId: str) -> None: + """Removes a calendar event + """ + calendarFilename= \ + baseDir+'/accounts/'+nickname+'@'+domain+ \ + '/calendar/'+str(year)+'/'+str(monthNumber)+'.txt' + if not os.path.isfile(calendarFilename): + return + if '/' in messageId: + messageId=messageId.replace('/','#') + if messageId not in open(calendarFilename).read(): + return + lines=None + with open(calendarFilename, "r") as f: + lines = f.readlines() + if not lines: + return + with open(calendarFilename, "w+") as f: + for line in lines: + if messageId not in line: + f.write(line) diff --git a/webinterface.py b/webinterface.py index 15e135854..5428b0627 100644 --- a/webinterface.py +++ b/webinterface.py @@ -3400,6 +3400,9 @@ def htmlCalendarDeleteConfirm(translate: {},baseDir: str, \ deletePostStr+='
' deletePostStr+='

'+translate['Delete this event']+'

' deletePostStr+='
' + deletePostStr+=' ' + deletePostStr+=' ' + deletePostStr+=' ' deletePostStr+=' ' deletePostStr+=' ' deletePostStr+=' '