diff --git a/osinaweb/celerybeat-schedule.db b/osinaweb/celerybeat-schedule.db index d8b202fb..bbc70af0 100644 Binary files a/osinaweb/celerybeat-schedule.db and b/osinaweb/celerybeat-schedule.db differ diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 2ffb026a..52d16ef9 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osinacore/__pycache__/tasks.cpython-310.pyc b/osinaweb/osinacore/__pycache__/tasks.cpython-310.pyc index 2e724132..1ea7ddec 100644 Binary files a/osinaweb/osinacore/__pycache__/tasks.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/tasks.cpython-310.pyc differ diff --git a/osinaweb/osinacore/tasks.py b/osinaweb/osinacore/tasks.py index 3d0892cd..3eb23f38 100644 --- a/osinaweb/osinacore/tasks.py +++ b/osinaweb/osinacore/tasks.py @@ -2,20 +2,23 @@ from celery import shared_task from osinacore.models import * from django.db.models import Q +from datetime import datetime, timedelta +import pytz @shared_task def set_offline(): all_staff_profiles = StaffProfile.objects.all() for staff_profile in all_staff_profiles: - last_working_point_activity = PointActivity.objects.filter( - point__status='Working On', + last_point_activity = PointActivity.objects.filter( point__task__assigned_to=staff_profile ).last() - if last_working_point_activity and last_working_point_activity.end_time: - if last_working_point_activity.end_time <= datetime.now() - timedelta(minutes=10): + if last_point_activity and last_point_activity.end_time: + beirut_timezone = pytz.timezone('Asia/Beirut') + current_time = datetime.now(beirut_timezone) + if current_time - last_point_activity.end_time > timedelta(minutes=10): user = staff_profile.user last_connection = Connection.objects.filter(user=user).order_by('-date').first() - if last_connection.status != 'Offline': + if last_connection and last_connection.status != 'Offline': Connection.objects.create( status='Offline', date=datetime.now(), @@ -26,4 +29,4 @@ def set_offline(): date=datetime.now().date(), time=datetime.now().strftime('%I:%M %p'), staff=staff_profile - ) \ No newline at end of file + )