diff options
Diffstat (limited to 'src/dashboard')
-rw-r--r-- | src/dashboard/tasks.py | 20 |
1 files changed, 18 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() |