Files adjuctments done

main
emile 1 year ago
parent ae5aee3aa0
commit 44aaae49f5

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.

@ -0,0 +1,18 @@
from django.urls import path
from . import views
urlpatterns = [
path('deletecustomermodal/<int:customer_id>', views.delete_customer_modal, name='deletecustomermodal'),
path('deletebusinessmodal/<int:business_id>', views.delete_business_modal, name='deletebusinessmodal'),
path('deletestaffmodal/<int:staff_id>', views.delete_staff_modal, name='deletestaffmodal'),
path('deleteprojectmodal/<int:project_id>', views.delete_project_modal, name='deleteprojectmodal'),
path('deleteprojectnotemodal/<int:note_id>/', views.delete_project_note_modal, name='deleteprojectnotemodal'),
path('deletetaskmodal/<int:task_id>', views.delete_task_modal, name='deletetaskmodal'),
path('deletepointmodal/<int:point_id>/<str:task_id>/', views.delete_point_modal, name='deletepointmodal'),
path('deletetaskpointmodal/<int:point_id>/<str:task_id>/', views.delete_task_point_modal, name='deletetaskpointmodal'),
path('deletenotemodal/<int:note_id>', views.delete_note_modal, name='deletenotemodal')
]

@ -0,0 +1,141 @@
from django.shortcuts import render, redirect, get_object_or_404
from osinacore.models import *
from django.contrib.auth.decorators import login_required
from django.urls import reverse
from django.http import HttpResponseRedirect
@login_required
def delete_customer_modal(request, customer_id):
customer = get_object_or_404(CustomerProfile, id=customer_id)
if request.method == 'POST':
customer.delete()
return redirect('customers')
context = {
'customer': customer,
}
return render(request, "delete_templates/delete-customer-modal.html", context)
@login_required
def delete_business_modal(request, business_id):
business = get_object_or_404(Business, id=business_id)
if request.method == 'POST':
business.delete()
return redirect('businesses')
context = {
'business': business,
}
return render(request, "delete_templates/delete-business-modal.html", context)
@login_required
def delete_staff_modal(request, staff_id):
staff = get_object_or_404(StaffProfile, id=staff_id)
if request.method == 'POST':
staff.delete()
return redirect('users')
context = {
'staff': staff,
}
return render(request, "delete_templates/delete-staff-modal.html", context)
@login_required
def delete_project_modal(request, project_id):
project = get_object_or_404(Project, id=project_id)
if request.method == 'POST':
project.delete()
return redirect('my-projects')
context = {
'project': project,
}
return render(request, "delete_templates/delete-project-modal.html", context)
@login_required
def delete_project_note_modal(request, note_id):
note = get_object_or_404(Note, id=note_id)
if request.method == 'POST':
project_id = note.project_id
project = get_object_or_404(Project, id=project_id)
note.delete()
return redirect('detailed-project', project_id=project.project_id)
context = {
'note': note,
}
return render(request, "delete_templates/delete-project-note-modal.html", context)
@login_required
def delete_task_modal(request, task_id):
task = get_object_or_404(Task, id=task_id)
if request.method == 'POST':
task.delete()
return redirect('my-tasks')
context = {
'task': task,
}
return render(request, "delete_templates/delete-task-modal.html", context)
@login_required
def delete_point_modal(request, point_id, task_id):
task = get_object_or_404(Task, id=task_id)
point = get_object_or_404(Point, id=point_id)
if request.method == 'POST':
point.delete()
task_id_str = task.task_id
showpoints_url = reverse('showpoints', args=[task_id_str])
return HttpResponseRedirect(showpoints_url)
@login_required
def delete_task_point_modal(request, point_id, task_id):
task = get_object_or_404(Task, id=task_id)
point = get_object_or_404(Point, id=point_id)
if request.method == 'POST':
point.delete()
task_id_str = task.task_id
task_details_url = reverse('detailed-task', args=[task_id_str])
return HttpResponseRedirect(task_details_url)
@login_required
def delete_note_modal(request, note_id):
note = get_object_or_404(Note, id=note_id)
if request.method == 'POST':
note.delete()
return redirect('my-notes')
context = {
'note': note,
}
return render(request, "delete_templates/delete-note-modal.html", context)

@ -0,0 +1,28 @@
from django.urls import path
from . import views
urlpatterns = [
path('customer/<str:customer_id>/', views.edit_customer, name='editcustomer'),
path('business/<str:business_id>/', views.edit_business, name='editbusiness'),
path('staff/<str:staff_id>/', views.edit_staff, name='editstaff'),
path('project/<str:project_id>/', views.edit_project, name='editproject'),
path('task/<str:task_id>', views.edit_task, name='edittask'),
path('task-status/<str:task_id>', views.edit_task_status_modal, name='edittaskstatusmodal'),
path('epic/', views.edit_epic, name='editepic'),
path('projecttype/<int:projecttype_id>', views.edit_project_type, name='editprojecttype'),
path('staffposition/', views.edit_staff_position, name='editstaffposition'),
path('businesstype/<int:businesstype_id>', views.edit_business_type, name='editbusinesstype'),
path('reference/<int:reference_id>', views.edit_reference, name='editreference'),
path('tag/<int:tag_id>', views.edit_tag, name='edittag'),
#Mark Points
path('mark_point_working_on/<int:point_id>/<str:task_id>/', views.mark_point_working_on, name='mark_point_working_on'),
path('mark_point_working_on_task_page/<int:point_id>/<str:task_id>/', views.mark_point_working_on_task_page, name='mark_point_working_on_task_page'),
path('mark_point_completed/<int:point_id>/<str:task_id>/', views.mark_point_completed, name='mark_point_completed'),
path('mark_point_completed_task_page/<int:point_id>/<str:task_id>/', views.mark_point_completed_task_page, name='mark_point_completed_task_page'),
path('mark_point_paused/<int:point_id>/<str:task_id>/', views.mark_point_paused, name='mark_point_paused'),
]

@ -0,0 +1,522 @@
from osinacore.models import *
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.http import HttpResponse
@login_required
def edit_customer(request, customer_id):
customer = get_object_or_404(CustomerProfile, customer_id=customer_id)
#Utilities
references = Reference.objects.all()
businesses = Business.objects.all
customer_status = customer.status
customer_reference = customer.reference
customer_business = customer.business
if request.method == 'POST':
customer.user.first_name = request.POST.get('first_name')
customer.user.last_name = request.POST.get('last_name')
customer.user.email = request.POST.get('email')
customer.user.save()
customer.mobile_number = request.POST.get('mobile_number')
customer.personal_website = request.POST.get('personal_website')
customer.status = request.POST.get('status')
customer_reference = request.POST.get('reference')
reference = get_object_or_404(Reference, id=customer_reference)
customer.reference = reference
if customer.business:
new_business = request.POST.get('business')
business = get_object_or_404(Business, id=new_business)
customer.business = business
customer.save()
return redirect('customerdetails', customer_id=customer.customer_id)
context = {
'customer' : customer,
'references' : references,
'businesses' : businesses,
'customer_status' : customer_status,
'customer_reference' : customer_reference,
'customer_business' : customer_business,
}
return render(request, 'edit_templates/edit-customer.html', context)
@login_required
def edit_business(request, business_id):
business = get_object_or_404(Business, business_id=business_id)
business_types = BusinessType.objects.all().order_by('name')
current_business_type = None
if business.type:
current_business_type = business.type
if request.method == 'POST':
business.name= request.POST.get('name')
business.financial_number = request.POST.get('financial_number')
business.commercial_registration = request.POST.get('commercial_registration')
business.vat = request.POST.get('vat')
business.phone_number = request.POST.get('phone_number')
business.website = request.POST.get('website')
business_type = request.POST.get('business_type')
type = get_object_or_404(BusinessType, id=business_type)
business.type = type
new_logo = request.FILES.get('logo')
if new_logo:
business.logo = new_logo
business.save()
return redirect('businessdetails', business_id=business.business_id)
context = {
'business' : business,
'business_types' : business_types,
'current_business_type' : current_business_type,
}
return render(request, 'edit_templates/edit-business.html', context)
@login_required
def edit_staff(request, staff_id):
staff = get_object_or_404(StaffProfile, staff_id=staff_id)
positions = StaffPosition.objects.all().order_by('name')
current_position = staff.staff_position
if request.method == 'POST':
staff.user.first_name= request.POST.get('first_name')
staff.user.last_name = request.POST.get('last_name')
staff.user.email = request.POST.get('email')
staff.user.save()
staff.mobile_number = request.POST.get('mobile_number')
staff.active = request.POST.get('active')
staff.intern = request.POST.get('intern')
new_position_id = request.POST.get('staff_position')
new_position = get_object_or_404(StaffPosition, id=new_position_id)
staff.staff_position = new_position
new_image = request.FILES.get('image')
if new_image:
staff.image = new_image
staff.active = request.POST.get('active') == 'on'
staff.intern = request.POST.get('intern') == 'on'
staff.save()
return redirect('userdetails', staff_id=staff.staff_id)
context = {
'staff' : staff,
'positions' : positions,
'current_position' : current_position,
}
return render(request, 'edit_templates/edit-staff.html', context)
@login_required
def edit_project(request, project_id):
project = get_object_or_404(Project, project_id=project_id)
staffs = StaffProfile.objects.all().order_by('-id')
current_manager = project.manager
customers = CustomerProfile.objects.all().order_by('-id')
current_client = project.customer
types = ProjectType.objects.all().order_by('-id')
if request.method == 'POST':
project.name = request.POST.get('name')
new_customer_id = request.POST.get('customer')
customer = get_object_or_404(CustomerProfile, id=new_customer_id)
project.customer = customer
new_manager_id = request.POST.get('manager')
manager = get_object_or_404(StaffProfile, id=new_manager_id)
project.manager = manager
members_ids = request.POST.getlist('members')
members_profiles = StaffProfile.objects.filter(id__in=members_ids)
project.members.set(members_profiles)
project.status = request.POST.get('status')
type_ids = request.POST.getlist('types')
types = ProjectType.objects.filter(id__in=type_ids)
project.project_type.set(type_ids)
project.details = request.POST.get('details')
project.start_date = request.POST.get('start_date')
project.end_date = request.POST.get('end_date')
project.save()
return redirect('detailed-project', project_id=project.project_id)
context = {
'project' : project,
'staffs' : staffs,
'current_manager' : current_manager,
'customers' : customers,
'current_client' : current_client,
'types' : types,
}
return render(request, 'edit_templates/edit-project.html', context)
@login_required
def edit_task(request, task_id):
task = get_object_or_404(Task, task_id=task_id)
projects = Project.objects.all().order_by('-id')
staffs = StaffProfile.objects.all().order_by('-id')
selected_project_id = request.POST.get('project', task.project.id) if request.method == 'POST' else task.project.id
epics_of_my_project = Epic.objects.filter(project_id=selected_project_id)
if request.method == 'POST':
task.name = request.POST.get('name')
project_id = request.POST.get('project')
project = get_object_or_404(Project, id=project_id)
task.project = project
task.extra = request.POST.get('extra')
epic_id = request.POST.get('epic')
epic = get_object_or_404(Epic, id=epic_id)
task.epic = epic
task.requirement = request.POST.get('requirement')
task.status = request.POST.get('status')
# Convert assigned_to ID to a StaffProfile instance
assigned_to_id = request.POST.get('assigned_to')
assigned_to = get_object_or_404(StaffProfile, id=assigned_to_id)
task.assigned_to = assigned_to
task.description = request.POST.get('description')
task.start_date = request.POST.get('start_date')
task.end_date = request.POST.get('end_date')
task.save()
return redirect('detailed-task', task_id=task.task_id)
context = {
'task': task,
'projects': projects,
'epics_of_my_project': epics_of_my_project,
'staffs': staffs,
}
return render(request, 'edit_templates/edit-task.html', context)
def edit_task_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()
# Reload the parent page using JavaScript
response = HttpResponse('<script>window.top.location.reload();</script>')
return response
context = {
'task' : task,
}
return render(request, 'edit_templates/edit-taskstatus-modal.html', context)
@login_required
def edit_epic(request, *args, **kwargs):
context = {
}
return render(request, 'edit_templates/edit-epic.html', context)
@login_required
def edit_project_type(request, projecttype_id):
projecttype = get_object_or_404(ProjectType, id=projecttype_id)
if request.method == 'POST':
projecttype.name = request.POST.get('name')
projecttype.save()
return redirect('projecttypes')
return render(request, 'edit_templates/edit-project-type.html', {'projecttype': projecttype})
@login_required
def edit_staff_position(request):
context = {
}
return render(request, 'edit_templates/edit-staff-position.html', context)
@login_required
def edit_business_type(request, businesstype_id):
businesstype = get_object_or_404(BusinessType, id=businesstype_id)
if request.method == 'POST':
businesstype.name = request.POST.get('name')
businesstype.save()
return redirect('businesstypes')
return render(request, 'edit_templates/edit-business-type.html', {'businesstype': businesstype})
@login_required
def edit_reference(request, reference_id):
reference = get_object_or_404(Reference, id=reference_id)
if request.method == 'POST':
reference.name = request.POST.get('name')
reference.date = request.POST.get('date')
reference.save()
return redirect('references')
return render(request, 'edit_templates/edit-reference.html', {'reference': reference})
@login_required
def edit_tag(request, tag_id):
tag = get_object_or_404(Tag, id=tag_id)
if request.method == 'POST':
tag.name = request.POST.get('name')
tag.save()
return redirect('tags')
return render(request, 'edit_templates/edit-tag.html', {'tag': tag})
#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()
if last_activity:
last_activity.end_time = timezone.make_aware(current_datetime, timezone.get_current_timezone())
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()
# Update the end time of the last activity to the current time
last_activity = PointActivity.objects.filter(point=point).last()
if last_activity:
last_activity.end_time = timezone.make_aware(current_datetime, timezone.get_current_timezone())
last_activity.save()
total_time_hours, total_time_minutes, total_time_seconds = point.total_activity_time()
formatted_time = ""
if total_time_hours > 0:
formatted_time += f"{total_time_hours}{'hr' if total_time_hours == 1 else 'hrs'}"
if total_time_minutes > 0:
formatted_time += f" {total_time_minutes}{'min' if total_time_minutes == 1 else 'mins'}"
if total_time_seconds > 0:
formatted_time += f" {total_time_seconds}{'sec' if total_time_seconds == 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)
@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()
return redirect('detailed-task', task_id=task.task_id)

Binary file not shown.

@ -92,14 +92,13 @@
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500 mt-1">
{% if not business.type %}
<option value="" selected>Select Business Type</option>
{% endif %}
{% else %}
{% for type in business_types %}
<option value="{{ type.id }}" {% if current_business_type and current_business_type.id==type.id
%}selected{% endif %}>
<option value="{{ type.id }}"{% if current_business_type and current_business_type.id == type.id %}selected selected{% endif %}>
{{ type.name }}
</option>
{% endfor %}
{% endif %}
</select>
</div>

@ -96,47 +96,14 @@
required>
{% for business in businesses %}
<option value="{{ business.id }}" {% if business.id == customer_business.id %} selected {% endif %}>
{{ business.name }}
{{ business.name }} {{business}}
</option>
{% endfor %}
</select>
</div>
{% endif %}
<div class="w-[80%] mx-auto border border-gray-300 rounded-md py-5 px-3 bg-white hidden"
id="addBusinessContainer">
<h1 class="text-3xl text-slate-800 text-center font-semibold">
Select Business
</h1>
<div class="w-full mt-2">
<select name="business" id="businessSelect"
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
<option value="" disabled>Business Name</option>
<option value="" selected>Business1</option>
{% for business in businesses %}
<option value="{{business.id}}">{{business.name}}</option>
{% endfor %}
</select>
</div>
</div>
<!-- MAKE THE "ADDBUSINESSCONTAINER" VISIBLE WHEN CHOOSING THE CUSTOMER TYPE AS BUSINESS -->
<script>
const businessTypeSelect = document.getElementById('businessTypeSelect');
const addBusinessContainer = document.getElementById('addBusinessContainer');
businessTypeSelect.addEventListener('change', function () {
if (businessTypeSelect.value === 'business') {
addBusinessContainer.style.display = 'block';
addBusinessContainer.scrollIntoView({ behavior: 'smooth' });
} else {
addBusinessContainer.style.display = 'none';
}
});
</script>
<div class="w-full flex justify-center items-center mt-4">
<button type="submit"

@ -258,7 +258,7 @@
<button
class="p-2 border border-gray-200 text-base h-[70px] bg-gray-100 text-gray-500 updateStatusButton"
data-modal-url="{% url 'updatestatus' task.task_id %}">Update
data-modal-url="{% url 'edittaskstatusmodal' task.task_id %}">Update
Status</button>
<button
@ -405,7 +405,7 @@
<button
class="p-2 border border-gray-200 text-sm h-[70px] bg-gray-100 text-gray-500 updateStatusButton"
data-modal-url="{% url 'updatestatus' task.task_id %}">Update
data-modal-url="{% url 'edittaskstatusmodal' task.task_id %}">Update
Status</button>
<button

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

@ -21,35 +21,42 @@ from django.conf import settings
urlpatterns = [
path('add/', include('osinacore.add.urls')),
path('edit/', include('osinacore.edit.urls')),
path('delete/', include('osinacore.delete.urls')),
path('login', views.signin, name='signin'),
path('logout/', views.signout, name='signout'),
path('', views.home, name='home'),
path('my-projects/', views.my_projects, name='my-projects'),
path('my-tasks/', views.my_tasks, name='my-tasks'),
path('my-notes/', views.my_notes, name='my-notes'),
path('statusmobilemodal/', views.status_mobile_modal, name='statusmobilemodal'),
path('userrecentativities/<int:user_id>', views.user_recent_activities_modal, name='userrecentativities'),
#Listing Templates
path('customers/', views.customers, name='customers'),
path('businesses/<str:business_id>/', views.businessdetails, name='businessdetails'),
path('businesses/', views.businesses, name='businesses'),
path('staffs/', views.staffs, name='users'),
path('staffpositions/', views.staff_positions, name='staffpositions'),
path('my-projects/', views.my_projects, name='my-projects'),
path('my-tasks/', views.my_tasks, name='my-tasks'),
path('my-notes/', views.my_notes, name='my-notes'),
path('dailyreports/', views.daily_reports, name='dailyreports'),
path('projecttypes/', views.project_types, name='projecttypes'),
path('staffpositions/', views.staff_positions, name='staffpositions'),
path('businesstypes/', views.business_types, name='businesstypes'),
path('references/', views.references, name='references'),
path('tags/', views.tags, name='tags'),
path('dailyreports/', views.daily_reports, name='dailyreports'),
#Detail pages urls
path('businesses/<str:business_id>/', views.businessdetails, name='businessdetails'),
#Details Templates
path('customers/<str:customer_id>/', views.customerdetails, name='customerdetails'),
path('businesses/<str:business_id>/', views.businessdetails, name='businessdetails'),
path('staffs/<str:staff_id>/', views.staffdetails, name='userdetails'),
path('tasks/<str:task_id>/', views.detailed_task, name='detailed-task'),
path('projectdetails/<str:project_id>/', views.detailed_project, name='detailed-project'),
path('projectdetails/<str:project_id>/', views.projectdetails, name='detailed-project'),
path('tasks/<str:task_id>/', views.taskdetails, name='detailed-task'),
path('show-points/<str:task_id>/', views.show_points_modal, name='showpoints'),
path('timeline/', views.timeline_modal, name='timeline'),
@ -58,64 +65,11 @@ urlpatterns = [
#Fetch urls
path('get_tasks/<int:epic_id>/', views.get_tasks, name='get_tasks'),
path('open_tasks_for_project/<int:project_id>/', views.open_tasks_for_project, name='open_tasks_for_project'),
#Modals urls
path('update-status/<str:task_id>/', views.update_status_modal, name='updatestatus'),
path('show-points/<str:task_id>/', views.show_points_modal, name='showpoints'),
path('timeline/', views.timeline_modal, name='timeline'),
path('add-businesscustomer/', views.add_business_modal, name='addbusinesscustomer'),
path('statusmobilemodal/', views.status_mobile_modal, name='statusmobilemodal'),
path('userrecentativities/<int:user_id>', views.user_recent_activities_modal, name='userrecentativities'),
#Delete Modals
path('deletecustomermodal/<int:customer_id>', views.delete_customer_modal, name='deletecustomermodal'),
path('deletebusinessmodal/<int:business_id>', views.delete_business_modal, name='deletebusinessmodal'),
path('deletestaffmodal/<int:staff_id>', views.delete_staff_modal, name='deletestaffmodal'),
path('deleteprojectmodal/<int:project_id>', views.delete_project_modal, name='deleteprojectmodal'),
path('deletetaskmodal/<int:task_id>', views.delete_task_modal, name='deletetaskmodal'),
path('deletenotemodal/<int:note_id>', views.delete_note_modal, name='deletenotemodal'),
path('deleteprojectnotemodal/<int:note_id>/', views.delete_project_note_modal, name='deleteprojectnotemodal'),
path('deletepointmodal/<int:point_id>/<str:task_id>/', views.delete_point_modal, name='deletepointmodal'),
path('deletetaskpointmodal/<int:point_id>/<str:task_id>/', views.delete_task_point_modal, name='deletetaskpointmodal'),
#Edit Pages
path('edit-project/<str:project_id>/', views.edit_project, name='editproject'),
path('edit-epic/', views.edit_epic, name='editepic'),
path('edit-task/<str:task_id>', views.edit_task, name='edittask'),
path('edit-customer/<str:customer_id>/', views.edit_customer, name='editcustomer'),
path('edit-business/<str:business_id>/', views.edit_business, name='editbusiness'),
path('edit-staff/<str:staff_id>/', views.edit_staff, name='editstaff'),
path('edit-projecttype/<int:projecttype_id>', views.edit_project_type, name='editprojecttype'),
path('edit-businesstype/<int:businesstype_id>', views.edit_business_type, name='editbusinesstype'),
path('edit-reference/<int:reference_id>', views.edit_reference, name='editreference'),
path('edit-tag/<int:tag_id>', views.edit_tag, name='edittag'),
path('edits-taffposition/', views.edit_staff_position, name='editstaffposition'),
path('mark_point_working_on/<int:point_id>/<str:task_id>/', views.mark_point_working_on, name='mark_point_working_on'),
path('mark_point_working_on_task_page/<int:point_id>/<str:task_id>/', views.mark_point_working_on_task_page, name='mark_point_working_on_task_page'),
path('mark_point_completed/<int:point_id>/<str:task_id>/', views.mark_point_completed, name='mark_point_completed'),
path('mark_point_completed_task_page/<int:point_id>/<str:task_id>/', views.mark_point_completed_task_page, name='mark_point_completed_task_page'),
path('mark_point_paused/<int:point_id>/<str:task_id>/', views.mark_point_paused, name='mark_point_paused'),
#Fetch Urls
path('getupdatedlaststatus/', views.get_updated_last_status, name='getupdatedlaststatus'),
path('getupdatedactivities/', views.get_latest_activities, name='getupdatedactivities'),
# TO FETCH THE EPICS OF THE SELECTED PROJECT WHEN EDITING A TASK
path('fetch_epics/', views.fetch_epics, name='fetch_epics'),
path('get_point_total_time/<int:point_id>/', views.get_point_total_time, name='get_point_total_time'),
#CUSTOMER DASHBOARD

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save