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 django.db.models import Max
from django.utils import timezone
from django.db.models import Sum
from django.db.models import Sum, F
from datetime import timedelta
@ -267,7 +267,13 @@ class Point(models.Model):
ongoing_total_time_timedelta += current_time_aware - start_time_aware
# 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
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
def mark_point_completed(request, point_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'
current_datetime = datetime.now()
point.save()
last_activity = PointActivity.objects.filter(point=point).last()
last_activity.end_time = datetime.now()
last_activity.save()
if last_activity:
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'
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.save()
task_id_str = task.task_id
showpoints_url = reverse('showpoints', args=[task_id_str])
return HttpResponseRedirect(showpoints_url)

@ -16,7 +16,7 @@
<body>
<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">
{% for point in points %}
@ -61,7 +61,7 @@
</a>
{% 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 %}">
<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">

@ -32,7 +32,11 @@
<!-- Status -->
<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>
<!-- Add comment section -->

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

Loading…
Cancel
Save