mirror of https://gitlab.com/bashrc2/epicyon
Separate event creation function
parent
8735567751
commit
37b86507c5
54
happening.py
54
happening.py
|
@ -15,6 +15,60 @@ from utils import daysInMonth
|
|||
from utils import mergeDicts
|
||||
|
||||
|
||||
def saveEvent(baseDir: str, handle: str, postId: str,
|
||||
eventJson: {}) -> bool:
|
||||
"""Saves an event to the calendar
|
||||
"""
|
||||
calendarPath = baseDir + '/accounts/' + handle + '/calendar'
|
||||
if not os.path.isdir(calendarPath):
|
||||
os.mkdir(calendarPath)
|
||||
|
||||
# get the year, month and day from the event
|
||||
eventTime = datetime.strptime(eventJson['startTime'],
|
||||
"%Y-%m-%dT%H:%M:%S%z")
|
||||
eventYear = int(eventTime.strftime("%Y"))
|
||||
eventMonthNumber = int(eventTime.strftime("%m"))
|
||||
eventDayOfMonth = int(eventTime.strftime("%d"))
|
||||
|
||||
# create a directory for the calendar year
|
||||
if not os.path.isdir(calendarPath + '/' + str(eventYear)):
|
||||
os.mkdir(calendarPath + '/' + str(eventYear))
|
||||
|
||||
# calendar month file containing event post Ids
|
||||
calendarFilename = calendarPath + '/' + str(eventYear) + \
|
||||
'/' + str(eventMonthNumber) + '.txt'
|
||||
|
||||
# Does this event post already exist within the calendar month?
|
||||
if os.path.isfile(calendarFilename):
|
||||
if postId in open(calendarFilename).read():
|
||||
# Event post already exists
|
||||
return False
|
||||
|
||||
# append the post Id to the file for the calendar month
|
||||
calendarFile = open(calendarFilename, 'a+')
|
||||
if not calendarFile:
|
||||
return False
|
||||
calendarFile.write(postId + '\n')
|
||||
calendarFile.close()
|
||||
|
||||
# create a file which will trigger a notification that
|
||||
# a new event has been added
|
||||
calendarNotificationFilename = \
|
||||
baseDir + '/accounts/' + handle + '/.newCalendar'
|
||||
calendarNotificationFile = \
|
||||
open(calendarNotificationFilename, 'w+')
|
||||
if not calendarNotificationFile:
|
||||
return False
|
||||
calendarNotificationFile.write('/calendar?year=' +
|
||||
str(eventYear) +
|
||||
'?month=' +
|
||||
str(eventMonthNumber) +
|
||||
'?day=' +
|
||||
str(eventDayOfMonth))
|
||||
calendarNotificationFile.close()
|
||||
return True
|
||||
|
||||
|
||||
def isHappeningEvent(tag: {}) -> bool:
|
||||
"""Is this tag an Event or Place ActivityStreams type?
|
||||
"""
|
||||
|
|
53
inbox.py
53
inbox.py
|
@ -64,6 +64,7 @@ from git import isGitPatch
|
|||
from git import receiveGitPatch
|
||||
from followingCalendar import receivingCalendarEvents
|
||||
from content import dangerousMarkup
|
||||
from happening import saveEvent
|
||||
|
||||
|
||||
def storeHashTags(baseDir: str, nickname: str, postJsonObject: {}) -> None:
|
||||
|
@ -1957,10 +1958,6 @@ def inboxUpdateCalendar(baseDir: str, handle: str, postJsonObject: {}) -> None:
|
|||
if not isinstance(postJsonObject['object']['tag'], list):
|
||||
return
|
||||
|
||||
calendarPath = baseDir + '/accounts/' + handle + '/calendar'
|
||||
if not os.path.isdir(calendarPath):
|
||||
os.mkdir(calendarPath)
|
||||
|
||||
actor = postJsonObject['actor']
|
||||
actorNickname = getNicknameFromActor(actor)
|
||||
actorDomain, actorPort = getDomainFromActor(actor)
|
||||
|
@ -1971,6 +1968,9 @@ def inboxUpdateCalendar(baseDir: str, handle: str, postJsonObject: {}) -> None:
|
|||
actorNickname, actorDomain):
|
||||
return
|
||||
|
||||
postId = \
|
||||
postJsonObject['id'].replace('/activity', '').replace('/', '#')
|
||||
|
||||
# look for events within the tags list
|
||||
for tagDict in postJsonObject['object']['tag']:
|
||||
if not tagDict.get('type'):
|
||||
|
@ -1979,50 +1979,7 @@ def inboxUpdateCalendar(baseDir: str, handle: str, postJsonObject: {}) -> None:
|
|||
continue
|
||||
if not tagDict.get('startTime'):
|
||||
continue
|
||||
|
||||
# get the year, month and day from the event
|
||||
eventTime = datetime.datetime.strptime(tagDict['startTime'],
|
||||
"%Y-%m-%dT%H:%M:%S%z")
|
||||
eventYear = int(eventTime.strftime("%Y"))
|
||||
eventMonthNumber = int(eventTime.strftime("%m"))
|
||||
eventDayOfMonth = int(eventTime.strftime("%d"))
|
||||
|
||||
# create a directory for the calendar year
|
||||
if not os.path.isdir(calendarPath + '/' + str(eventYear)):
|
||||
os.mkdir(calendarPath + '/' + str(eventYear))
|
||||
|
||||
# calendar month file containing event post Ids
|
||||
calendarFilename = calendarPath + '/' + str(eventYear) + \
|
||||
'/' + str(eventMonthNumber) + '.txt'
|
||||
postId = \
|
||||
postJsonObject['id'].replace('/activity', '').replace('/', '#')
|
||||
|
||||
# Does this event post already exist within the calendar month?
|
||||
if os.path.isfile(calendarFilename):
|
||||
if postId in open(calendarFilename).read():
|
||||
# Event post already exists
|
||||
return
|
||||
|
||||
# append the post Id to the file for the calendar month
|
||||
calendarFile = open(calendarFilename, 'a+')
|
||||
if calendarFile:
|
||||
calendarFile.write(postId + '\n')
|
||||
calendarFile.close()
|
||||
|
||||
# create a file which will trigger a notification that
|
||||
# a new event has been added
|
||||
calendarNotificationFilename = \
|
||||
baseDir + '/accounts/' + handle + '/.newCalendar'
|
||||
calendarNotificationFile = \
|
||||
open(calendarNotificationFilename, 'w+')
|
||||
if calendarNotificationFile:
|
||||
calendarNotificationFile.write('/calendar?year=' +
|
||||
str(eventYear) +
|
||||
'?month=' +
|
||||
str(eventMonthNumber) +
|
||||
'?day=' +
|
||||
str(eventDayOfMonth))
|
||||
calendarNotificationFile.close()
|
||||
saveEvent(baseDir, handle, postId, tagDict)
|
||||
|
||||
|
||||
def inboxUpdateIndex(boxname: str, baseDir: str, handle: str,
|
||||
|
|
Loading…
Reference in New Issue