emile 1 year ago
parent f6cd02ed01
commit 508b793f50

Binary file not shown.

@ -4,7 +4,7 @@ from colorfield.fields import ColorField
from datetime import datetime from datetime import datetime
from django.db.models import Max from django.db.models import Max
from django.utils import timezone from django.utils import timezone
from django.db.models import Sum from django.db.models import Sum, F
from datetime import timedelta from datetime import timedelta
@ -267,7 +267,13 @@ class Point(models.Model):
ongoing_total_time_timedelta += current_time_aware - start_time_aware ongoing_total_time_timedelta += current_time_aware - start_time_aware
# Calculate the total time for completed activities # Calculate the total time for completed activities
completed_total_time_timedelta = self.pointactivity_set.filter(end_time__isnull=False).aggregate(total_time=Sum(models.F('end_time') - models.F('start_time')))['total_time'] completed_total_time_timedelta = self.pointactivity_set.filter(end_time__isnull=False).aggregate(
total_time=Sum(F('end_time') - F('start_time'))
)['total_time']
# Handle the case when there are no ongoing or completed activities
if not ongoing_activities.exists() and completed_total_time_timedelta is None:
return 0, 0, 0
# Add the total times together # Add the total times together
total_time_timedelta = ongoing_total_time_timedelta + (completed_total_time_timedelta or timedelta()) total_time_timedelta = ongoing_total_time_timedelta + (completed_total_time_timedelta or timedelta())

@ -1874,6 +1874,8 @@ def mark_point_paused(request, point_id, task_id):
from datetime import datetime
@login_required @login_required
def mark_point_completed(request, point_id, task_id): def mark_point_completed(request, point_id, task_id):
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
@ -1881,22 +1883,31 @@ def mark_point_completed(request, point_id, task_id):
point.status = 'Completed' point.status = 'Completed'
current_datetime = datetime.now() current_datetime = datetime.now()
point.save() point.save()
last_activity = PointActivity.objects.filter(point=point).last() last_activity = PointActivity.objects.filter(point=point).last()
last_activity.end_time = datetime.now() if last_activity:
last_activity.save() last_activity.end_time = datetime.now()
last_activity.save()
total_time = point.total_time()
formatted_time = ""
if total_time[0] > 0:
formatted_time += f"{total_time[0]}{'hr' if total_time[0] == 1 else 'hrs'}"
if total_time[1] > 0:
formatted_time += f" {total_time[1]}{'min' if total_time[1] == 1 else 'mins'}"
if total_time[2] > 0:
formatted_time += f" {total_time[2]}{'sec' if total_time[2] == 1 else 'secs'}"
status_text = f'{point.text} - Completed' status_text = f'{point.text} - Completed'
if formatted_time:
status_text += f' in {formatted_time}'
status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile) status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile)
status.save() status.save()
task_id_str = task.task_id task_id_str = task.task_id
showpoints_url = reverse('showpoints', args=[task_id_str]) showpoints_url = reverse('showpoints', args=[task_id_str])
return HttpResponseRedirect(showpoints_url) return HttpResponseRedirect(showpoints_url)

@ -16,7 +16,7 @@
<body> <body>
<div id="hiddenContent"> <div id="hiddenContent">
<h1 class="text-slate-800 text-2xl font-semibold text-center mb-1">Points</h1> <h1 class="text-slate-800 text-2xl font-semibold text-center mb-4">Points</h1>
<div class="flex flex-col gap-5"> <div class="flex flex-col gap-5">
{% for point in points %} {% for point in points %}
@ -61,7 +61,7 @@
</a> </a>
{% endif %} {% endif %}
{% if not point.status == 'Completed' and not point.status == 'Paused' %} {% if not point.status == 'Completed' and not point.status == 'Paused' %}
<a href="{% url 'mark_point_completed' point.id task.id %}"> <a href="{% url 'mark_point_completed' point.id task.id %}">
<button <button
class="w-[40px] h-[40px] rounded-full bg-transparent shadow-md text-white border border-white flex justify-center items-center hover:scale-105 transition-transform duration-300"> class="w-[40px] h-[40px] rounded-full bg-transparent shadow-md text-white border border-white flex justify-center items-center hover:scale-105 transition-transform duration-300">

@ -32,7 +32,11 @@
<!-- Status --> <!-- Status -->
<div class="w-full"> <div class="w-full">
<p class="text-sm text-gray-500">{{latest.status.text}}</p> {% if "Completed" in latest.status.text %}
<p class="text-sm text-green-700">{{latest.status.text}}</p>
{% else %}
<p class="text-sm text-grey-500">{{latest.status.text}}</p>
{% endif %}
</div> </div>
<!-- Add comment section --> <!-- Add comment section -->

@ -30,6 +30,7 @@
<!-- Status --> <!-- Status -->
<div class="w-full"> <div class="w-full">
<p class="text-sm text-gray-500">{{latest.status.text}}</p> <p class="text-sm text-gray-500">{{latest.status.text}}</p>
</div> </div>

Loading…
Cancel
Save