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: open_task_count = Task.objects.filter(status='Open').count() 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') # 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) 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') # 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) else: # Handle the case when the user is not logged in open_task_count = 0 working_on_task_count = 0 last_status = None 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, 'current_date' : current_date, }