@ -2,6 +2,7 @@ from .models import Task, Status
from django . contrib . auth . models import AnonymousUser
from datetime import datetime , timedelta
def utilities ( request ) :
minutes_ago = 0
if request . user . is_authenticated and request . user . is_superuser :
@ -9,34 +10,46 @@ def utilities(request):
working_on_task_count = Task . objects . filter ( status = ' Working On ' ) . count ( )
last_status = Status . objects . filter ( staff = request . user . staffprofile ) . last ( )
if last_status :
# Convert the 'time' field to a datetime object
status_time = datetime . strptime ( last_status . time , ' % I: % M % p ' )
# Convert the 'time' field to a datetime object
status_time = datetime . strptime ( last_status . time , ' % I: % M % p ' )
# Get the current time
current_time = datetime . now ( ) . time ( )
# Get the current time
current_time = datetime . now ( ) . time ( )
# Calculate the time difference
time_difference = abs ( datetime . combine ( datetime . today ( ) , current_time ) - datetime . combine ( datetime . today ( ) , status_time . time ( ) ) )
# Get the time difference in minutes
minutes_ago = time_difference . total_seconds ( ) / 60
minutes_ago = int ( minutes_ago )
# Calculate the time difference
time_difference = abs ( datetime . combine ( datetime . today ( ) , current_time ) - datetime . combine ( datetime . today ( ) , status_time . time ( ) ) )
# Get the time difference in minutes
minutes_ago = time_difference . total_seconds ( ) / 60
minutes_ago = int ( minutes_ago )
# Check if it's 60 minutes or more
if minutes_ago > = 60 :
# Calculate the time difference in hours
hours_ago = minutes_ago / / 60
return f ' { hours_ago } hour { " s " if hours_ago > 1 else " " } ago '
elif request . user . is_authenticated :
open_task_count = Task . objects . filter ( assigned_to = request . user . staffprofile , status = ' Open ' ) . count ( )
working_on_task_count = Task . objects . filter ( assigned_to = request . user . staffprofile , status = ' Working On ' ) . count ( )
last_status = Status . objects . filter ( staff = request . user . staffprofile ) . last ( )
if last_status :
# Convert the 'time' field to a datetime object
status_time = datetime . strptime ( last_status . time , ' % I: % M % p ' )
# Convert the 'time' field to a datetime object
status_time = datetime . strptime ( last_status . time , ' % I: % M % p ' )
# Get the current time
current_time = datetime . now ( ) . time ( )
# Get the current time
current_time = datetime . now ( ) . time ( )
# Calculate the time difference
time_difference = abs ( datetime . combine ( datetime . today ( ) , current_time ) - datetime . combine ( datetime . today ( ) , status_time . time ( ) ) )
# Get the time difference in minutes
minutes_ago = time_difference . total_seconds ( ) / 60
minutes_ago = int ( minutes_ago )
# Calculate the time difference
time_difference = abs ( datetime . combine ( datetime . today ( ) , current_time ) - datetime . combine ( datetime . today ( ) , status_time . time ( ) ) )
# Get the time difference in minute s
minutes_ago = time_difference . total_seconds ( ) / 60
minutes_ago = int ( minutes_ago )
# Check if it's 60 minutes or mor e
if minutes_ago > = 60 :
# Calculate the time difference in hour s
hours_ago = minutes_ago / / 60
return f ' { hours_ago } hour { " s " if hours_ago > 1 else " " } ago '
else :
# Handle the case when the user is not logged in
open_task_count = 0
@ -45,5 +58,6 @@ def utilities(request):
total_tasks = open_task_count + working_on_task_count
latest_statuses = Status . objects . all ( ) . order_by ( ' -id ' ) [ : 12 ]
current_date = datetime . now ( ) . strftime ( ' % Y- % m- %d ' )
return { ' total_tasks ' : total_tasks , ' last_status ' : last_status , ' latest_statuses ' : latest_statuses , ' minutes_ago ' : minutes_ago , }
return { ' total_tasks ' : total_tasks , ' last_status ' : last_status , ' latest_statuses ' : latest_statuses , ' minutes_ago ' : minutes_ago , ' current_date ' : current_date , }