From 1cc23d56b907b9538dc777e44afe92fa7c44c14a Mon Sep 17 00:00:00 2001 From: emile Date: Wed, 31 Jan 2024 20:24:35 +0200 Subject: [PATCH] sss --- osinaweb/db.sqlite3 | Bin 651264 -> 659456 bytes .../__pycache__/admin.cpython-310.pyc | Bin 1383 -> 1412 bytes .../__pycache__/models.cpython-310.pyc | Bin 10164 -> 10754 bytes .../__pycache__/views.cpython-310.pyc | Bin 33360 -> 34062 bytes osinaweb/osinacore/admin.py | 1 + ...54_remove_point_date_completed_and_more.py | 29 ++ .../migrations/0055_alter_point_status.py | 18 ++ .../0056_alter_pointactivity_end_time.py | 18 ++ ...hours_point_total_time_minutes_and_more.py | 28 ++ ..._remove_point_total_time_hours_and_more.py | 25 ++ ...nt_date_completed_and_more.cpython-310.pyc | Bin 0 -> 704 bytes .../0055_alter_point_status.cpython-310.pyc | Bin 0 -> 763 bytes ...ter_pointactivity_end_time.cpython-310.pyc | Bin 0 -> 668 bytes ...otal_time_minutes_and_more.cpython-310.pyc | Bin 0 -> 805 bytes ..._total_time_hours_and_more.cpython-310.pyc | Bin 0 -> 723 bytes osinaweb/osinacore/models.py | 35 ++- osinaweb/osinacore/views.py | 253 +++++++++++------- .../osinaweb/__pycache__/urls.cpython-310.pyc | Bin 8087 -> 8180 bytes osinaweb/osinaweb/urls.py | 1 + .../popup_modals/showpoints-modal.html | 126 ++++----- 20 files changed, 356 insertions(+), 178 deletions(-) create mode 100644 osinaweb/osinacore/migrations/0054_remove_point_date_completed_and_more.py create mode 100644 osinaweb/osinacore/migrations/0055_alter_point_status.py create mode 100644 osinaweb/osinacore/migrations/0056_alter_pointactivity_end_time.py create mode 100644 osinaweb/osinacore/migrations/0057_point_total_time_hours_point_total_time_minutes_and_more.py create mode 100644 osinaweb/osinacore/migrations/0058_remove_point_total_time_hours_and_more.py create mode 100644 osinaweb/osinacore/migrations/__pycache__/0054_remove_point_date_completed_and_more.cpython-310.pyc create mode 100644 osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-310.pyc create mode 100644 osinaweb/osinacore/migrations/__pycache__/0056_alter_pointactivity_end_time.cpython-310.pyc create mode 100644 osinaweb/osinacore/migrations/__pycache__/0057_point_total_time_hours_point_total_time_minutes_and_more.cpython-310.pyc create mode 100644 osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 13f6eb9363938228144e8debe77309979bdfc5ca..453980079990922e476108dc2878c48b4a30638c 100644 GIT binary patch delta 8454 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 delta 1127 zcmZvZO>7%Q6vtaEAAky>0?)BhRMdHz z->%;K&wFp)oWA(*>00D`(BF9lA+!p6cYU@Tjf>#z%Wu7BUhKrds-Q>w>P@9X8Po#G zmhX=8fjZ{@_W{cqsoXNb2!BJ(JQW;GdbwTZur`j-0c5kP1ilDfV=c2c@j&*?c+VTl3;VL z+{S+0ki(1W3USpH{*RNMkT%g6qs4r6e#kv`LsT?(;vfEMtyR(H5Ydhz?Wp#(wyw=F zy(ZYqs0pp^QcajwB@{-XY&Oeo{UkhCM&EUG;)Z7?Kb_5(!@D;K#*O%)Xjw-4n&C{* zw5($0ZoCWP1HDG9H$Gs*hGK{H6Qj`1FbafsvK2GtWb@+sv-bV9bYBFc0vu|lHeQuc zIJCba$*3Iyu;#NRt2E}6^t(kP2P*=EnM)5<>%vEB8H&8(-veBrZNL|4060VaK#Njfinaoury6jAs=!gI z0FP52FiBg0k5ex&L1kb+^#FUQ1ni~)!8jxm%tg>*Q0QuSy3uP2y3UE*5ps}N zOgbV?io|NzdQ!(k?pdKC>JNux_VFz_=)OKIVlJCU9pMm$XPVArcW)aTG#+b=KRL=l z@*E0*V&^68jCp^}$WE4`*|2*Rv1S&xJ|eaSiRw!*>693PhNy2bQ4nEEZld71StU8C zbX}6a;e-td3=}IoTl<;t>}5$#2KI7Z5t`Y%L7n1zwl?S}&0+K9oOY9ex z$loN!rSa$Jg7!=`sh9aP(Td`(uF20yJVMe**L#Woopay6#*bn5g?ITj!dHxn${yO3 XNAW5fUm+oOZc`q4=Z4&Rxu*XMZpb8s diff --git a/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc b/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc index d8020d239c155229128534bbcfe7dd0b729ac339..5be37b1318c49341e7834ee414402114555a32f7 100644 GIT binary patch delta 82 zcmaFP)xyo2&&$ij00eeHyHa;gB%ZApZIU_ l2IObvl{hAsWR_)?R8CH07MZNY%Fn1X*@{)0g@;jq5det86?^~y delta 51 zcmZqSe$K_4&&$ij00eEpGg4vCF%zTIWCNB@lMPvw8MP*dvT8F4 GFaiKgU<^(G diff --git a/osinaweb/osinacore/__pycache__/models.cpython-310.pyc b/osinaweb/osinacore/__pycache__/models.cpython-310.pyc index 7787f23e097abbcdfdf02675d5d627d5d2735f9a..80579ed4e16b11f35792bcedbdfa50fafec2cd52 100644 GIT binary patch literal 10754 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 Gv;PZ8p2n;I literal 10164 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 literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9bfc1d692f18a462996251877de562ae94970de GIT binary patch literal 763 zcmYjP&2H2%5Vn)-HVLeRdf)&DdP2&j>7l(LR8#~P+9DN%l#AtNhTUu(JJ?xD51ioI zm*B=L@B}=Aube90pb{$Mq*ZIlqnU5U^Ye|(Y?d=RfA@dklZdfD!MJ-8GIr^@rzC&@ zSFGg~Z=)*W>@|Z3;_nP%y~0t`4rdCnaN- zuG=Potm43`2>6^=F(%7ND1g)D+MGf1gTn--uy!6pdLC0m3K^BleYSs7hl*y#HCooj zVpVKy?Q9E+t@(_iGmY*A$R0&)+D>7QAfyJ-QmCH{Za;Os>{qTxis*87VET={n@}4X zB{ctF>`9~N8;9Cv1LUV~<;o%0z+`CP_RT#)E`F1ESHym;UYMpvN3_Tna^LS z9__1;#l`{1_7-xqeQr9u-po&CACY$umtV{G4y`M(Z4{zX%^8+2(Vg_BE03gV+Ko4| z3&x>qdZMu$$SyUW4hk%#o|_Ro#p6*4t0-@OLP<;65i<04y_1pi&F;*G-!`S|)=8u+ zij%8k67h(y^W0t8o1NV#l!DJO)ARM86*iIz()mNy<&-a0?T-d1}1=;uVlk89S`H6L~a$nQ!K^yZJmPC|^GOgzuD)U%}az1f63%_Bkp=6g8xw z6>V6>C^;pHDSkr~2fF58dBs(7PKxw5){=txywR&cI^DI_Pnu4Fv2{r8%M_hsJa&N! zNJSN?n4&9MaY)u_0D#GQsuKLtTc#$r9CMkPB2eaM?{)|XH|wl!W!()>Jv}@;Iug=2 z7)0Oc)(PvR+t_LzJy|<_rQOzN&?@0{0~h#zx-_!A^hvuhrrp}-8E%oqHN(h z8fq=uRW}B&VL2Lsr}F-SN@VQCK4UwM#Ezmxza7GJnBcJwQDubjx=+p+qkqjiVz%x zY2O3`sKEj?MBpWEC}gWVUI4SzTx23Y$6|JVsm^ayi|gu=HicM(l1jgLd09&+Y+em(qTSF%m zfKqY|^&!~z&h+&$SF*eFg7-0aWubstagrz{ aHfiw+!sP8nXvL$6_v6@E8}HpAyYwHZ!{(g; literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8cdafdc16b38ff207c70a25a8e21b8c42a24561 GIT binary patch literal 723 zcmZWn&2H2%5Vjp>n+>gmip06%mP^wM0wF*>Ah=izMc1ax&^W~7AE5%$P)RVIE@+bh zU*@r}k?y;F7+qZ?Z-MrA;} zbF0DMbQ@(?BY4qTDNIbyQ)amRe=0U9jgz2-Z4CsT^zKH~x>DHmdFY&#{;1jtg-D4) zgi>H9xzd1mTZj*xw|lF);dU^@kVz@3nA>kSz95uPj1GL)`|HL+jGu#5kb`t_xL z>tXOU7^MNUR_9PZ1OI+>eSO?&W%gdSeKcNsHFnO_iLKhgSpss|+J&2(XK*@!$Yp)K z$QoIFD26o5O%^9|uQ=TA&xZ_$i@WxFs0zX|{)gv`GRl8*{_nT=nWB%XEX=1-_T_21 beez%5b3%8pU??6>6h5V~M|`Q<>~8iK!%x$% literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/models.py b/osinaweb/osinacore/models.py index 9072d3f5..709d149b 100644 --- a/osinaweb/osinacore/models.py +++ b/osinaweb/osinacore/models.py @@ -4,6 +4,8 @@ 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 datetime import timedelta # Create your models here. @@ -249,20 +251,43 @@ class Point(models.Model): STATUS_CHOICES = ( ('Not Completed', 'Not Completed'), ('Working On', 'Working On'), + ('Paused', 'Paused'), ('Completed', 'Completed') ) status = models.CharField(max_length=200, choices=STATUS_CHOICES, null=True) task = models.ForeignKey(Task, on_delete=models.CASCADE, null=True) - date_workingon = models.CharField(max_length=200, null=True, blank=True) - date_completed = models.CharField(max_length=200, null=True, blank=True) - time_workingon = models.CharField(max_length=200, null=True, blank=True) - time_completed = models.CharField(max_length=200, null=True, blank=True) + def total_time(self): + # Calculate the total time for ongoing activities + ongoing_total_time_timedelta = timedelta() + ongoing_activities = self.pointactivity_set.filter(end_time__isnull=True) + + for activity in ongoing_activities: + start_time_aware = activity.start_time + current_time_aware = timezone.now() + 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'] + + # Add the total times together + total_time_timedelta = ongoing_total_time_timedelta + (completed_total_time_timedelta or timedelta()) + + # Convert total seconds to timedelta + total_time_timedelta = timedelta(seconds=total_time_timedelta.total_seconds()) + + # Extract hours, minutes, and seconds from timedelta + hours, remainder = divmod(total_time_timedelta.seconds, 3600) + minutes, seconds = divmod(remainder, 60) + + # Return the total time as a tuple (hours, minutes, seconds) + return hours, minutes, seconds + class PointActivity(models.Model): point = models.ForeignKey(Point, on_delete=models.CASCADE, null=True) start_time = models.DateTimeField() - end_time = models.DateTimeField() + end_time = models.DateTimeField(null=True, blank=True) diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index a90f1c84..92bbc5cf 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -1192,100 +1192,6 @@ def save_point(request): -@login_required -def mark_point_working_on(request, point_id, task_id): - task = get_object_or_404(Task, id=task_id) - point = get_object_or_404(Point, id=point_id) - point.status = 'Working On' - current_datetime = datetime.now() - point.date_workingon = current_datetime.date() - point.time_workingon = current_datetime.strftime("%I:%M %p") - - point.save() - - # Create a new Status object - status_text = f'Working On: {point.text}' - 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) - - -@login_required -def mark_point_working_on_task_page(request, point_id, task_id): - task = get_object_or_404(Task, id=task_id) - point = get_object_or_404(Point, id=point_id) - point.status = 'Working On' - current_datetime = datetime.now() - point.date_workingon = current_datetime.date() - point.time_workingon = current_datetime.strftime("%I:%M %p") - - point.save() - - # Create a new Status object - status_text = f'Working On: {point.text}' - status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile) - status.save() - - return redirect('detailed-task', task_id=task.task_id) - - -@login_required -def mark_point_completed(request, point_id, task_id): - task = get_object_or_404(Task, id=task_id) - point = get_object_or_404(Point, id=point_id) - point.status = 'Completed' - current_datetime = datetime.now() - point.date_workingon = current_datetime.date() - point.time_workingon = current_datetime.strftime("%I:%M %p") - - point.save() - - # Create a new Status object - status_text = f'{point.text} - Completed' - 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) - - - -@login_required -def mark_point_completed_task_page(request, point_id, task_id): - task = get_object_or_404(Task, id=task_id) - point = get_object_or_404(Point, id=point_id) - point.status = 'Completed' - current_datetime = datetime.now() - point.date_workingon = current_datetime.date() - point.time_workingon = current_datetime.strftime("%I:%M %p") - - point.save() - - # Create a new Status object - status_text = f'{point.text} - Completed' - 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 - - return redirect('detailed-task', task_id=task.task_id) - - - - - @login_required def save_dailyreport(request): if request.method == 'POST': @@ -1858,4 +1764,161 @@ def delete_task_modal(request, task_id): context = { 'task': task, } - return render(request, "delete_modals/delete-task-modal.html", context) \ No newline at end of file + return render(request, "delete_modals/delete-task-modal.html", context) + + + + + + + + +#Mark points + +@login_required +def mark_point_working_on(request, point_id, task_id): + task = get_object_or_404(Task, id=task_id) + point = get_object_or_404(Point, id=point_id) + point.status = 'Working On' + current_datetime = datetime.now() + + point.save() + + activity = PointActivity( + point = point, + start_time = datetime.now(), + ) + activity.save() + + if PointActivity.objects.filter(point=point).count() == 1: + status_text = f'Started Working On: {point.text}' + status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile) + status.save() + else: + status_text = f'Resumed Working On: {point.text}' + 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) + + + +@login_required +def mark_point_working_on_task_page(request, point_id, task_id): + task = get_object_or_404(Task, id=task_id) + point = get_object_or_404(Point, id=point_id) + point.status = 'Working On' + current_datetime = datetime.now() + + point.save() + + activity = PointActivity( + point = point, + start_time = datetime.now(), + ) + activity.save() + + if PointActivity.objects.filter(point=point).count() == 1: + status_text = f'Started Working On: {point.text}' + status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile) + status.save() + else: + status_text = f'Resumed Working On: {point.text}' + status = Status(text=status_text, date=current_datetime.date(), time=current_datetime.strftime("%I:%M %p"), staff=request.user.staffprofile) + status.save() + + + return redirect('detailed-task', task_id=task.task_id) + + + + + +@login_required +def mark_point_paused(request, point_id, task_id): + task = get_object_or_404(Task, id=task_id) + point = get_object_or_404(Point, id=point_id) + point.status = 'Paused' + current_datetime = datetime.now() + + + point.save() + + last_activity = PointActivity.objects.filter(point=point).last() + last_activity.end_time = datetime.now() + last_activity.save() + + + status_text = f'{point.text} - Paused' + 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) + + + + + +@login_required +def mark_point_completed(request, point_id, task_id): + task = get_object_or_404(Task, id=task_id) + point = get_object_or_404(Point, id=point_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() + + + status_text = f'{point.text} - Completed' + 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) + + + +@login_required +def mark_point_completed_task_page(request, point_id, task_id): + task = get_object_or_404(Task, id=task_id) + point = get_object_or_404(Point, id=point_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() + + + status_text = f'{point.text} - Completed' + 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 + + return redirect('detailed-task', task_id=task.task_id) \ No newline at end of file diff --git a/osinaweb/osinaweb/__pycache__/urls.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/urls.cpython-310.pyc index b66428c2920e1836c7936720f418c596c0b28da0..88df11817ca133a6c0d51248e46b739332ef9de4 100644 GIT binary patch delta 186 zcmbPk|HYm+pO=@50SIgZcBM|5$Scb@ZKHNRn@%cA%869Ath|(yDcrrx6B(oOQ}a`~ zQhBlpfVeQ_R40k!UGn==u^$G~-=Oz|q#~0*h=9R=3B$gJZrcAylC?|YN z5L4Vqyo0f5^J(!2R;D7|$qKS2jCzwpWwqF>fbJ-=n%pW|#JFJd57{0@@d~C6zFMYc UzB;BRhI&3GhDMfu4D}MM0GUxdcmMzZ delta 120 zcmexjKi!@;pO=@50SMfJcBU##//', views.mark_point_working_on_task_page, name='mark_point_working_on_task_page'), path('mark_point_completed///', views.mark_point_completed, name='mark_point_completed'), path('mark_point_completed_task_page///', views.mark_point_completed_task_page, name='mark_point_completed_task_page'), + path('mark_point_paused///', views.mark_point_paused, name='mark_point_paused'), diff --git a/osinaweb/templates/popup_modals/showpoints-modal.html b/osinaweb/templates/popup_modals/showpoints-modal.html index 19474eb4..363dc66e 100644 --- a/osinaweb/templates/popup_modals/showpoints-modal.html +++ b/osinaweb/templates/popup_modals/showpoints-modal.html @@ -21,53 +21,46 @@
{% for point in points %} - {% if point.status == 'Not Completed' %}
+ {% if point.status == 'Completed' %} +

{{point.text}}

+ {% else %}

{{point.text}}

+ {% endif %}
-
- - + {% endif %} + + {% if point.status == 'Working On' and not point.status == 'Completed' %} + - + {% endif %} + - - + + {% endif %}
{% csrf_token %} @@ -80,57 +73,34 @@
-

Total Time: 0min

-
-
- - {% endif %} - - {% if point.status == 'Completed' %} -
-
-

{{point.text}}

-
-
- -
-
- {% endif %} - - - {% if point.status == 'Working On' %} -
-
-

{{point.text}}

-
-
- - - {% csrf_token %} - - -
- {% csrf_token %} - -
+

Total Time: + + {% if point.total_time.0 > 0 %} + {{ point.total_time.0 }}hr + {% if point.total_time.1 > 0 %} + , + {% endif %} + {% endif %} + + {% if point.total_time.1 > 0 %} + {{ point.total_time.1 }}min + {% if point.total_time.2 > 0 %} + , + {%endif%} + {% endif %} + + {% if point.total_time.2 > 0 %} + {{ point.total_time.2 }}sec + {% endif %} + +

-
- {% endif %} {% endfor %}
- \ No newline at end of file