aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dashboard/tasks.py20
-rw-r--r--src/pharos_dashboard/settings.py7
2 files changed, 25 insertions, 2 deletions
diff --git a/src/dashboard/tasks.py b/src/dashboard/tasks.py
index aab3345..fa2ee9d 100644
--- a/src/dashboard/tasks.py
+++ b/src/dashboard/tasks.py
@@ -7,16 +7,32 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
from datetime import timedelta
from celery import shared_task
from django.utils import timezone
+from django.conf import settings
+from booking.models import Booking
from jenkins.models import JenkinsStatistic
-
@shared_task
def database_cleanup():
now = timezone.now()
JenkinsStatistic.objects.filter(timestamp__lt=now - timedelta(weeks=4)).delete()
+
+def booking_cleanup():
+ expire_time = timedelta(days=int(settings.BOOKING_EXP_TIME))
+ expire_number = int(settings.BOOKING_MAX_NUM)
+ expired_set = Booking.objects.filter(end__lte=timezone.now())
+ expired_count = len(expired_set)
+
+ for booking in expired_set:
+ if timezone.now() - booking.end > expire_time:
+ booking.delete()
+ expired_count = expired_count - 1
+
+ if expired_count > expire_number:
+ oldest = expired_set.order_by("end")[:expired_count-expire_number]
+ for booking in oldest:
+ booking.delete()
diff --git a/src/pharos_dashboard/settings.py b/src/pharos_dashboard/settings.py
index 0ac5479..07e3920 100644
--- a/src/pharos_dashboard/settings.py
+++ b/src/pharos_dashboard/settings.py
@@ -170,6 +170,9 @@ RABBITMQ_PASSWORD = os.environ['RABBITMQ_PASSWORD']
BROKER_URL = 'amqp://' + RABBITMQ_USER + ':' + RABBITMQ_PASSWORD + '@rabbitmq:5672//'
+BOOKING_EXP_TIME = os,environ['BOOKING_EXPIRE_TIME']
+BOOKING_MAX_NUM = os.environ['BOOKING_MAXIMUM_NUMBER']
+
CELERYBEAT_SCHEDULE = {
'sync-jenkins': {
'task': 'jenkins.tasks.sync_jenkins',
@@ -183,6 +186,10 @@ CELERYBEAT_SCHEDULE = {
'task': 'dashboard.tasks.database_cleanup',
'schedule': timedelta(hours=24)
},
+ 'booking_cleanup': {
+ 'task': 'dashboard.tasks.booking_cleanup',
+ 'schedule': timedelta(hours=24)
+ },
}
# Jenkins Settings
ALL_SLAVES_URL = os.environ['JENKINS_URL'] + '/computer/api/json?tree=computer[displayName,offline,idle]'