diff --git a/account/views.py b/account/views.py index 91ff650..c95aa7e 100644 --- a/account/views.py +++ b/account/views.py @@ -22,7 +22,7 @@ from django.conf import settings """App Import""" from guardian.models import Guardian from junior.models import Junior -from guardian.utils import upload_image_to_alibaba, OTP_EXPIRY +from guardian.utils import upload_image_to_alibaba from account.models import UserDeviceDetails, UserPhoneOtp, UserEmailOtp, DefaultTaskImages, UserNotification from django.contrib.auth.models import User """Account serializer""" @@ -36,7 +36,7 @@ from base.messages import ERROR_CODE, SUCCESS_CODE from base.constants import NUMBER, ZOD, JUN, GRD from guardian.tasks import generate_otp from account.utils import (send_otp_email, send_support_email, custom_response, custom_error_response, - generate_code) + generate_code, OTP_EXPIRY) from junior.serializers import JuniorProfileSerializer from guardian.serializers import GuardianProfileSerializer diff --git a/celerybeat-schedule b/celerybeat-schedule index cd2e03e..816eeeb 100644 Binary files a/celerybeat-schedule and b/celerybeat-schedule differ diff --git a/guardian/utils.py b/guardian/utils.py index adb7f87..b1d5eda 100644 --- a/guardian/utils.py +++ b/guardian/utils.py @@ -5,6 +5,7 @@ import oss2 from django.conf import settings import logging import requests +from django.core.exceptions import ObjectDoesNotExist """Import tempfile""" import tempfile # Import date time module's function @@ -13,7 +14,10 @@ from datetime import datetime, time from base.constants import NUMBER, time_url # Import Junior's model from junior.models import Junior, JuniorPoints - +# Import guardian's model +from .models import JuniorTask +# Import app from celery +from zod_bank.celery import app # Define upload image on # ali baba cloud # firstly save image @@ -81,3 +85,16 @@ def update_referral_points(referral_code, referral_code_used): junior_query.total_points = junior_query.total_points + NUMBER['five'] junior_query.referral_points = junior_query.referral_points + NUMBER['five'] junior_query.save() + + +@app.task +def update_expired_task_status(data=None): + """ + Update task of the status if due date is in past + """ + try: + task_status = [str(NUMBER['one']), str(NUMBER['two'])] + JuniorTask.objects.filter(due_date__lt=datetime.today().date(), + task_status__in=task_status).update(task_status=str(NUMBER['six'])) + except ObjectDoesNotExist as e: + logging.error(str(e)) diff --git a/junior/views.py b/junior/views.py index 7f3452a..4ccca91 100644 --- a/junior/views.py +++ b/junior/views.py @@ -5,6 +5,7 @@ from rest_framework import viewsets, status, generics,views from rest_framework.permissions import IsAuthenticated from rest_framework.pagination import PageNumberPagination from django.contrib.auth.models import User +import datetime import requests """Django app import""" diff --git a/zod_bank/celery.py b/zod_bank/celery.py index 177c318..5cc2829 100644 --- a/zod_bank/celery.py +++ b/zod_bank/celery.py @@ -32,3 +32,14 @@ app.autodiscover_tasks() def debug_task(self): """ celery debug task """ print(f'Request: {self.request!r}') + + +"""cron task""" + + +app.conf.beat_schedule = { + "expired_task": { + "task": "guardian.utils.update_expired_task_status", + "schedule": crontab(minute=0, hour=0), + }, +} diff --git a/zod_bank/settings.py b/zod_bank/settings.py index 5415f14..3781f89 100644 --- a/zod_bank/settings.py +++ b/zod_bank/settings.py @@ -61,6 +61,7 @@ INSTALLED_APPS = [ 'django.contrib.postgres', 'rest_framework', 'fcm_django', + 'django_celery_beat', # Add your custom apps here. 'django_ses', 'account',