diff --git a/.DS_Store b/.DS_Store index cb86c58a..952c9f83 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/osinaweb/.DS_Store b/osinaweb/.DS_Store index e94e763c..58387e56 100644 Binary files a/osinaweb/.DS_Store and b/osinaweb/.DS_Store differ diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index bc866abc..f41da46d 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osinacore/.DS_Store b/osinaweb/osinacore/.DS_Store index 4f60abb2..bf21a061 100644 Binary files a/osinaweb/osinacore/.DS_Store and b/osinaweb/osinacore/.DS_Store differ diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc index 9a4b0edc..7fed1287 100644 Binary files a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc index 3ac9db1a..a55176bb 100644 Binary files a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc new file mode 100644 index 00000000..b54f5f17 Binary files /dev/null and b/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc new file mode 100644 index 00000000..8fd7241d Binary files /dev/null and b/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/add/urls.py b/osinaweb/osinacore/add/urls.py new file mode 100644 index 00000000..fa822197 --- /dev/null +++ b/osinaweb/osinacore/add/urls.py @@ -0,0 +1,32 @@ +from django.urls import path +from . import views + + +urlpatterns = [ + + path('status/', views.add_status_modal, name='addstatusmodal'), + + path('customer/', views.add_customer, name='addcustomer'), + path('business/', views.add_business, name='addbusiness'), + path('businessmodal/', views.add_business_modal, name='addbusinessmodal'), + path('staff/', views.add_staff, name='adduser'), + path('project/', views.add_project, name='addproject'), + path('projectnote//', views.add_project_note_modal, name='addprojectnotemodal'), + path('file/', views.add_file_modal, name='addfilemodal'), + path('credential/', views.add_credential_modal, name='addcredentialmodal'), + path('task/', views.add_task, name='addtask'), + path('task//', views.add_task, name='addprojecttask'), + path('task///', views.add_task, name='adduserstorytask'), + path('point//', views.add_point_modal, name='addpointmodal'), + path('epic//', views.add_epic, name='addepic'), + path('note/', views.add_note_modal, name='addnotemodal'), + path('dailyreport/', views.add_daily_report, name='adddailyreport'), + path('projecttype/', views.add_projecttype_modal, name='addprojecttypemodal'), + path('staffposition/', views.add_staffposition_modal, name='addstaffpositionmodal'), + path('businesstype/', views.add_businesstype_modal, name='addbusinesstypemodal'), + path('reference/', views.add_reference_modal, name='addreferencemodal'), + path('tag/', views.add_tag_modal, name='addtagmodal'), + + + +] \ No newline at end of file diff --git a/osinaweb/osinacore/add/views.py b/osinaweb/osinacore/add/views.py new file mode 100644 index 00000000..8cb9a252 --- /dev/null +++ b/osinaweb/osinacore/add/views.py @@ -0,0 +1,626 @@ +from django.shortcuts import render, redirect, get_object_or_404 +from osinacore.models import * +from django.contrib.auth.decorators import login_required +from django.http import HttpResponse +from django.urls import reverse +from django.http import HttpResponseRedirect +from datetime import date +from django.http import JsonResponse + + + +def add_status_modal(request, *args, **kwargs): + if request.method == 'POST': + text = request.POST.get('text') + current_datetime = datetime.now() + date = datetime.now().date() + time = current_datetime.strftime("%I:%M %p") + + try: + staff_profile = StaffProfile.objects.get(user=request.user) + except StaffProfile.DoesNotExist: + # Handle the case where a StaffProfile does not exist for the user + staff_profile = None + + status = Status( + text=text, + staff=staff_profile, + date=date, + time = time, + ) + status.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-status-modal.html') + + + +@login_required +def add_customer(request): + businesses = Business.objects.all().order_by('-id') + references = Reference.objects.all().order_by('-id') + business_types = BusinessType.objects.all().order_by('-id') + + if request.method == 'POST': + email = request.POST.get('email').lower() + first_name = request.POST.get('first_name') + last_name = request.POST.get('last_name') + business_id = request.POST.get('business') + business = get_object_or_404(Business, id=business_id) + username = f"{first_name.lower()}{last_name.lower()}" + original_username = username + counter = 1 + + while User.objects.filter(username=username).exists(): + username = f"{original_username.lower()}{counter}" + counter += 1 + + user = User.objects.create_user( + username=username, + email=email, + password=request.POST.get('password2') + ) + user.first_name = first_name.lower().capitalize() + user.last_name = last_name.lower().capitalize() + user.save() + + + referenceid = request.POST.get('referenceid') + reference = get_object_or_404(Reference, id=referenceid) + + CustomerProfile.objects.create( + user=user, + mobile_number = request.POST.get('mobile_number'), + personal_website = request.POST.get('personal_website'), + status = request.POST.get('status'), + reference = reference, + business = business, + ) + return redirect('customers') + + context = { + 'businesses' : businesses, + 'references' :references, + 'business_types' : business_types + + } + return render(request, 'add_templates/add-customer.html', context) + + + +@login_required +def add_business(request): + business_types = BusinessType.objects.all().order_by('-id') + if request.method == 'POST': + name = request.POST.get('name') + email= request.POST.get('email') + financial_number = request.POST.get('financial_number') + phone_number = request.POST.get('phone_number') + vat = request.POST.get('vat') + if vat == 'true': + vat = True + else: + vat = False + commercial_registration = request.POST.get('commercial_registration') + website = request.POST.get('website') + logo = request.FILES.get('logo') + + business_type_id = request.POST.get('type') + + business_type = get_object_or_404(BusinessType, id=business_type_id) + + business = Business( + name = name, + email = email, + financial_number = financial_number, + vat = vat, + commercial_registration = commercial_registration, + website = website, + type=business_type, + logo = logo, + phone_number = phone_number, + ) + business.save() + + return redirect('businesses') + + context = { + 'business_types': business_types, + } + + return render(request, 'add_templates/add-business.html', context) + + + + + + +@login_required +def add_business_modal(request): + if request.method == 'POST': + name = request.POST.get('name') + email = request.POST.get('email') + financial_number = request.POST.get('financial_number') + phone_number = request.POST.get('phone_number') + vat = request.POST.get('vat') + if vat == 'true': + vat = True + else: + vat = False + commercial_registration = request.POST.get('commercial_registration') + website = request.POST.get('website') + logo = request.FILES.get('logo') + + business_type_id = request.POST.get('type') + business_type = get_object_or_404(BusinessType, id=business_type_id) + + business = Business( + name=name, + email=email, + financial_number=financial_number, + vat=vat, + commercial_registration=commercial_registration, + website=website, + type=business_type, + logo=logo, + phone_number=phone_number, + ) + business.save() + + + businesses = Business.objects.all() + + updated_options = [{'id': business.id, 'name': business.name} for business in businesses] + + + return JsonResponse(updated_options, safe=False) + + + return render(request, 'add_templates/addbusiness-modal.html') + + +@login_required +def add_staff(request): + staffpositions = StaffPosition.objects.all().order_by('-id') + if request.method == 'POST': + email = request.POST.get('email').lower() + first_name = request.POST.get('first_name') + last_name = request.POST.get('last_name') + username = f"{first_name.lower()}{last_name.lower()}" + original_username = username + counter = 1 + + while User.objects.filter(username=username).exists(): + username = f"{original_username.lower()}{counter}" + counter += 1 + + user = User.objects.create_user( + username=username, + email=email, + password= request.POST.get('password2') + ) + user.first_name = first_name.lower().capitalize() + user.last_name = last_name.lower().capitalize() + user.save() + + staff_positionid = request.POST.get('staff_position') + staff_position = get_object_or_404(StaffPosition, id=staff_positionid) + + StaffProfile.objects.create( + user=user, + image = request.FILES.get('image'), + mobile_number = request.POST.get('mobile_number'), + active = request.POST.get('active'), + intern = request.POST.get('intern'), + staff_position = staff_position, + ) + return redirect('users') + + context = { + 'staffpositions' : staffpositions, + } + return render(request, 'add_templates/add-staff.html', context) + + + +@login_required +def add_project(request): + staffs = StaffProfile.objects.all().order_by('-id') + project_types = ProjectType.objects.all() + customers = CustomerProfile.objects.all().order_by('-id') + if request.method == 'POST': + name = request.POST.get('name') + + customerid = request.POST.get('customer') + customer = get_object_or_404(CustomerProfile, id=customerid) + + managerid = request.POST.get('manager') + manager = get_object_or_404(StaffProfile, id=managerid) + + + project_type = request.POST.getlist('project_type') + details = request.POST.get('details') + membersids = request.POST.getlist('members') + status = request.POST.get('status') + start_date = request.POST.get('start_date') + end_date = request.POST.get('end_date') + + + project = Project( + name=name, + customer=customer, + manager=manager, + details=details, + status=status, + start_date=start_date, + end_date=end_date, + ) + project.save() + + project.project_type.set(project_type) + project.members.set(membersids) + + requirements = request.POST.getlist('requirements') + for requirement_content in requirements: + if requirement_content: + requirement = ProjectRequirement(content=requirement_content, project=project, added_by=request.user) + requirement.save() + + return redirect('my-projects') + + + context = { + 'staffs' : staffs, + 'project_types' : project_types, + 'customers' : customers, + + } + return render(request, 'add_templates/add-project.html', context) + + + + +def add_project_note_modal(request, project_id): + project = get_object_or_404(Project, project_id=project_id) + if request.method == 'POST': + text = request.POST.get('note_text') + color = request.POST.get('note_color') + user = request.user + date = timezone.now() + + note = Note( + text=text, + color=color, + user=user, + date=date, + project=project, + ) + note.save() + + return HttpResponse('') + + context = { + 'project' : project + } + + return render(request, 'add_templates/add-project-note-modal.html', context) + + + + +def add_file_modal(request, *args, **kwargs): + + context = { + + } + return render(request, 'add_templates/add-file-modal.html', context) + +def add_credential_modal(request, *args, **kwargs): + context = { + + } + return render(request, 'add_templates/add-credentials-modal.html', context) + + + + +@login_required +def add_task(request, project_id=None, requirement_id=None): + project = None + requirement = None + epics_of_my_project = None + projects = None + + + if project_id: #Case where user wants to add task from project page(Adding a task for a project) + project = get_object_or_404(Project, project_id=project_id) + epics_of_my_project = Epic.objects.filter(project=project) + if requirement_id: + requirement = get_object_or_404(ProjectRequirement, id=requirement_id) + + + else: #Case where user wants to add task from tasks page(No project specified) + projects = Project.objects.all().order_by('-id') + + + staffs = StaffProfile.objects.all().order_by('-id') + + + if request.method == 'POST': + name = request.POST.get('name') + status = request.POST.get('status') + extra = request.POST.get('extra') + description = request.POST.get('description') + start_date = request.POST.get('start_date') + end_date = request.POST.get('end_date') + + + + if not project_id: + project_id = request.POST.get('project') + project = get_object_or_404(Project, id=project_id) + + epic_id = request.POST.get('epic') + epic = get_object_or_404(Epic, id=epic_id) + + + assigned_to_id = request.POST.get('assigned_to') + assigned_to = get_object_or_404(StaffProfile, id=assigned_to_id) + + task = Task( + name=name, + status=status, + project=project, + epic=epic, + extra=extra, + description=description, + start_date=start_date, + end_date=end_date, + assigned_to = assigned_to, + requirement = requirement, + + ) + + task.save() + + + task_details_url = reverse('detailed-task', args=[task.task_id]) + if requirement: + return redirect('detailed-project', project_id=project.project_id) + else: + return HttpResponseRedirect(task_details_url) + + + context = { + 'project':project, + 'epics_of_my_project' : epics_of_my_project, + 'staffs' : staffs, + 'projects' : projects, + 'requirement' : requirement + + + } + return render(request, 'add_templates/add-task.html', context) + + + + +def add_point_modal(request, task_id): + task = get_object_or_404(Task, task_id=task_id) + if request.method == 'POST': + text = request.POST.get('text') + point = Point( + text = text, + task = task, + status='Not Completed' + ) + point.save() + + # Redirect back to the same page + return redirect(request.META.get('HTTP_REFERER', '')) + + context = { + 'task' : task, + + } + return render(request, 'add_templates/add-point-modal.html', context) + + + + + +@login_required +def add_epic(request, project_id): + project = get_object_or_404(Project, project_id=project_id) + if request.method == 'POST': + title = request.POST.get('title') + status = request.POST.get('status') + description = request.POST.get('description') + + + project_id = request.POST.get('project') + project = get_object_or_404(Project, id=project_id) + + + start_date = request.POST.get('start_date') + end_date = request.POST.get('end_date') + + + epic = Epic( + title=title, + status=status, + project=project, + description=description, + start_date=start_date, + end_date=end_date + ) + + + epic.save() + + redirect_url = reverse('detailed-project', args=[project.project_id]) + return redirect(redirect_url) + + context = { + 'project' : project, + } + return render(request, 'add_templates/add-epic.html', context) + + + + +def add_note_modal(request, *args, **kwargs): + if request.method == 'POST': + text = request.POST.get('note_text') + color = request.POST.get('note_color') + user = request.user + date = timezone.now() + + note = Note( + text=text, + color=color, + user=user, + date=date, + ) + note.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-note-modal.html') + + + +def add_daily_report(request): + user = request.user + today = date.today() + statuses = Status.objects.filter(staff=user.staffprofile, date=today) + if request.method == 'POST': + text = request.POST.get('text') + current_datetime = datetime.now() + date = datetime.now().date() + time = current_datetime.strftime("%I:%M %p") + try: + staff_profile = StaffProfile.objects.get(user=request.user) + except StaffProfile.DoesNotExist: + # Handle the case where a StaffProfile does not exist for the user + staff_profile = None + + + dailyreport = DailyReport( + text = text, + date = date, + time = time, + staff = staff_profile + ) + dailyreport.save() + + + return redirect('dailyreports') + + context = { + 'statuses': statuses, + + + } + return render(request, 'add_templates/add-daily-report.html', context) + + + + +def add_projecttype_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + projecttype = ProjectType( + name = name, + + ) + projecttype.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-projecttype-modal.html') + + + +def add_staffposition_modal(request): + if request.method == 'POST': + name = request.POST.get('name') + staffposition = StaffPosition( + name = name, + + + ) + staffposition.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-staffposition-modal.html') + + + +def add_businesstype_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + + + businesstype = BusinessType( + name = name, + ) + businesstype.save() + + + # Reload the parent page + return HttpResponse('') + + return render(request, 'add_templates/add-businesstype-modal.html') + + + + + +def add_reference_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + date = request.POST.get('date') + + + reference = Reference( + name = name, + date = date, + ) + reference.save() + + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-reference-modal.html') + + + + +def add_tag_modal(request, *args, **kwargs): + if request.method == 'POST': + name = request.POST.get('name') + + + tag = Tag( + name = name, + ) + tag.save() + + # Reload the parent page + return HttpResponse('') + return render(request, 'add_templates/add-tag-modal.html') + + + + + + + + + + + + diff --git a/osinaweb/osinacore/templates/.DS_Store b/osinaweb/osinacore/templates/.DS_Store new file mode 100644 index 00000000..9cd29b59 Binary files /dev/null and b/osinaweb/osinacore/templates/.DS_Store differ diff --git a/osinaweb/osinacore/templates/add_templates/.DS_Store b/osinaweb/osinacore/templates/add_templates/.DS_Store new file mode 100644 index 00000000..501a2469 Binary files /dev/null and b/osinaweb/osinacore/templates/add_templates/.DS_Store differ diff --git a/osinaweb/templates/add_pages/add-business.html b/osinaweb/osinacore/templates/add_templates/add-business.html similarity index 97% rename from osinaweb/templates/add_pages/add-business.html rename to osinaweb/osinacore/templates/add_templates/add-business.html index 3b27f5b3..63f901eb 100644 --- a/osinaweb/templates/add_pages/add-business.html +++ b/osinaweb/osinacore/templates/add_templates/add-business.html @@ -8,7 +8,7 @@ Add Business -
+ {% csrf_token %}
diff --git a/osinaweb/templates/popup_modals/addbusinesstype-modal.html b/osinaweb/osinacore/templates/add_templates/add-businesstype-modal.html similarity index 92% rename from osinaweb/templates/popup_modals/addbusinesstype-modal.html rename to osinaweb/osinacore/templates/add_templates/add-businesstype-modal.html index 74bd0939..63c60221 100644 --- a/osinaweb/templates/popup_modals/addbusinesstype-modal.html +++ b/osinaweb/osinacore/templates/add_templates/add-businesstype-modal.html @@ -13,7 +13,7 @@ - + {% csrf_token %}

Add Business Type

diff --git a/osinaweb/templates/popup_modals/addcredentials-modal.html b/osinaweb/osinacore/templates/add_templates/add-credentials-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/addcredentials-modal.html rename to osinaweb/osinacore/templates/add_templates/add-credentials-modal.html diff --git a/osinaweb/templates/add_pages/add-customer.html b/osinaweb/osinacore/templates/add_templates/add-customer.html similarity index 98% rename from osinaweb/templates/add_pages/add-customer.html rename to osinaweb/osinacore/templates/add_templates/add-customer.html index b9e32856..c365a370 100644 --- a/osinaweb/templates/add_pages/add-customer.html +++ b/osinaweb/osinacore/templates/add_templates/add-customer.html @@ -7,7 +7,7 @@

Add Customer

- + {% csrf_token %}
@@ -129,7 +129,7 @@ @@ -71,25 +70,46 @@
-
-
+ +
diff --git a/osinaweb/templates/epic-fetched-tasks.html b/osinaweb/osinacore/templates/epic-fetched-tasks.html similarity index 100% rename from osinaweb/templates/epic-fetched-tasks.html rename to osinaweb/osinacore/templates/epic-fetched-tasks.html diff --git a/osinaweb/templates/index.html b/osinaweb/osinacore/templates/index.html similarity index 98% rename from osinaweb/templates/index.html rename to osinaweb/osinacore/templates/index.html index 191fb4e3..0f2ff11e 100644 --- a/osinaweb/templates/index.html +++ b/osinaweb/osinacore/templates/index.html @@ -48,7 +48,7 @@
@@ -61,7 +61,7 @@ Notes
@@ -262,8 +262,8 @@ Status @@ -409,8 +409,8 @@ Status diff --git a/osinaweb/templates/listing_pages/business-types.html b/osinaweb/osinacore/templates/listing_pages/business-types.html similarity index 98% rename from osinaweb/templates/listing_pages/business-types.html rename to osinaweb/osinacore/templates/listing_pages/business-types.html index 624e2615..9434b5f1 100644 --- a/osinaweb/templates/listing_pages/business-types.html +++ b/osinaweb/osinacore/templates/listing_pages/business-types.html @@ -48,7 +48,7 @@
@@ -61,7 +61,7 @@ Notes @@ -129,7 +129,7 @@
diff --git a/osinaweb/templates/listing_pages/businesses.html b/osinaweb/osinacore/templates/listing_pages/businesses.html similarity index 99% rename from osinaweb/templates/listing_pages/businesses.html rename to osinaweb/osinacore/templates/listing_pages/businesses.html index c867d154..85c049f1 100644 --- a/osinaweb/templates/listing_pages/businesses.html +++ b/osinaweb/osinacore/templates/listing_pages/businesses.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/customers.html b/osinaweb/osinacore/templates/listing_pages/customers.html similarity index 99% rename from osinaweb/templates/listing_pages/customers.html rename to osinaweb/osinacore/templates/listing_pages/customers.html index f8eb2e10..bb495755 100644 --- a/osinaweb/templates/listing_pages/customers.html +++ b/osinaweb/osinacore/templates/listing_pages/customers.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/daily-reports.html b/osinaweb/osinacore/templates/listing_pages/daily-reports.html similarity index 99% rename from osinaweb/templates/listing_pages/daily-reports.html rename to osinaweb/osinacore/templates/listing_pages/daily-reports.html index ff049424..2fe245ca 100644 --- a/osinaweb/templates/listing_pages/daily-reports.html +++ b/osinaweb/osinacore/templates/listing_pages/daily-reports.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/notes.html b/osinaweb/osinacore/templates/listing_pages/notes.html similarity index 98% rename from osinaweb/templates/listing_pages/notes.html rename to osinaweb/osinacore/templates/listing_pages/notes.html index ca6c9fa1..79b52794 100644 --- a/osinaweb/templates/listing_pages/notes.html +++ b/osinaweb/osinacore/templates/listing_pages/notes.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes @@ -117,7 +117,7 @@
diff --git a/osinaweb/templates/listing_pages/project-types.html b/osinaweb/osinacore/templates/listing_pages/project-types.html similarity index 98% rename from osinaweb/templates/listing_pages/project-types.html rename to osinaweb/osinacore/templates/listing_pages/project-types.html index bd62a585..ed86934c 100644 --- a/osinaweb/templates/listing_pages/project-types.html +++ b/osinaweb/osinacore/templates/listing_pages/project-types.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes @@ -129,7 +129,7 @@
diff --git a/osinaweb/templates/listing_pages/projects.html b/osinaweb/osinacore/templates/listing_pages/projects.html similarity index 99% rename from osinaweb/templates/listing_pages/projects.html rename to osinaweb/osinacore/templates/listing_pages/projects.html index a0a697bc..c63a81de 100644 --- a/osinaweb/templates/listing_pages/projects.html +++ b/osinaweb/osinacore/templates/listing_pages/projects.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes @@ -136,7 +136,7 @@
@@ -61,7 +61,7 @@ Notes @@ -128,7 +128,7 @@
diff --git a/osinaweb/templates/listing_pages/staff-positions.html b/osinaweb/osinacore/templates/listing_pages/staff-positions.html similarity index 99% rename from osinaweb/templates/listing_pages/staff-positions.html rename to osinaweb/osinacore/templates/listing_pages/staff-positions.html index 558d568d..20bdc9c7 100644 --- a/osinaweb/templates/listing_pages/staff-positions.html +++ b/osinaweb/osinacore/templates/listing_pages/staff-positions.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes @@ -130,7 +130,7 @@
diff --git a/osinaweb/templates/listing_pages/staffs.html b/osinaweb/osinacore/templates/listing_pages/staffs.html similarity index 99% rename from osinaweb/templates/listing_pages/staffs.html rename to osinaweb/osinacore/templates/listing_pages/staffs.html index b293e68b..17034b7e 100644 --- a/osinaweb/templates/listing_pages/staffs.html +++ b/osinaweb/osinacore/templates/listing_pages/staffs.html @@ -49,7 +49,7 @@ @@ -62,7 +62,7 @@ Notes diff --git a/osinaweb/templates/listing_pages/tags.html b/osinaweb/osinacore/templates/listing_pages/tags.html similarity index 98% rename from osinaweb/templates/listing_pages/tags.html rename to osinaweb/osinacore/templates/listing_pages/tags.html index bc971fb4..752101ac 100644 --- a/osinaweb/templates/listing_pages/tags.html +++ b/osinaweb/osinacore/templates/listing_pages/tags.html @@ -48,7 +48,7 @@ @@ -61,7 +61,7 @@ Notes @@ -129,7 +129,7 @@
diff --git a/osinaweb/templates/listing_pages/tasks.html b/osinaweb/osinacore/templates/listing_pages/tasks.html similarity index 98% rename from osinaweb/templates/listing_pages/tasks.html rename to osinaweb/osinacore/templates/listing_pages/tasks.html index 36824c31..1dc3c70f 100644 --- a/osinaweb/templates/listing_pages/tasks.html +++ b/osinaweb/osinacore/templates/listing_pages/tasks.html @@ -47,7 +47,7 @@ @@ -60,7 +60,7 @@ Notes @@ -143,7 +143,7 @@
diff --git a/osinaweb/templates/.DS_Store b/osinaweb/osinacore/templates/popup_modals/.DS_Store similarity index 79% rename from osinaweb/templates/.DS_Store rename to osinaweb/osinacore/templates/popup_modals/.DS_Store index 1ee323e7..4a373ee2 100644 Binary files a/osinaweb/templates/.DS_Store and b/osinaweb/osinacore/templates/popup_modals/.DS_Store differ diff --git a/osinaweb/templates/popup_modals/add-project-note-modal.html b/osinaweb/osinacore/templates/popup_modals/add-project-note-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/add-project-note-modal.html rename to osinaweb/osinacore/templates/popup_modals/add-project-note-modal.html diff --git a/osinaweb/osinacore/templates/popup_modals/add-userstory-modal.html b/osinaweb/osinacore/templates/popup_modals/add-userstory-modal.html new file mode 100644 index 00000000..e0616879 --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/add-userstory-modal.html @@ -0,0 +1,32 @@ +{% load static %} + + + + + + + Osina + + + + + + + + + {% csrf_token %} +

Add User Story

+ +
+ +
+ +
+ +
+
+ + \ No newline at end of file diff --git a/osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html b/osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html new file mode 100644 index 00000000..0f4bff0f --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/addcredentials-modal.html @@ -0,0 +1,39 @@ +{% load static %} + + + + + + + + Osina + + + + + + + +
+

Add Credential

+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + \ No newline at end of file diff --git a/osinaweb/osinacore/templates/popup_modals/addfile-modal.html b/osinaweb/osinacore/templates/popup_modals/addfile-modal.html new file mode 100644 index 00000000..ff6dd06a --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/addfile-modal.html @@ -0,0 +1,86 @@ +{% load static %} + + + + + + + + Osina + + + + + + + +
+

Add File

+ +
+
+ +
+ + + +
+
+ + Upload + Document(s) + +
+
+ +
+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/osinaweb/templates/popup_modals/addtag-modal.html b/osinaweb/osinacore/templates/popup_modals/addtag-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/addtag-modal.html rename to osinaweb/osinacore/templates/popup_modals/addtag-modal.html diff --git a/osinaweb/osinacore/templates/popup_modals/addtime-modal.html b/osinaweb/osinacore/templates/popup_modals/addtime-modal.html new file mode 100644 index 00000000..1e2375de --- /dev/null +++ b/osinaweb/osinacore/templates/popup_modals/addtime-modal.html @@ -0,0 +1,33 @@ +{% load static %} + + + + + + + Osina + + + + + + + +
+

Add Timeline

+ +
+ + + +
+ +

Value in minutes

+ +
+ +
+
+ + \ No newline at end of file diff --git a/osinaweb/templates/popup_modals/showpoints-modal.html b/osinaweb/osinacore/templates/popup_modals/showpoints-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/showpoints-modal.html rename to osinaweb/osinacore/templates/popup_modals/showpoints-modal.html diff --git a/osinaweb/templates/popup_modals/status-on-mobile-modal.html b/osinaweb/osinacore/templates/popup_modals/status-on-mobile-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/status-on-mobile-modal.html rename to osinaweb/osinacore/templates/popup_modals/status-on-mobile-modal.html diff --git a/osinaweb/templates/popup_modals/timeline-modal.html b/osinaweb/osinacore/templates/popup_modals/timeline-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/timeline-modal.html rename to osinaweb/osinacore/templates/popup_modals/timeline-modal.html diff --git a/osinaweb/templates/popup_modals/update-status-modal.html b/osinaweb/osinacore/templates/popup_modals/update-status-modal.html similarity index 100% rename from osinaweb/templates/popup_modals/update-status-modal.html rename to osinaweb/osinacore/templates/popup_modals/update-status-modal.html diff --git a/osinaweb/templates/project-open-tasks.html b/osinaweb/osinacore/templates/project-open-tasks.html similarity index 100% rename from osinaweb/templates/project-open-tasks.html rename to osinaweb/osinacore/templates/project-open-tasks.html diff --git a/osinaweb/templates/recent-activities.html b/osinaweb/osinacore/templates/recent-activities.html similarity index 100% rename from osinaweb/templates/recent-activities.html rename to osinaweb/osinacore/templates/recent-activities.html diff --git a/osinaweb/templates/recent-status.html b/osinaweb/osinacore/templates/recent-status.html similarity index 100% rename from osinaweb/templates/recent-status.html rename to osinaweb/osinacore/templates/recent-status.html diff --git a/osinaweb/templates/user-recent-activities.html b/osinaweb/osinacore/templates/user-recent-activities.html similarity index 100% rename from osinaweb/templates/user-recent-activities.html rename to osinaweb/osinacore/templates/user-recent-activities.html diff --git a/osinaweb/osinacore/urls.py b/osinaweb/osinacore/urls.py index d113a59c..c31367fb 100644 --- a/osinaweb/osinacore/urls.py +++ b/osinaweb/osinacore/urls.py @@ -14,12 +14,15 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ -from django.urls import path +from django.urls import path, include from osinacore import views from django.conf.urls.static import static from django.conf import settings urlpatterns = [ + path('add/', include('osinacore.add.urls')), + + path('login', views.signin, name='signin'), path('logout/', views.signout, name='signout'), path('', views.home, name='home'), @@ -27,25 +30,16 @@ urlpatterns = [ path('my-tasks/', views.my_tasks, name='my-tasks'), path('my-notes/', views.my_notes, name='my-notes'), path('customers/', views.customers, name='customers'), - path('addcustomer/', views.add_customer, name='addcustomer'), - path('add-business/', views.addbusiness, name='addbusiness'), path('businesses//', views.businessdetails, name='businessdetails'), path('businesses/', views.businesses, name='businesses'), - path('addstaff/', views.addstaff, name='adduser'), path('staffs/', views.staffs, name='users'), path('staffpositions/', views.staff_positions, name='staffpositions'), - path('createproject/', views.create_project, name='createproject'), - path('createepic//', views.create_epic, name='createepic'), - path('createtask/', views.create_task, name='createtask'), - path('createtask//', views.createtask_project, name='createtaskproject'), - path('createuserstorytask//', views.create_user_story_task, name='createuserstorytask'), - path('createtaskepic/', views.createtask_epic, name='createtaskepic'), path('projecttypes/', views.project_types, name='projecttypes'), 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'), - path('add-dailyreport/', views.add_daily_report, name='adddailyreport'), + @@ -67,23 +61,12 @@ urlpatterns = [ #Modals urls - path('add-status/', views.add_status_modal, name='addstatus'), - path('add-note/', views.add_note_modal, name='addnote'), - path('add-project-note//', views.add_project_note_modal, name='addprojectnote'), - path('add-file/', views.add_file_modal, name='addfile'), path('add-user-story//', views.add_user_story_modal, name='adduserstory'), - path('add-credentials/', views.add_credentials_modal, name='addcredentials'), path('update-status//', views.update_status_modal, name='updatestatus'), - path('add-point//', views.add_point_modal, name='addpoint'), path('show-points//', views.show_points_modal, name='showpoints'), - path('add-time/', views.add_time_modal, name='addtime'), path('timeline/', views.timeline_modal, name='timeline'), - path('add-projecttype/', views.add_projecttype_modal, name='addprojecttype'), - path('add-businesstype/', views.add_businesstype_modal, name='addbusinesstype'), - path('add-reference/', views.add_reference_modal, name='addreference'), - path('add-tag/', views.add_tag_modal, name='addtag'), path('add-businesscustomer/', views.add_business_modal, name='addbusinesscustomer'), - path('add-staffposition/', views.staff_position_modal, name='addstaffposition'), + path('statusmobilemodal/', views.status_mobile_modal, name='statusmobilemodal'), path('userrecentativities/', views.user_recent_activities_modal, name='userrecentativities'), @@ -101,24 +84,7 @@ urlpatterns = [ path('deletetaskpointmodal///', views.delete_task_point_modal, name='deletetaskpointmodal'), - #Save Urls - path('save_note/', views.save_note, name='save_note'), - path('save_project_note/', views.save_project_note, name='save_project_note'), - path('save_project/', views.save_project, name='save_project'), - path('save_epic/', views.save_epic, name='save_epic'), - path('save_task/', views.save_task, name='save_task'), - path('save_business/', views.save_business, name='save_business'), - path('save_business_modal/', views.save_business_modal, name='save_business_modal'), - path('save_customer/', views.save_customer, name='save_customer'), - path('save_staff/', views.save_staff, name='save_staff'), - path('save_status/', views.save_status, name='save_status'), - path('save_projecttype/', views.save_projecttype, name='save_projecttype'), - path('save_businesstype/', views.save_businesstype, name='save_businesstype'), - path('save_reference/', views.save_reference, name='save_reference'), - path('save_tag/', views.save_tag, name='save_tag'), - path('save_point/', views.save_point, name='save_point'), - path('save_staffposition/', views.save_staffposition, name='save_staffposition'), - path('save_dailyreport/', views.save_dailyreport, name='save_dailyreport'), + #Edit Pages diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index 40531d29..08b5b4e4 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -11,7 +11,6 @@ from django.db.models import Q from django.http import JsonResponse from .models import Task, Epic from datetime import date -from django.http import HttpResponseRedirect from django.template.loader import render_to_string from .custom_context import calculate_time_ago @@ -345,184 +344,15 @@ def detailed_task(request, task_id): #Add Pages -@login_required -def createtask_project(request, project_id): - project = get_object_or_404(Project, project_id=project_id) - epics_of_my_project = Epic.objects.filter(project=project) - staffs = StaffProfile.objects.all().order_by('-id') - context = { - - 'project' : project, - 'epics_of_my_project' : epics_of_my_project, - 'staffs' : staffs, - - } - return render(request, 'add_pages/createtask-project.html', context) - - -@login_required -def create_user_story_task(request, requirement_id): - requirement = get_object_or_404(ProjectRequirement, id=requirement_id) - members_list = list(requirement.project.members.all()) - - context = { - 'requirement' : requirement, - 'members_list' : members_list, - - - } - return render(request, 'add_pages/create-user-story-task.html', context) - - -@login_required -def create_project(request): - staffs = StaffProfile.objects.all().order_by('-id') - project_types = ProjectType.objects.all() - customers = CustomerProfile.objects.all().order_by('-id') - context = { - 'staffs' : staffs, - 'project_types' : project_types, - 'customers' : customers, - - } - return render(request, 'add_pages/create-project.html', context) - -@login_required -def create_epic(request, project_id): - project = get_object_or_404(Project, project_id=project_id) - - context = { - 'project' : project, - - - } - return render(request, 'add_pages/create-epic.html', context) - -@login_required -def create_task(request): - context = { - - } - return render(request, 'add_pages/create-task.html', context) - - -@login_required -def createtask_epic(request): - context = { - - } - return render(request, 'add_pages/createtask-epic.html', context) - -@login_required -def add_customer(request): - businesses = Business.objects.all().order_by('-id') - references = Reference.objects.all().order_by('-id') - business_types = BusinessType.objects.all().order_by('-id') - - context = { - 'businesses' : businesses, - 'references' :references, - 'business_types' : business_types - - } - return render(request, 'add_pages/add-customer.html', context) - - -@login_required -def addbusiness(request): - business_types = BusinessType.objects.all().order_by('-id') - - context = { - 'business_types': business_types, - } - - return render(request, 'add_pages/add-business.html', context) - - - -@login_required -def addstaff(request): - - staffpositions = StaffPosition.objects.all().order_by('-id') - - context = { - - 'staffpositions' : staffpositions, - - - } - return render(request, 'add_pages/add-staff.html', context) - - - - -def add_daily_report(request): - user = request.user - today = date.today() - statuses = Status.objects.filter(staff=user.staffprofile, date=today) - - context = { - 'statuses': statuses, - - - } - return render(request, 'add_pages/add-daily-report.html', context) - - - - # Modals views -def add_note_modal(request, *args, **kwargs): - context = { - } - return render(request, 'popup_modals/addnote-modal.html', context) -def add_project_note_modal(request, project_id): - project = get_object_or_404(Project, project_id=project_id) - context = { - 'project' : project - } - - return render(request, 'popup_modals/add-project-note-modal.html', context) - - -def add_status_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addstatus-modal.html', context) - -def add_file_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addfile-modal.html', context) - -def add_credentials_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addcredentials-modal.html', context) - - -def add_point_modal(request, task_id): - task = get_object_or_404(Task, task_id=task_id) - context = { - 'task' : task, - - } - return render(request, 'popup_modals/addpoint-modal.html', context) -def add_time_modal(request, *args, **kwargs): - context = { - } - return render(request, 'popup_modals/addtime-modal.html', context) def show_points_modal(request, task_id): @@ -561,35 +391,6 @@ def update_status_modal(request, *, task_id): return render(request, 'popup_modals/update-status-modal.html', context) -def add_projecttype_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addprojecttype-modal.html', context) - - -def add_businesstype_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addbusinesstype-modal.html', context) - - - -def add_reference_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addreference-modal.html', context) - - - -def add_tag_modal(request, *args, **kwargs): - context = { - - } - return render(request, 'popup_modals/addtag-modal.html', context) - def add_business_modal(request, *args, **kwargs): @@ -628,13 +429,6 @@ def add_user_story_modal(request, project_id): -def staff_position_modal(request): - - context = { - - - } - return render(request, 'popup_modals/add-staffposition-modal.html', context) def status_mobile_modal (request, *args, **kwargs): @@ -674,540 +468,7 @@ def user_recent_activities_modal(request, user_id): - - - - - - - - -#Save Functions -@login_required -def save_note(request): - if request.method == 'POST': - text = request.POST.get('note_text') - color = request.POST.get('note_color') - user = request.user - date = timezone.now() - - note = Note( - text=text, - color=color, - user=user, - date=date, - ) - note.save() - - # Reload the parent page - return HttpResponse('') - - return render(request, 'addnote-modal.html') - - -def save_project_note(request): - - if request.method == 'POST': - text = request.POST.get('note_text') - color = request.POST.get('note_color') - user = request.user - date = timezone.now() - - project_id = request.POST.get('project') - project = get_object_or_404(Project, id=project_id) - - note = Note( - text=text, - color=color, - user=user, - date=date, - project=project, - ) - note.save() - - return HttpResponse('') - - return render(request, 'add-project-note-modal.html') - - - -@login_required -def save_project(request): - if request.method == 'POST': - name = request.POST.get('name') - customer_username = request.POST.get('customer') - manager_username = request.POST.get('manager') - project_type = request.POST.getlist('project_type') - details = request.POST.get('details') - members_usernames = request.POST.getlist('members') - status = request.POST.get('status') - start_date = request.POST.get('start_date') - end_date = request.POST.get('end_date') - - try: - customer_profile = CustomerProfile.objects.get(user__username=customer_username) - manager_profile = StaffProfile.objects.get(user__username=manager_username) - members_profiles = StaffProfile.objects.filter(user__username__in=members_usernames) - except (CustomerProfile.DoesNotExist, StaffProfile.DoesNotExist): - # Handle the case where customer_profile or manager_profile is not found - pass - - # Create and save the project - project = Project( - name=name, - customer=customer_profile, - manager=manager_profile, - details=details, - status=status, - start_date=start_date, - end_date=end_date, - ) - project.save() - - project.project_type.set(project_type) - project.members.set(members_profiles) - - # Save project requirements - requirements = request.POST.getlist('requirements') - for requirement_content in requirements: - if requirement_content: - requirement = ProjectRequirement(content=requirement_content, project=project, added_by=request.user) - requirement.save() - - return redirect('my-projects') - - - -@login_required -def save_epic(request): - if request.method == 'POST': - title = request.POST.get('title') - status = request.POST.get('status') - description = request.POST.get('description') - - - project_id = request.POST.get('project') - project = get_object_or_404(Project, id=project_id) - - - start_date = request.POST.get('start_date') - end_date = request.POST.get('end_date') - - - epic = Epic( - title=title, - status=status, - project=project, - description=description, - start_date=start_date, - end_date=end_date - ) - - - epic.save() - - # Redirect to the detailed project page - redirect_url = reverse('detailed-project', args=[project.project_id]) - return redirect(redirect_url) - - - -@login_required -def save_task(request): - if request.method == 'POST': - name = request.POST.get('name') - status = request.POST.get('status') - extra = request.POST.get('extra') - description = request.POST.get('description') - start_date = request.POST.get('start_date') - end_date = request.POST.get('end_date') - requirement_id = request.POST.get('requirement') - - if requirement_id: - requirement = get_object_or_404(ProjectRequirement, id =requirement_id) - - else: - requirement = None - - - project_id = request.POST.get('project') - project = get_object_or_404(Project, id=project_id) - - epic_id = request.POST.get('epic') - epic = get_object_or_404(Epic, id=epic_id) - - - assigned_to_id = request.POST.get('assigned_to') - assigned_to = get_object_or_404(StaffProfile, id=assigned_to_id) - - task = Task( - name=name, - status=status, - project=project, - epic=epic, - extra=extra, - description=description, - start_date=start_date, - end_date=end_date, - assigned_to = assigned_to, - requirement = requirement, - - ) - - # Save the Task object to the database - task.save() - - - # Redirect to the task detailed page - task_details_url = reverse('detailed-task', args=[task.task_id]) - if requirement: - return redirect('detailed-project', project_id=project.project_id) - else: - return HttpResponseRedirect(task_details_url) - - - - -@login_required -def save_business(request): - if request.method == 'POST': - name = request.POST.get('name') - email= request.POST.get('email') - financial_number = request.POST.get('financial_number') - phone_number = request.POST.get('phone_number') - vat = request.POST.get('vat') - if vat == 'true': - vat = True - else: - vat = False - commercial_registration = request.POST.get('commercial_registration') - website = request.POST.get('website') - logo = request.FILES.get('logo') - - business_type_id = request.POST.get('type') - - business_type = get_object_or_404(BusinessType, id=business_type_id) - - business = Business( - name = name, - email = email, - financial_number = financial_number, - vat = vat, - commercial_registration = commercial_registration, - website = website, - type=business_type, - logo = logo, - phone_number = phone_number, - ) - business.save() - - return redirect(businesses) - - -@login_required -def save_business_modal(request): - if request.method == 'POST': - name = request.POST.get('name') - email = request.POST.get('email') - financial_number = request.POST.get('financial_number') - phone_number = request.POST.get('phone_number') - vat = request.POST.get('vat') - if vat == 'true': - vat = True - else: - vat = False - commercial_registration = request.POST.get('commercial_registration') - website = request.POST.get('website') - logo = request.FILES.get('logo') - - business_type_id = request.POST.get('type') - business_type = get_object_or_404(BusinessType, id=business_type_id) - - business = Business( - name=name, - email=email, - financial_number=financial_number, - vat=vat, - commercial_registration=commercial_registration, - website=website, - type=business_type, - logo=logo, - phone_number=phone_number, - ) - business.save() - - - businesses = Business.objects.all() - - updated_options = [{'id': business.id, 'name': business.name} for business in businesses] - - - return JsonResponse(updated_options, safe=False) - - return render(request, 'addbusiness-modal.html') - - -def save_customer(request): - if request.method == 'POST': - email = request.POST.get('email').lower() - first_name = request.POST.get('first_name') - last_name = request.POST.get('last_name') - business_id = request.POST.get('business') - business = get_object_or_404(Business, id=business_id) - username = f"{first_name.lower()}{last_name.lower()}" - original_username = username - counter = 1 - - while User.objects.filter(username=username).exists(): - username = f"{original_username.lower()}{counter}" - counter += 1 - - user = User.objects.create_user( - username=username, - email=email, - password=request.POST.get('password2') - ) - user.first_name = first_name.lower().capitalize() - user.last_name = last_name.lower().capitalize() - user.save() - - - referenceid = request.POST.get('referenceid') - reference = get_object_or_404(Reference, id=referenceid) - - CustomerProfile.objects.create( - user=user, - mobile_number = request.POST.get('mobile_number'), - personal_website = request.POST.get('personal_website'), - status = request.POST.get('status'), - reference = reference, - business = business, - ) - return redirect('customers') - - - -def save_staff(request): - if request.method == 'POST': - email = request.POST.get('email').lower() - first_name = request.POST.get('first_name') - last_name = request.POST.get('last_name') - username = f"{first_name.lower()}{last_name.lower()}" - original_username = username - counter = 1 - - while User.objects.filter(username=username).exists(): - username = f"{original_username.lower()}{counter}" - counter += 1 - - user = User.objects.create_user( - username=username, - email=email, - password= request.POST.get('password2') - ) - user.first_name = first_name.lower().capitalize() - user.last_name = last_name.lower().capitalize() - user.save() - - staff_positionid = request.POST.get('staff_position') - staff_position = get_object_or_404(StaffPosition, id=staff_positionid) - - StaffProfile.objects.create( - user=user, - image = request.FILES.get('image'), - mobile_number = request.POST.get('mobile_number'), - active = request.POST.get('active'), - intern = request.POST.get('intern'), - staff_position = staff_position, - ) - return redirect('users') - - - -@login_required -def save_status(request): - if request.method == 'POST': - text = request.POST.get('text') - current_datetime = datetime.now() - date = datetime.now().date() - time = current_datetime.strftime("%I:%M %p") - - try: - staff_profile = StaffProfile.objects.get(user=request.user) - except StaffProfile.DoesNotExist: - # Handle the case where a StaffProfile does not exist for the user - staff_profile = None - - status = Status( - text=text, - staff=staff_profile, - date=date, - time = time, - ) - status.save() - - # Reload the parent page - return HttpResponse('') - - return render(request, 'addstatus-modal.html') - - - -@login_required -def save_projecttype(request): - if request.method == 'POST': - name = request.POST.get('name') - - - projecttype = ProjectType( - name = name, - - ) - projecttype.save() - - - # Reload the parent page - return HttpResponse('') - - return redirect('projecttypes') - - -@login_required -def save_businesstype(request): - if request.method == 'POST': - name = request.POST.get('name') - - - businesstype = BusinessType( - name = name, - ) - businesstype.save() - - - # Reload the parent page - return HttpResponse('') - - return redirect('businesstypes') - - -@login_required -def save_reference(request): - if request.method == 'POST': - name = request.POST.get('name') - date = request.POST.get('date') - - - reference = Reference( - name = name, - date = date, - - ) - reference.save() - - - # Reload the parent page - return HttpResponse('') - - return redirect('references') - - - -@login_required -def save_tag(request): - if request.method == 'POST': - name = request.POST.get('name') - - - - tag = Tag( - name = name, - - - ) - tag.save() - - # Reload the parent page - return HttpResponse('') - - return redirect('tags') - - -@login_required -def save_staffposition(request): - if request.method == 'POST': - name = request.POST.get('name') - - - - staffposition = StaffPosition( - name = name, - - - ) - staffposition.save() - - # Reload the parent page - return HttpResponse('') - - return redirect('staffpositions') - - - - -@login_required -def save_point(request): - if request.method == 'POST': - text = request.POST.get('text') - task = request.POST.get('task') - - taskobj = get_object_or_404(Task, id=task) - - - point = Point( - text = text, - task = taskobj, - status='Not Completed' - ) - point.save() - - # Redirect back to the same page - return redirect(request.META.get('HTTP_REFERER', '')) - - - return render(request, 'addpoint-modal.html') - - - -@login_required -def save_dailyreport(request): - if request.method == 'POST': - text = request.POST.get('text') - current_datetime = datetime.now() - date = datetime.now().date() - time = current_datetime.strftime("%I:%M %p") - try: - staff_profile = StaffProfile.objects.get(user=request.user) - except StaffProfile.DoesNotExist: - # Handle the case where a StaffProfile does not exist for the user - staff_profile = None - - - dailyreport = DailyReport( - text = text, - date = date, - time = time, - staff = staff_profile - ) - dailyreport.save() - - - return redirect('dailyreports') - - - - - # EDIT TEMPLATES @@ -1294,12 +555,14 @@ def edit_task(request, task_id): if request.method == 'POST': task.name = request.POST.get('name') - # Convert project ID to a Project instance project_id = request.POST.get('project') project = get_object_or_404(Project, id=project_id) task.project = project - - # Convert epic ID to an Epic instance + + + task.extra = request.POST.get('extra') + + epic_id = request.POST.get('epic') epic = get_object_or_404(Epic, id=epic_id) task.epic = epic diff --git a/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc index 2b979d85..3545a689 100644 Binary files a/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc and b/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc differ diff --git a/osinaweb/osinaweb/settings.py b/osinaweb/osinaweb/settings.py index 56de931c..109622dc 100644 --- a/osinaweb/osinaweb/settings.py +++ b/osinaweb/osinaweb/settings.py @@ -63,7 +63,7 @@ ROOT_URLCONF = 'osinaweb.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')], + 'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'osinacore', 'templates'),], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ diff --git a/osinaweb/templates/add_pages/create-task.html b/osinaweb/templates/add_pages/create-task.html deleted file mode 100644 index 1e62e0eb..00000000 --- a/osinaweb/templates/add_pages/create-task.html +++ /dev/null @@ -1,129 +0,0 @@ -{% extends "main.html" %} -{%load static%} -{% block content %} - - - -
-
-

- Create Task -

- -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - Upload - Document(s) - -
-
-
- -
- -
-
-
-
- - - - - - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/osinaweb/templates/add_pages/create-user-story-task.html b/osinaweb/templates/add_pages/create-user-story-task.html deleted file mode 100644 index 9fdb0a73..00000000 --- a/osinaweb/templates/add_pages/create-user-story-task.html +++ /dev/null @@ -1,140 +0,0 @@ -{% extends "main.html" %} -{%load static%} -{% block content %} - - - -
-
-

- Create Task for {{requirement.content}} -

- -
- {% csrf_token %} -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - Upload - Document(s) - -
-
-
- -
- -
- -
-
-
- - - - - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/osinaweb/templates/add_pages/createtask-epic.html b/osinaweb/templates/add_pages/createtask-epic.html deleted file mode 100644 index 036a21d6..00000000 --- a/osinaweb/templates/add_pages/createtask-epic.html +++ /dev/null @@ -1,128 +0,0 @@ -{% extends "main.html" %} -{%load static%} -{% block content %} - - - -
-
-

- Create Task -

- -
-
- - -
- - -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - Upload - Document(s) - -
-
-
- -
- -
-
-
-
- - - - - - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/osinaweb/templates/popup_modals/addpoint-modal.html b/osinaweb/templates/popup_modals/addpoint-modal.html deleted file mode 100644 index 7ca87ef5..00000000 --- a/osinaweb/templates/popup_modals/addpoint-modal.html +++ /dev/null @@ -1,90 +0,0 @@ -{% load static %} - - - - - - - - Osina - - - - - - - -
- {% csrf_token %} -

Add Point

- -
- -
- - -

- -

- -
- -
- -
- -
- - - - -
- - - \ No newline at end of file