diff --git a/helpdesk/forms.py b/helpdesk/forms.py index 06358e06e..bf482344c 100644 --- a/helpdesk/forms.py +++ b/helpdesk/forms.py @@ -23,7 +23,7 @@ class YourForm(forms.Form): from base.forms import ModelForm from base.models import Department, JobPosition from employee.models import Employee -from helpdesk.models import Attachment, TicketType, FAQ,Ticket, FAQCategory, Comment +from helpdesk.models import Attachment, DepartmentManager, TicketType, FAQ,Ticket, FAQCategory, Comment from django import forms from django.template.loader import render_to_string @@ -162,4 +162,10 @@ class AttachmentForm(forms.ModelForm): }), label = "") class Meta: model = Attachment - fields = ['file','comment','ticket'] \ No newline at end of file + fields = ['file','comment','ticket'] + + +class DepartmentManagerCreateForm(ModelForm): + class Meta: + model = DepartmentManager + fields = ["department", "manager"] diff --git a/helpdesk/templates/department_managers/department_managers.html b/helpdesk/templates/department_managers/department_managers.html new file mode 100644 index 000000000..6cfcd9c0d --- /dev/null +++ b/helpdesk/templates/department_managers/department_managers.html @@ -0,0 +1,58 @@ +{% extends 'settings.html' %} +{% load i18n %} +{% block settings %} +
+ {% if perms.base.add_tags %} +
+

{% trans "Department managers" %}

+ +
+ {% include 'department_managers/department_managers_view.html' %} + {% endif %} + +
+ + + + + + + + + + +{% endblock settings %} \ No newline at end of file diff --git a/helpdesk/templates/department_managers/department_managers_form.html b/helpdesk/templates/department_managers/department_managers_form.html new file mode 100644 index 000000000..bfe08d750 --- /dev/null +++ b/helpdesk/templates/department_managers/department_managers_form.html @@ -0,0 +1,48 @@ +{% load i18n %} + +
+
+

+ {% if dep_id %} + {% trans "update Tag" %} + {% else %} + {% trans "Create Tag" %} + {% endif %} +

+ +
+
+ {% if form.errors %} + +
+
+ {% for error in form.non_field_errors %} +
+ {{ error }} +
+ {% endfor %} +
+
+{% endif %} +
+ {% csrf_token %} + {{form.as_p}} + +
+
+
diff --git a/helpdesk/templates/department_managers/department_managers_view.html b/helpdesk/templates/department_managers/department_managers_view.html new file mode 100644 index 000000000..2c2fe82ae --- /dev/null +++ b/helpdesk/templates/department_managers/department_managers_view.html @@ -0,0 +1,55 @@ +{% load i18n %} +
+
+
+
+
{% trans "department" %}
+
{% trans "manager" %}
+
{% trans "Actions" %}
+
+
+
+ {% for manager in department_managers %} +
+
{{manager.department}}
+
+ {{manager.manager}} +
+
+
+ {% if perms.helpdesk.change_departmentmanager %} + + + {% endif %} + {% if perms.helpdesk.delete_departmentmanager %} +
+ {% csrf_token %} + +
+ {% endif %} +
+
+
+ {% endfor %} +
+
+
diff --git a/helpdesk/templates/helpdesk/ticket/ticket_list.html b/helpdesk/templates/helpdesk/ticket/ticket_list.html index 08e47f3d0..a9e490cef 100644 --- a/helpdesk/templates/helpdesk/ticket/ticket_list.html +++ b/helpdesk/templates/helpdesk/ticket/ticket_list.html @@ -305,7 +305,7 @@
- {% if ticket.assigned_to.all %} + {% if ticket.assigned_to.all request.user.employee_get == ticket.employee_id %} /", views.faq_view, name="faq-view"), + path("faq-view//", views.faq_view, name="faq-view",kwargs={'model':FAQCategory}), path("faq-create//", views.create_faq, name="faq-create"), path("faq-update/", views.faq_update, name="faq-update"), path("faq-search/", views.faq_search, name="faq-search"), @@ -39,13 +39,13 @@ urlpatterns = [ path("change-ticket-status//", views.change_ticket_status, name="change-ticket-status"), path("ticket-delete/", views.ticket_delete, name="ticket-delete"), path('ticket-filter',views.ticket_filter,name='ticket-filter'), - path("ticket-detail//", views.ticket_detail, name="ticket-detail"), + path("ticket-detail//", views.ticket_detail, name="ticket-detail",kwargs={'model':Ticket}), path('ticket-change-tag',views.ticket_update_tag,name='ticket-change-tag'), path('ticket-change-raised-on/',views.ticket_change_raised_on,name='ticket-change-raised-on'), path('ticket-change-assignees/',views.ticket_change_assignees,name='ticket-change-assignees'), path('ticket-create-tag',views.create_tag,name='ticket-create-tag'), path('remove-tag',views.remove_tag,name='remove-tag'), - path('commemt-create/',views.comment_create,name='comment-create'), + path('comment-create/',views.comment_create,name='comment-create'), path('comment-edit/',views.comment_edit,name='comment-edit'), path('comment-delete//',views.comment_delete,name='comment-delete'), path('get-raised-on',views.get_raised_on,name='get-raised-on'), @@ -53,7 +53,9 @@ urlpatterns = [ path('tickets-select-filter',views.tickets_select_filter,name='tickets-select-filter'), path('tickets-bulk-archive',views.tickets_bulk_archive,name='tickets-bulk-archive'), path('tickets-bulk-delete',views.tickets_bulk_delete,name='tickets-bulk-delete'), - - + path('department-manager-view/',views.view_department_managers,name='department-manager-view'), + path('department-manager-create/',views.create_department_manager,name='department-manager-create'), + path('department-manager-update/',views.update_department_manager,name='department-manager-update'), + path('department-manager-delete/',views.delete_department_manager,name='department-manager-delete'), ] diff --git a/helpdesk/views.py b/helpdesk/views.py index 2b8c0d63f..17490b9a3 100644 --- a/helpdesk/views.py +++ b/helpdesk/views.py @@ -9,7 +9,7 @@ from base.methods import filtersubordinates, get_key_instances from base.models import Department, JobPosition, Tags from employee.models import Employee from helpdesk.filter import FAQCategoryFilter, FAQFilter,TicketFilter, TicketReGroup -from helpdesk.forms import AttachmentForm, CommentForm, FAQCategoryForm, FAQForm,TicketForm, TicketRaisedOnForm, TicketTagForm ,TicketAssigneesForm +from helpdesk.forms import AttachmentForm, CommentForm, DepartmentManagerCreateForm, FAQCategoryForm, FAQForm,TicketForm, TicketRaisedOnForm, TicketTagForm ,TicketAssigneesForm from django.utils.translation import gettext as _ from django.contrib import messages from django.db.models import ProtectedError @@ -20,7 +20,7 @@ from helpdesk.threading import AddAssigneeThread, RemoveAssigneeThread, TicketSe from notifications.signals import notify from horilla.decorators import login_required, manager_can_enter, owner_can_enter, permission_required -from helpdesk.models import FAQ, TICKET_STATUS, Attachment, Comment, FAQCategory,Ticket,TicketType +from helpdesk.models import FAQ, TICKET_STATUS, Attachment, Comment, DepartmentManager, FAQCategory,Ticket,TicketType # Create your views here. @@ -153,7 +153,7 @@ def faq_category_search(request): @login_required -def faq_view(request,cat_id): +def faq_view(request,cat_id,**kwargs): """ This function is responsible for rendering the FAQ view. @@ -681,7 +681,7 @@ def ticket_filter(request): return render(request, template, context) @login_required -def ticket_detail(request,ticket_id): +def ticket_detail(request,ticket_id,**kwargs): today = datetime.now().date() ticket = Ticket.objects.get(id=ticket_id) c_form = CommentForm() @@ -1016,4 +1016,70 @@ def tickets_bulk_delete(request): ) except ProtectedError: messages.error(request, _("You cannot delete this Ticket.")) - return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) \ No newline at end of file + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + +@login_required +def add_department_manager(request): + form = DepartmentManagerCreateForm() + if request.method == "POST": + form = DepartmentManagerCreateForm(request.POST, request.FILES) + if form.is_valid(): + form.save() + + return HttpResponse("") + context = { + 'form': form, + } + return render(request, "helpdesk/faq/department_managers_form.html", context) + + +@login_required +def create_department_manager(request): + form = DepartmentManagerCreateForm() + if request.method == "POST": + form = DepartmentManagerCreateForm(request.POST, request.FILES) + if form.is_valid(): + form.save() + messages.success(request, _('The department manager created successfully.')) + + return HttpResponse("") + context = { + 'form': form, + } + return render(request, "department_managers/department_managers_form.html", context) + + +@login_required +def update_department_manager(request,dep_id): + department_manager = DepartmentManager.objects.get(id=dep_id) + form = DepartmentManagerCreateForm(instance=department_manager) + if request.method == "POST": + form = DepartmentManagerCreateForm(request.POST, request.FILES) + if form.is_valid(): + form.save() + messages.success(request, _('The department manager updated successfully.')) + return HttpResponse("") + context = { + 'form': form, + 'dep_id':dep_id, + } + return render(request, "department_managers/department_managers_form.html", context) + +@login_required +def view_department_managers(request): + department_managers = DepartmentManager.objects.all() + + context = { + 'department_managers': department_managers, + } + return render(request, "department_managers/department_managers.html", context) + + +@login_required +def delete_department_manager(request,dep_id): + department_manager = DepartmentManager.objects.get(id=dep_id) + department_manager.delete() + messages.error(request,_("The department manager has been deleted successfully")) + + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + \ No newline at end of file diff --git a/templates/settings.html b/templates/settings.html index 1723d292e..f507f1a1f 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -140,6 +140,14 @@ >{% trans "Tags" %} +
  • + {% trans "Department Managers" %} +