diff --git a/pms/scheduler.py b/pms/scheduler.py index edd0504e5..26988dbab 100644 --- a/pms/scheduler.py +++ b/pms/scheduler.py @@ -1,47 +1,44 @@ from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger -from datetime import datetime +from datetime import datetime, timedelta from notifications.signals import notify def cyclic_feedback_creation(): from pms.models import Feedback - - try: - feedbacks = Feedback.objects.filter( - cyclic_next_start_date=datetime.today().date() - ) - for feedback in feedbacks: - if feedback.cyclic_feedback: - feedback_obj = Feedback() - for field in feedback._meta.fields: - if field.name not in [ - "id", - "cyclic_next_start_date", - "cyclic_next_end_date", - ]: - setattr(feedback_obj, field.name, getattr(feedback, field.name)) - title = ( - f"{feedback_obj.review_cycle.split('- cyclic')[0]} - cyclic {feedback_obj.start_date}" - if "- cyclic" in feedback_obj.review_cycle - else f"{feedback_obj.review_cycle} - cyclic {feedback_obj.start_date}" - ) - feedback_obj.review_cycle = title - feedback_obj.status = "Not Started" - feedback_obj.start_date = feedback.cyclic_next_start_date - feedback_obj.end_date = feedback.cyclic_next_end_date - feedback_obj.save() - - feedback.cyclic_feedback = False - feedback.save() - return feedback_obj + feedbacks = Feedback.objects.filter( + cyclic_next_start_date=datetime.today().date() + ) + for feedback in feedbacks: + if feedback.cyclic_feedback: + feedback_obj = Feedback() + for field in feedback._meta.fields: + if field.name not in [ + "id", + "cyclic_next_start_date", + "cyclic_next_end_date", + ]: + setattr(feedback_obj, field.name, getattr(feedback, field.name)) + title = ( + f"{feedback_obj.review_cycle.split('- cyclic')[0]} - cyclic {feedback_obj.start_date}" + if "- cyclic" in feedback_obj.review_cycle + else f"{feedback_obj.review_cycle} - cyclic {feedback_obj.start_date}" + ) + feedback_obj.review_cycle = title + feedback_obj.status = "Not Started" + feedback_obj.start_date = feedback.cyclic_next_start_date + feedback_obj.end_date = feedback.cyclic_next_end_date + feedback_obj.save() - except Exception as e: - print(e) + feedback.cyclic_feedback = False + feedback.save() + return scheduler = BackgroundScheduler() cron_trigger = CronTrigger(hour=8) -scheduler.add_job(cyclic_feedback_creation, cron_trigger) +grace_time_seconds = int(timedelta(days=1).total_seconds()) +scheduler.add_job(cyclic_feedback_creation, cron_trigger, misfire_grace_time=grace_time_seconds) + scheduler.start()