Function to remove calendar event

main
Bob Mottram 2020-02-23 13:28:27 +00:00
parent 13afcca48f
commit 56b101a6fc
3 changed files with 44 additions and 0 deletions

View File

@ -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)

View File

@ -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)

View File

@ -3400,6 +3400,9 @@ def htmlCalendarDeleteConfirm(translate: {},baseDir: str, \
deletePostStr+='<center>'
deletePostStr+=' <p class="followText">'+translate['Delete this event']+'</p>'
deletePostStr+=' <form method="POST" action="'+actor+'/rmpost">'
deletePostStr+=' <input type="hidden" name="year" value="'+str(year)+'">'
deletePostStr+=' <input type="hidden" name="month" value="'+str(monthNumber)+'">'
deletePostStr+=' <input type="hidden" name="day" value="'+str(dayNumber)+'">'
deletePostStr+=' <input type="hidden" name="pageNumber" value="1">'
deletePostStr+=' <input type="hidden" name="messageId" value="'+messageId+'">'
deletePostStr+=' <button type="submit" class="button" name="submitYes">'+translate['Yes']+'</button>'