Major improvements

main
emile 2 years ago
parent 3eba807e5d
commit 6affc6ae23

BIN
.DS_Store vendored

Binary file not shown.

BIN
osinaweb/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -4,27 +4,40 @@ 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()
else:
# Handle the case when the user is not logged in
open_task_count = 0
working_on_task_count = 0
total_tasks = open_task_count + working_on_task_count
latest_statuses = Status.objects.all().order_by('-id')[:12]
return {'total_tasks': total_tasks, 'latest_statuses' : latest_statuses,}
def last_status(request):
minutes_ago = 0
hours_ago = 0
hours_minutes_ago = ""
current_date = datetime.now().strftime('%Y-%m-%d')
if request.user.is_authenticated:
last_status = Status.objects.filter(staff=request.user.staffprofile).last()
if last_status:
# Convert the 'time' field to a datetime object
@ -41,12 +54,17 @@ def utilities(request):
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')
if minutes_ago > 60:
hours_ago = minutes_ago // 60 # Calculate the number of hours
remaining_minutes = minutes_ago % 60 # Calculate the remaining minutes
hours_minutes_ago = f"{hours_ago}hr {remaining_minutes}min ago"
else:
hours_minutes_ago = f"{minutes_ago}min ago"
return {'total_tasks': total_tasks, 'last_status' : last_status, 'latest_statuses' : latest_statuses, 'minutes_ago' : minutes_ago, 'current_date' : current_date, }
return {'last_status' : last_status, 'current_date' : current_date, 'minutes_ago' : minutes_ago, 'hours_minutes_ago': hours_minutes_ago,}

@ -55,7 +55,7 @@ def home(request, *args, **kwargs):
else:
# Non-superadmin user can only see their assigned tasks
tasks = Task.objects.filter(Q(assigned_to=request.user.staffprofile) & (Q(status='Open') | Q(status='Working On')))
tasks = Task.objects.filter(Q(assigned_to=request.user.staffprofile) & (Q(status='Open') | Q(status='Working On'))).order_by('-id')
# Initialize last_note_color with a default color
last_note_color = 'black'
@ -96,8 +96,13 @@ def my_projects(request, *args, **kwargs):
@login_required
def my_tasks(request, *args, **kwargs):
my_tasks = Task.objects.all().filter(assigned_to=request.user.staffprofile).order_by('-id')
if request.user.is_superuser:
# Superadmin can see all projects
my_tasks = Task.objects.all().order_by('-id')
else:
# Non-superuser, filter projects where the user is either the manager or a member
my_tasks = Task.objects.all().filter(assigned_to=request.user.staffprofile).order_by('-id')
context = {
'my_tasks' : my_tasks
@ -441,12 +446,24 @@ def timeline_modal(request, *args, **kwargs):
}
return render(request, 'timeline-modal.html', context)
def update_status_modal(request, *args, **kwargs):
def update_status_modal(request, *, task_id):
task = get_object_or_404(Task, task_id=task_id)
if request.method == 'POST':
status = request.POST.get('status')
task.status = status
task.save()
context = {
'task' : task,
}
return render(request, 'update-status-modal.html', context)
def add_projecttype_modal(request, *args, **kwargs):
context = {

Binary file not shown.

@ -66,6 +66,7 @@ TEMPLATES = [
'OPTIONS': {
'context_processors': [
'osinacore.custom_context.utilities',
'osinacore.custom_context.last_status',
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',

@ -62,7 +62,7 @@ urlpatterns = [
path('addnote/', views.add_note_modal, name='addnote'),
path('addfile/', views.add_file_modal, name='addfile'),
path('addcredentials/', views.add_credentials_modal, name='addcredentials'),
path('updatestatus/', views.update_status_modal, name='updatestatus'),
path('updatestatus/<str:task_id>/', views.update_status_modal, name='updatestatus'),
path('addpoint/<str:task_id>/', views.add_point_modal, name='addpoint'),
path('showpoints/<str:task_id>/', views.show_points_modal, name='showpoints'),
path('addtime/', views.add_time_modal, name='addtime'),

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@ -146,7 +146,7 @@
class="w-[33.33%] p-2 border border-gray-200 text-base h-[70px] bg-gray-300 text-gray-500">Close</button>
<button
class="w-[33.33%] p-2 border border-gray-200 text-base h-[70px] bg-gray-300 text-gray-500 updateStatusButton"
data-modal-url="{% url 'updatestatus' %}">Update
data-modal-url="{% url 'updatestatus' task.task_id %}">Update
Status</button>
<button
class="w-[33.33%] p-2 border border-gray-200 text-base h-[70px] bg-gray-300 text-gray-500 addTimeButton"

@ -33,6 +33,7 @@
</div>
<!-- CUSTOMERS -->
{% if user.is_superuser %}
<div class="w-full menu-container">
<div
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
@ -69,6 +70,7 @@
</a>
</div>
</div>
{% endif %}
<!-- MY WORK DROPDOWN -->
<div class="w-full menu-container">
@ -122,7 +124,8 @@
<i class="fa fa-angle-down" style="font-size: 25px; color: white;"></i>
</div>
</div>
{% if user.is_superuser %}
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
<div class="w-full flex justify-start items-center gap-3">
<i class="fas fa-cash-register" style="font-size: 22px; color: white;"></i>
@ -132,6 +135,7 @@
<i class="fa fa-angle-down" style="font-size: 25px; color: white;"></i>
</div>
</div>
{% endif %}
<!-- UTILITIES -->
<div class="w-full menu-container">
@ -221,7 +225,17 @@
<div>
<p class="text-sm text-gray-500">Recent Status: <span
class="text-slate-700 font-semibold">{{last_status.text}}</span></p>
<p class="text-sm text-gray-500">Last update: {{last_status.date}} | {{last_status.time}}, {% if minutes_ago == 0 %} Just Now {%else%} {% if last_status.date == current_date %} {{minutes_ago}} mins ago {%endif %} {%endif%}</p>
<p class="text-sm text-gray-500">Last update:
{% if last_status.date == current_date %}
Today | {{last_status.time}},
{% if minutes_ago == 0 %}
Just Now
{%else%}
{{hours_minutes_ago}}
{%endif%}
{% else %}
{{last_status.date}} | {{last_status.time}}
{%endif %}</p>
</div>
<button
class="w-[30px] h-[30px] rounded-full p-2 bg-gray-300 text-white text-[18px] outline-none border-none cursor-pointer flex justify-center items-center shadow-md addStatusButton"
@ -233,11 +247,19 @@
<div>
<div class="w-fit flex justify-between items-center gap-3">
{% if user.is_superuser %}
<div class="flex justify-center items-center gap-2">
<p class="text-gray-400">{{request.user.staffprofile.first_name}}
{{request.user.staffprofile.last_name}}</p>
<i class="fa fa-angle-down" style="color: grey;"></i>
</div>
{%else%}
<div class="flex justify-center items-center gap-2">
<p class="text-gray-400">{{request.user.staffprofile.first_name}}
{{request.user.staffprofile.last_name}}</p>
<i class="fa fa-angle-down" style="color: grey;"></i>
</div>
{% endif %}
<div class="w-[50px] h-[50px] bg-slate-600 rounded-full">
<img src='{{request.user.staffprofile.image.url}}' alt="user-image"

@ -180,7 +180,7 @@
class="w-[33.33%] p-2 border border-gray-200 text-base h-[70px] bg-gray-300 text-gray-500">Close</button>
<button
class="w-[33.33%] p-2 border border-gray-200 text-base h-[70px] bg-gray-300 text-gray-500 updateStatusButton"
data-modal-url="{% url 'updatestatus' %}">Update
data-modal-url="{% url 'updatestatus' task.task_id %}">Update
Status</button>
<button
class="w-[33.33%] p-2 border border-gray-200 text-base h-[70px] bg-gray-300 text-gray-500 addTimeButton"

@ -13,21 +13,22 @@
</head>
<body>
<div id="hiddenContent">
<form id="hiddenContent" method="POST" action="{% url 'updatestatus' task.task_id %}">
{% csrf_token %}
<h1 class="text-slate-800 text-2xl font-semibold text-center">Update Status</h1>
<div class="w-full flex justify-center items-center">
<select name="status" class="w-[300px] p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4">
<option>Close</option>
<option>Open</option>
<option>Working On</option>
<option value="Closed">Close</option>
<option value="Open">Open</option>
<option value="Working On">Working On</option>
</select>
</div>
<div class="w-full flex justify-center items-center mt-4">
<button
<button type="submit"
class="w-fit bg-blue-500 border border-blue-500 rounded-md text-white text-xl px-3 py-2 hover:bg-white hover:text-blue-500">Update</button>
</div>
</div>
</form>
</body>
</html>
Loading…
Cancel
Save