emile 2 years ago
parent 6affc6ae23
commit 1b336baffb

BIN
.DS_Store vendored

Binary file not shown.

BIN
osinaweb/.DS_Store vendored

Binary file not shown.

Binary file not shown.

BIN
osinaweb/node_modules/.DS_Store generated vendored

Binary file not shown.

Binary file not shown.

@ -3,6 +3,22 @@ from django.contrib.auth.models import AnonymousUser
from datetime import datetime, timedelta from datetime import datetime, timedelta
def calculate_time_ago(status):
# Convert status.date to a datetime.date object
status_date = datetime.strptime(status.date, '%Y-%m-%d').date()
timestamp = datetime.combine(status_date, datetime.strptime(status.time, '%I:%M %p').time())
time_difference = datetime.now() - timestamp
if time_difference.total_seconds() < 3600:
# If less than an hour, display in minutes
return f"{int(time_difference.total_seconds() / 60)}min ago"
else:
# Display in hours and remaining minutes
hours = int(time_difference.total_seconds() // 3600)
minutes = int((time_difference.total_seconds() % 3600) // 60)
return f"{hours}hr {minutes}min ago"
def utilities(request): def utilities(request):
if request.user.is_authenticated and request.user.is_superuser: if request.user.is_authenticated and request.user.is_superuser:
open_task_count = Task.objects.filter(status='Open').count() open_task_count = Task.objects.filter(status='Open').count()
@ -26,8 +42,13 @@ def utilities(request):
latest_statuses = Status.objects.all().order_by('-id')[:12] latest_statuses = Status.objects.all().order_by('-id')[:12]
# Calculate time ago for each status and store it in a dictionary
latest_statuses_time_ago = [{'status': status, 'time_ago': calculate_time_ago(status)} for status in latest_statuses]
return {'total_tasks': total_tasks, 'latest_statuses' : latest_statuses,} return {'total_tasks': total_tasks, 'latest_statuses' : latest_statuses, 'latest_statuses_time_ago': latest_statuses_time_ago, }

Binary file not shown.

@ -65,6 +65,7 @@ TEMPLATES = [
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [
'osinacore.custom_context.utilities', 'osinacore.custom_context.utilities',
'osinacore.custom_context.last_status', 'osinacore.custom_context.last_status',
'django.template.context_processors.debug', 'django.template.context_processors.debug',

Binary file not shown.

Binary file not shown.

@ -188,20 +188,24 @@
<div class="w-full h-fit mt-2"> <div class="w-full h-fit mt-2">
{% for latest in latest_statuses %} {% for latest in latest_statuses_time_ago %}
<!-- 1ST ROW --> <!-- 1ST ROW -->
<div class="w-full flex flex-col py-3"> <div class="w-full flex flex-col py-3">
<div class="w-full flex flex-col justify-center items-start gap-2"> <div class="w-full flex flex-col justify-center items-start gap-2">
<div class="w-full flex justify-between items-center gap-2"> <div class="w-full flex justify-between items-center gap-2">
<div class="flex justify-start gap-2"> <div class="flex justify-start gap-2">
<div class="w-[45px] h-[45px] rounded-full"> <div class="w-[45px] h-[45px] rounded-full">
<img src='{{latest.staff.image.url}}' alt="user profile" <img src='{{latest.status.staff.image.url}}' alt="user profile"
class="w-full h-full object-cover rounded-full"> class="w-full h-full object-cover rounded-full">
</div> </div>
<div class="flex flex-col"> <div class="flex flex-col">
<h1 class="text-sm text-slate-700 font-semibold">{{latest.staff.first_name}} <h1 class="text-sm text-slate-700 font-semibold">{{latest.status.staff.first_name}}
{{latest.staff.last_name}}</h1> {{latest.status.staff.last_name}}</h1>
<p class="text-sm text-gray-500">{{latest.time}}</p> {% if latest.time_ago == '0min ago' %}
<p class="text-sm text-gray-500">Just Now</p>
{%else %}
<p class="text-sm text-gray-500">{{ latest.time_ago}}</p>
{%endif%}
</div> </div>
</div> </div>
<div class="cursor-pointer"> <div class="cursor-pointer">
@ -211,7 +215,7 @@
<!-- Status --> <!-- Status -->
<div class="w-full"> <div class="w-full">
<p class="text-sm text-gray-500">{{latest.text}}</p> <p class="text-sm text-gray-500">{{latest.status.text}}</p>
</div> </div>
<!-- Add comment section --> <!-- Add comment section -->

Loading…
Cancel
Save