diff --git a/app/cleanup_events.py b/app/cleanup_events.py new file mode 100644 index 0000000..69feb19 --- /dev/null +++ b/app/cleanup_events.py @@ -0,0 +1,16 @@ +from datetime import datetime, timedelta + +def cleanupEvents(db, Event): + # calculate the date one month ago + one_month_ago = datetime.now() - timedelta(days=30) + + # get events older than one month + old_events = db.session.query(Event).filter( + db.func.STR_TO_DATE(Event.scheduled_date, '%m-%d-%Y') < one_month_ago.date() + ).all() + + # delete old events + for event in old_events: + db.session.delete(event) + + db.session.commit() \ No newline at end of file diff --git a/app/worker.py b/app/worker.py index f9c54b0..6e1e617 100644 --- a/app/worker.py +++ b/app/worker.py @@ -1,6 +1,7 @@ from celery import Celery from celery.schedules import crontab from create_events import createEvents +from cleanup_events import cleanupEvents import os from flask import Flask from misc import currDay, datetime, time, timedelta @@ -32,11 +33,20 @@ def runCreateEvents(): with app.app_context(): createEvents(db, currDay, Period, Event) +def runCleanupEvents(): + with app.app_context(): + cleanupEvents(db, Event) + # Scheduled tasks celerymsg.conf.beat_schedule = { 'hourly-createevents': { 'task': 'worker.runCreateEvents', # Run hourly 'schedule': crontab(hour="*", minute="59"), + }, + 'monthly-cleanupevents': { + 'task': 'worker.runCleanupEvents', + # Run monthly + 'schedule': crontab(day_of_month="29") } } \ No newline at end of file