diff --git a/TestDB_Horilla.sqlite3 b/TestDB_Horilla.sqlite3 index 4a430e358..b98a4e952 100755 Binary files a/TestDB_Horilla.sqlite3 and b/TestDB_Horilla.sqlite3 differ diff --git a/asset/forms.py b/asset/forms.py index f0fde614c..1fa66fa2f 100644 --- a/asset/forms.py +++ b/asset/forms.py @@ -54,6 +54,7 @@ class AssetForm(ModelForm): model = Asset fields = "__all__" + exclude = ["is_active"] widgets = { "asset_name": forms.TextInput( attrs={"placeholder": "Macbook Pro.", "class": "oh-input w-100"} @@ -159,6 +160,7 @@ class AssetReportForm(ModelForm): "title", "asset_id", ] + exclude = ["is_active"] # def __init__(self, *args, **kwargs): # super(AssetReportForm, self).__init__(*args, **kwargs) @@ -191,6 +193,7 @@ class AssetCategoryForm(ModelForm): model = AssetCategory fields = "__all__" + exclude = ["is_active"] widgets = { "asset_category_name": forms.TextInput( attrs={"placeholder": _("Computers."), "class": "oh-input w-100"} @@ -225,6 +228,7 @@ class AssetRequestForm(ModelForm): model = AssetRequest fields = "__all__" + exclude = ["is_active"] widgets = { "requested_employee_id": forms.Select( attrs={ @@ -299,7 +303,13 @@ class AssetAllocationForm(ModelForm): model = AssetAssignment fields = "__all__" - exclude = ["return_date", "return_condition", "assigned_date", "return_images"] + exclude = [ + "return_date", + "return_condition", + "assigned_date", + "return_images", + "is_active", + ] widgets = { "asset_id": forms.Select(attrs={"class": "oh-select oh-select-2 "}), "assigned_to_employee_id": forms.Select( @@ -311,10 +321,9 @@ class AssetAllocationForm(ModelForm): }, ), } - + # def clean(self): # cleaned_data = super.clean() - class AssetReturnForm(ModelForm): diff --git a/asset/models.py b/asset/models.py index 89fa60da3..bb2ccb040 100644 --- a/asset/models.py +++ b/asset/models.py @@ -8,12 +8,13 @@ within an Asset Management System. from django.db import models from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ +from horilla.models import HorillaModel from base.models import Company from base.horilla_company_manager import HorillaCompanyManager from employee.models import Employee -class AssetCategory(models.Model): +class AssetCategory(HorillaModel): """ Represents a category for different types of assets. """ @@ -27,7 +28,7 @@ class AssetCategory(models.Model): return f"{self.asset_category_name}" -class AssetLot(models.Model): +class AssetLot(HorillaModel): """ Represents a lot associated with a collection of assets. """ @@ -41,7 +42,7 @@ class AssetLot(models.Model): return f"{self.lot_number}" -class Asset(models.Model): +class Asset(HorillaModel): """ Represents a asset with various attributes. """ @@ -88,7 +89,7 @@ class Asset(models.Model): return super().clean() -class AssetReport(models.Model): +class AssetReport(HorillaModel): title = models.CharField(max_length=255, blank=True, null=True) asset_id = models.ForeignKey( Asset, related_name="asset_report", on_delete=models.CASCADE @@ -118,7 +119,7 @@ class ReturnImages(models.Model): image = models.FileField(upload_to="asset/return_images/", blank=True, null=True) -class AssetAssignment(models.Model): +class AssetAssignment(HorillaModel): """ Represents the allocation and return of assets to and from employees. """ @@ -159,7 +160,7 @@ class AssetAssignment(models.Model): return f"{self.assigned_to_employee_id} --- {self.asset_id} --- {self.return_status}" -class AssetRequest(models.Model): +class AssetRequest(HorillaModel): """ Represents a request for assets made by employees. """ diff --git a/asset/templates/category/asset_category.html b/asset/templates/category/asset_category.html index d3b921999..4798bcbe9 100644 --- a/asset/templates/category/asset_category.html +++ b/asset/templates/category/asset_category.html @@ -20,7 +20,7 @@
- {% for asset_category in asset_categorys %} + {% for asset_category in asset_categories %}
{% trans "Page" %} - - {% trans "of" %} {{ asset_categorys.paginator.num_pages }} + {% trans "of" %} {{ asset_categories.paginator.num_pages }}
    - {% if asset_categorys.has_previous %} + {% if asset_categories.has_previous %}
  • {% trans "First" %}
  • - {% trans "Previous" %}
  • {%endif %} - {% if asset_categorys.has_next %} + {% if asset_categories.has_next %}
  • - {% trans "Next" %}
  • - {% trans "Last" %}
  • {% endif %} diff --git a/asset/templates/request_allocation/asset_request_allocation_view.html b/asset/templates/request_allocation/asset_request_allocation_view.html index cc6325086..644b6a9da 100644 --- a/asset/templates/request_allocation/asset_request_allocation_view.html +++ b/asset/templates/request_allocation/asset_request_allocation_view.html @@ -327,9 +327,9 @@ class="link-danger oh-btn oh-btn--secondary-outline" role="" data-toggle="oh-modal-toggle" - data-target="#asset-request-allocation-modal" + data-target="#objectCreateModal" hx-get="{%url 'asset-request-creation'%}" - hx-target="#asset-request-allocation-modal-target" + hx-target="#objectCreateModalTarget" title='{% trans "Create request" %}' > {% trans "Asset Request" %} -{% if asset_request_form.errors %} -
    - {% for error in asset_request_form.non_field_errors %} -
    -
    - {{ error }} -
    -
    - {% endfor %} + +
    +
    -{% endif %} -
    - {% csrf_token %} -
    -
    - - {{asset_request_form.requested_employee_id}} - {{asset_request_form.requested_employee_id.errors}} -
    -
    - - {{asset_request_form.asset_category_id}} - {{asset_request_form.asset_category_id.errors}} -
    -
    - - {{asset_request_form.description}} - {{asset_request_form.description.errors}} -
    -
    - + + +
    +
    {% trans "Asset Request" %}
    + {% if asset_request_form.errors %} +
    + {% for error in asset_request_form.non_field_errors %} +
    +
    + {{ error }} +
    + {% endfor %}
    - \ No newline at end of file + {% endif %} +
    + {% csrf_token %} +
    +
    + + {{asset_request_form.requested_employee_id}} + {{asset_request_form.requested_employee_id.errors}} +
    +
    + + {{asset_request_form.asset_category_id}} + {{asset_request_form.asset_category_id.errors}} +
    +
    + + {{asset_request_form.description}} + {{asset_request_form.description.errors}} +
    +
    + +
    +
    +
    +
    diff --git a/asset/views.py b/asset/views.py index 22ed5ab2b..675e317a3 100644 --- a/asset/views.py +++ b/asset/views.py @@ -247,7 +247,7 @@ def asset_delete(request, asset_id): asset_list_filter = request.GET.get("asset_list") asset_allocation = AssetAssignment.objects.filter(asset_id=asset).first() if asset_list_filter: - # if the asset deleted is from the filterd list of asset + # if the asset deleted is from the filtered list of asset asset_under = "asset_filter" assets = Asset.objects.all() previous_data = request.GET.urlencode() @@ -456,7 +456,7 @@ def filter_pagination_asset_category(request): asset_export_filter = AssetExportFilter(request.GET, queryset=Asset.objects.all()) asset_category_paginator = Paginator(asset_category_filtered.qs, get_pagination()) page_number = request.GET.get("page") - asset_categorys = asset_category_paginator.get_page(page_number) + asset_categories = asset_category_paginator.get_page(page_number) data_dict = parse_qs(previous_data) get_key_instances(AssetCategory, data_dict) asset_creation_form = AssetForm() @@ -466,7 +466,7 @@ def filter_pagination_asset_category(request): "asset_creation_form": asset_creation_form, "asset_category_form": asset_category_form, "asset_export_filter": asset_export_filter, - "asset_categorys": asset_categorys, + "asset_categories": asset_categories, "asset_category_filter_form": asset_category_filtered.form, "asset_filter_form": asset_filter_form.form, "pg": previous_data, @@ -618,8 +618,8 @@ def asset_request_reject(request, req_id): req_id (int): the id of the AssetRequest object to reject Returns: - HttpResponse: a redirect to the asset request list view with a success m - essage if the asset request is rejected successfully, or a redirect to the + HttpResponse: a redirect to the asset request list view with a success + message if the asset request is rejected successfully, or a redirect to the asset request detail view with an error message if the asset request is not found or already rejected """ @@ -763,13 +763,13 @@ def asset_allocate_return(request, asset_id): def filter_pagination_asset_request_allocation(request): - asset_request_alloaction_search = request.GET.get("search") + asset_request_allocation_search = request.GET.get("search") request_field = request.GET.get("request_field") allocation_field = request.GET.get("allocation_field") - if asset_request_alloaction_search is None: - asset_request_alloaction_search = "" + if asset_request_allocation_search is None: + asset_request_allocation_search = "" employee = request.user.employee_get - asset_asignment = AssetAssignment.objects.all() + asset_assignment = AssetAssignment.objects.all() asset_request = filtersubordinates( request=request, perm="asset.view_assetrequest", @@ -778,14 +778,14 @@ def filter_pagination_asset_request_allocation(request): ) | AssetRequest.objects.filter(requested_employee_id = request.user.employee_get) asset_request = asset_request.distinct() if request.GET.get("assign_sortby"): - asset_asignment = sortby(request, asset_asignment, "assign_sortby") + asset_assignment = sortby(request, asset_assignment, "assign_sortby") if request.GET.get("request_sortby"): asset_request = sortby(request, asset_request, "request_sortby") assets = ( - asset_asignment.filter(assigned_to_employee_id=employee) + asset_assignment.filter(assigned_to_employee_id=employee) .exclude(return_status__isnull=False) - .filter(asset_id__asset_name__icontains=asset_request_alloaction_search) + .filter(asset_id__asset_name__icontains=asset_request_allocation_search) ) previous_data = request.GET.urlencode() @@ -812,7 +812,7 @@ def filter_pagination_asset_request_allocation(request): ) asset_allocation_filtered = AssetAllocationFilter( - request.GET, queryset=asset_asignment + request.GET, queryset=asset_assignment ).qs if allocation_field != "" and allocation_field is not None: @@ -1206,13 +1206,13 @@ def asset_batch_view(request): - all asset batch numbers based on page """ - asset_batchs = AssetLot.objects.all() + asset_batches = AssetLot.objects.all() previous_data = request.GET.urlencode() - asset_batch_numbers_search_paginator = Paginator(asset_batchs, 20) + asset_batch_numbers_search_paginator = Paginator(asset_batches, 20) page_number = request.GET.get("page") asset_batch_numbers = asset_batch_numbers_search_paginator.get_page(page_number) asset_batch_form = AssetBatchForm() - if asset_batchs.exists(): + if asset_batches.exists(): template = "batch/asset_batch_number_view.html" else: template = "batch/asset_batch_empty.html" diff --git a/attendance/views/views.py b/attendance/views/views.py index 1525028ac..360fc38c0 100644 --- a/attendance/views/views.py +++ b/attendance/views/views.py @@ -687,7 +687,7 @@ def attendance_overtime_update(request, obj_id): @login_required -@permission_required("attendance.delete_AttendanceOverTime") +@permission_required("attendance.delete_attendanceoverTime") @require_http_methods(["POST"]) def attendance_overtime_delete(request, obj_id): """ diff --git a/base/forms.py b/base/forms.py index 98fd1aaf2..8eb86d790 100644 --- a/base/forms.py +++ b/base/forms.py @@ -439,6 +439,7 @@ class DepartmentForm(ModelForm): model = Department fields = "__all__" + exclude = ["is_active"] class JobPositionForm(ModelForm): @@ -453,6 +454,7 @@ class JobPositionForm(ModelForm): model = JobPosition fields = "__all__" + exclude = ["is_active"] class JobRoleForm(ModelForm): @@ -467,6 +469,7 @@ class JobRoleForm(ModelForm): model = JobRole fields = "__all__" + exclude = ["is_active"] class WorkTypeForm(ModelForm): @@ -481,6 +484,7 @@ class WorkTypeForm(ModelForm): model = WorkType fields = "__all__" + exclude = ["is_active"] class RotatingWorkTypeForm(ModelForm): @@ -495,7 +499,7 @@ class RotatingWorkTypeForm(ModelForm): model = RotatingWorkType fields = "__all__" - exclude = ("employee_id",) + exclude = ["employee_id", "is_active"] widgets = { "start_date": DateInput(attrs={"type": "date"}), } @@ -791,6 +795,7 @@ class EmployeeTypeForm(ModelForm): model = EmployeeType fields = "__all__" + exclude = ["is_active"] class EmployeeShiftForm(ModelForm): @@ -805,7 +810,7 @@ class EmployeeShiftForm(ModelForm): model = EmployeeShift fields = "__all__" - exclude = ("days",) + exclude = ["days", "is_active"] def clean(self): full_time = self.data["full_time"] @@ -826,6 +831,7 @@ class EmployeeShiftScheduleUpdateForm(ModelForm): """ fields = "__all__" + exclude = ["is_active"] widgets = { "start_time": DateInput(attrs={"type": "time"}), "end_time": DateInput(attrs={"type": "time"}), @@ -862,7 +868,7 @@ class EmployeeShiftScheduleForm(ModelForm): model = EmployeeShiftSchedule fields = "__all__" - exclude = ["is_night_shift"] + exclude = ["is_night_shift", "is_active"] widgets = { "start_time": DateInput(attrs={"type": "time"}), "end_time": DateInput(attrs={"type": "time"}), @@ -930,7 +936,7 @@ class RotatingShiftForm(ModelForm): model = RotatingShift fields = "__all__" - exclude = ("employee_id",) + exclude = ["employee_id", "is_active"] class RotatingShiftAssignForm(forms.ModelForm): @@ -1758,6 +1764,7 @@ class MultipleApproveConditionForm(ModelForm): class Meta: model = MultipleApprovalCondition fields = "__all__" + exclude = ["is_active",] class DynamicPaginationForm(ModelForm): diff --git a/base/models.py b/base/models.py index 931bc0838..3cf4f1a8f 100644 --- a/base/models.py +++ b/base/models.py @@ -4,17 +4,16 @@ models.py This module is used to register django models """ -from collections.abc import Iterable -from typing import Any import django from django.contrib import messages -from base.thread_local_middleware import _thread_locals from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from django.db import models from django.contrib.auth.models import User -from base.horilla_company_manager import HorillaCompanyManager +from horilla.models import HorillaModel from horilla_audit.models import HorillaAuditInfo, HorillaAuditLog +from base.horilla_company_manager import HorillaCompanyManager +from base.thread_local_middleware import _thread_locals # Create your models here. @@ -75,7 +74,7 @@ class Company(models.Model): return str(self.company) -class Department(models.Model): +class Department(HorillaModel): """ Department model """ @@ -114,7 +113,7 @@ class Department(models.Model): return str(self.department) -class JobPosition(models.Model): +class JobPosition(HorillaModel): """ JobPosition model """ @@ -142,7 +141,7 @@ class JobPosition(models.Model): return str(self.job_position) -class JobRole(models.Model): +class JobRole(HorillaModel): """JobRole model""" job_position_id = models.ForeignKey( @@ -166,7 +165,7 @@ class JobRole(models.Model): return f"{self.job_role} - {self.job_position_id.job_position}" -class WorkType(models.Model): +class WorkType(HorillaModel): """ WorkType model """ @@ -207,7 +206,7 @@ class WorkType(models.Model): return self -class RotatingWorkType(models.Model): +class RotatingWorkType(HorillaModel): """ RotatingWorkType model """ @@ -354,7 +353,7 @@ class RotatingWorkTypeAssign(models.Model): raise ValidationError(_("Date must be greater than or equal to today")) -class EmployeeType(models.Model): +class EmployeeType(HorillaModel): """ EmployeeType model """ @@ -421,7 +420,7 @@ class EmployeeShiftDay(models.Model): return str(_(self.day).capitalize()) -class EmployeeShift(models.Model): +class EmployeeShift(HorillaModel): """ EmployeeShift model """ @@ -489,7 +488,7 @@ class EmployeeShift(models.Model): return self -class EmployeeShiftSchedule(models.Model): +class EmployeeShiftSchedule(HorillaModel): """ EmployeeShiftSchedule model """ @@ -528,7 +527,7 @@ class EmployeeShiftSchedule(models.Model): super().save(*args, **kwargs) -class RotatingShift(models.Model): +class RotatingShift(HorillaModel): """ RotatingShift model """ @@ -1092,7 +1091,7 @@ CONDITION_CHOICE = [ ] -class MultipleApprovalCondition(models.Model): +class MultipleApprovalCondition(HorillaModel): department = models.ForeignKey(Department, on_delete=models.CASCADE) condition_field = models.CharField( max_length=255, diff --git a/base/request_and_approve.py b/base/request_and_approve.py index 5a87ca2f0..e6a529ad1 100644 --- a/base/request_and_approve.py +++ b/base/request_and_approve.py @@ -30,7 +30,9 @@ def paginator_qry(qryset, page_number): @login_required def dashboard_shift_request(request): - requests = ShiftRequest.objects.filter(approved=False, canceled=False) + requests = ShiftRequest.objects.filter( + approved=False, canceled=False, employee_id__is_active=True + ) requests = filtersubordinates(request, requests, "base.add_shiftrequest") requests_ids = json.dumps([instance.id for instance in requests]) return render( @@ -45,7 +47,9 @@ def dashboard_shift_request(request): @login_required def dashboard_work_type_request(request): - requests = WorkTypeRequest.objects.filter(approved=False, canceled=False) + requests = WorkTypeRequest.objects.filter( + approved=False, canceled=False, employee_id__is_active=True + ) requests = filtersubordinates(request, requests, "base.add_worktyperequest") requests_ids = json.dumps([instance.id for instance in requests]) return render( @@ -117,7 +121,9 @@ def dashboard_attendance_validate(request): def leave_request_and_approve(request): previous_data = request.GET.urlencode() page_number = request.GET.get("page") - leave_requests = LeaveRequest.objects.filter(status="requested") + leave_requests = LeaveRequest.objects.filter( + status="requested", employee_id__is_active=True + ) leave_requests = filtersubordinates( request, leave_requests, "leave.change_leaverequest" ) @@ -139,7 +145,9 @@ def leave_request_and_approve(request): def leave_allocation_approve(request): previous_data = request.GET.urlencode() page_number = request.GET.get("page") - allocation_reqests = LeaveAllocationRequest.objects.filter(status="requested") + allocation_reqests = LeaveAllocationRequest.objects.filter( + status="requested", employee_id__is_active=True + ) allocation_reqests = filtersubordinates( request, allocation_reqests, "leave.view_leaveallocationrequest" ) @@ -178,7 +186,9 @@ def dashboard_feedback_answer(request): @login_required def dashboard_asset_request_approve(request): - asset_requests = AssetRequest.objects.filter(asset_request_status="Requested") + asset_requests = AssetRequest.objects.filter( + asset_request_status="Requested", requested_employee_id__is_active=True + ) asset_requests = filtersubordinates( request, diff --git a/base/templates/base/action_type/action_type.html b/base/templates/base/action_type/action_type.html index eac811479..b68aeb1a2 100644 --- a/base/templates/base/action_type/action_type.html +++ b/base/templates/base/action_type/action_type.html @@ -2,60 +2,30 @@ {% load i18n %} {% block settings %}{% load static %}
    -

    {% trans "Action Type" %}

    {% if perms.employee.add_actiontype %} - {% endif %}
    - {% if action_types %} - {% include 'base/action_type/action_type_view.html' %} - {% else %} -
    - Page not found. 404. -
    {% trans "There is no disciplinary action type at this moment." %}
    -
    - {% endif %} - + {% if action_types %} + {% include 'base/action_type/action_type_view.html' %} + {% else %} +
    + Page not found. 404. +
    {% trans "There is no disciplinary action type at this moment." %}
    +
    + {% endif %}
    - - - - - - - - - - \ No newline at end of file + function actionChange(selectElement) { + var selectedActiontype = selectElement.val(); + var parentForm = selectElement.parents().closest("form"); + $.ajax({ + type: "post", + url: "{% url 'action-type-name' %}", + data: { + csrfmiddlewaretoken: getCookie("csrftoken"), + action_type: selectedActiontype, + }, + success: function (response) { + // Check if the response.action_type is "warning" + if (response.action_type === "warning") { + // Hide the 'block_option' field + parentForm.find("[id=id_block_option]").parent().hide(); + } else { + // Show the 'block_option' field + parentForm.find("[id=id_block_option]").parent().show(); + } + }, + }); + } + diff --git a/base/templates/base/action_type/action_type_view.html b/base/templates/base/action_type/action_type_view.html index b208edbcc..65d3be1ce 100644 --- a/base/templates/base/action_type/action_type_view.html +++ b/base/templates/base/action_type/action_type_view.html @@ -13,7 +13,7 @@
    {% for act in action_types %} -
    +
    {{act.title}}
    {{act.get_action_type_display}}
    @@ -26,9 +26,9 @@ {% if perms.employee.change_actiontype %} {% endif %} {% if perms.employee.delete_actiontype %} -
    + {% csrf_token %} +
    + + +
    + {% if messages %} +
    + {% for message in messages %} +
    +
    + {{ message }} +
    + {% endfor %} +
    - {% endfor %} - -
    -{% endif %} + {% endif %} -
    - - {{form.as_p}} - +
    +
    + {{form.as_p}} +
    +
    - " + response.content.decode("utf-8") + + "" ) else: messages.info(request, _("Can't edit approved shift request")) @@ -3698,7 +3702,8 @@ def shift_request_approve(request, id): return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) else: messages.error( - request, _("An apporved shift request already exists during this time period.") + request, + _("An apporved shift request already exists during this time period."), ) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) return HttpResponse("You Dont Have Permission") @@ -3733,7 +3738,8 @@ def shift_allocation_request_approve(request, id): return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) else: messages.error( - request, _("An approved shift request already exists during this time period.") + request, + _("An approved shift request already exists during this time period."), ) return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) @@ -4776,7 +4782,7 @@ def clear_form_fields_and_remove_extra_fields(form, managers): from django.db.models import F - +@login_required def multiple_level_approval_edit(request, condition_id): create = False condition = MultipleApprovalCondition.objects.get(id=condition_id) @@ -5237,7 +5243,6 @@ def action_type_create(request): return HttpResponse("") else: from django.urls import reverse - url = reverse("create-actions") instance = Actiontype.objects.all().order_by("-id").first() mutable_get = request.GET.copy() @@ -5289,8 +5294,10 @@ def action_type_delete(request, act_id): This method is used to delete the action type. """ Actiontype.objects.filter(id=act_id).delete() - messages.success(request, _("Action has been deleted successfully!")) - return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + message = _("Action has been deleted successfully!") + return HttpResponse( + f"
    {message}
    " + ) @login_required diff --git a/employee/forms.py b/employee/forms.py index 07e446521..645c6de0d 100644 --- a/employee/forms.py +++ b/employee/forms.py @@ -111,12 +111,6 @@ class ModelForm(forms.ModelForm): except: pass - def save(self, request=None, *args, **kwargs): - if request: - instance = super().save(commit=False) - instance.save(request=request, *args, **kwargs) - return super().save(*args, **kwargs) - class UserForm(ModelForm): """ @@ -654,6 +648,7 @@ class ActiontypeForm(ModelForm): class Meta: model = Actiontype fields = "__all__" + exclude = ["is_active"] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/employee/models.py b/employee/models.py index 5ad1ef319..d571c0bab 100644 --- a/employee/models.py +++ b/employee/models.py @@ -764,7 +764,7 @@ class BonusPoint(models.Model): BonusPoint.objects.create(employee_id=instance) -class Actiontype(models.Model): +class Actiontype(HorillaModel): """ Action type model """ diff --git a/employee/policies.py b/employee/policies.py index 62ab3ac46..8fabe1578 100644 --- a/employee/policies.py +++ b/employee/policies.py @@ -258,7 +258,7 @@ def create_actions(request): user = employee.employee_user_id employees.append(user) - form.save(request=request) + form.save() messages.success(request, _("Disciplinary action taken.")) notify.send( request.user.employee_get, diff --git a/employee/templates/tabs/profile-asset-tab.html b/employee/templates/tabs/profile-asset-tab.html index 17067577f..b9d058c6b 100644 --- a/employee/templates/tabs/profile-asset-tab.html +++ b/employee/templates/tabs/profile-asset-tab.html @@ -3,8 +3,8 @@
    +
    + +
    + {% if form.errors %} + +
    +
    + {% for error in form.non_field_errors %} +
    + {{ error }} +
    + {% endfor %} +
    +
    + {% endif %} + +
    + {% csrf_token %} {{form.as_p}} +
    +
    -
    -
    -
    -
    -
    +
    +
    + -
    +
    -
    -
    -
    -
    -
    +
    +
    + +
    \ No newline at end of file + } + }); + }); + diff --git a/helpdesk/templates/helpdesk/ticket/ticket_group.html b/helpdesk/templates/helpdesk/ticket/ticket_group.html index 784a1ce4f..8dbf6a65d 100644 --- a/helpdesk/templates/helpdesk/ticket/ticket_group.html +++ b/helpdesk/templates/helpdesk/ticket/ticket_group.html @@ -121,9 +121,9 @@ class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}" data-toggle="oh-modal-toggle" - data-target="#editModal" + data-target="#objectCreateModal" hx-get="{% url 'ticket-update' ticket.id %}" - hx-target="#editTarget" + hx-target="#objectCreateModalTarget" > @@ -417,9 +417,9 @@ class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}" data-toggle="oh-modal-toggle" - data-target="#editModal" + data-target="#objectCreateModal" hx-get="{% url 'ticket-update' ticket.id %}" - hx-target="#editTarget" + hx-target="#objectCreateModalTarget" > @@ -712,9 +712,9 @@ class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}" data-toggle="oh-modal-toggle" - data-target="#editModal" + data-target="#objectCreateModal" hx-get="{% url 'ticket-update' ticket.id %}" - hx-target="#editTarget" + hx-target="#objectCreateModalTarget" > diff --git a/helpdesk/templates/helpdesk/ticket/ticket_list.html b/helpdesk/templates/helpdesk/ticket/ticket_list.html index 334e5c425..e958dcdff 100644 --- a/helpdesk/templates/helpdesk/ticket/ticket_list.html +++ b/helpdesk/templates/helpdesk/ticket/ticket_list.html @@ -116,9 +116,9 @@ class="oh-btn oh-btn--light-bkg p-3 w-50" title="{% trans 'Edit' %}" data-toggle="oh-modal-toggle" - data-target="#editModal" + data-target="#objectCreateModal" hx-get="{% url 'ticket-update' ticket.id %}" - hx-target="#editTarget" + hx-target="#objectCreateModalTarget" > @@ -353,9 +353,9 @@ class="oh-btn oh-btn--light-bkg p-3 w-100" title="{% trans 'Edit' %}" data-toggle="oh-modal-toggle" - data-target="#editModal" + data-target="#objectCreateModal" hx-get="{% url 'ticket-update' ticket.id %}" - hx-target="#editTarget" + hx-target="#objectCreateModalTarget" > @@ -577,9 +577,9 @@ class="oh-btn oh-btn--light-bkg p-3 w-50" title="{% trans 'Edit' %}" data-toggle="oh-modal-toggle" - data-target="#editModal" + data-target="#objectCreateModal" hx-get="{% url 'ticket-update' ticket.id %}" - hx-target="#editTarget" + hx-target="#objectCreateModalTarget" > diff --git a/helpdesk/templates/helpdesk/ticket/ticket_nav.html b/helpdesk/templates/helpdesk/ticket/ticket_nav.html index c62c5740d..daf69f8f5 100644 --- a/helpdesk/templates/helpdesk/ticket/ticket_nav.html +++ b/helpdesk/templates/helpdesk/ticket/ticket_nav.html @@ -85,9 +85,9 @@ +
    + + +
    +
    + {{form.as_p}} +
    + + + + + + + + + + {% for available_leave in form.assigned_leaves %} + + + + + + {% endfor %} + + +
    - \ No newline at end of file diff --git a/payroll/templates/payroll/reimbursement/nav.html b/payroll/templates/payroll/reimbursement/nav.html index d642f464b..c0e610a8c 100644 --- a/payroll/templates/payroll/reimbursement/nav.html +++ b/payroll/templates/payroll/reimbursement/nav.html @@ -46,7 +46,7 @@ {% include 'payroll/reimbursement/filter.html' %}
    - + {% trans 'Create' %} diff --git a/payroll/templates/payroll/reimbursement/reimbursement_list.html b/payroll/templates/payroll/reimbursement/reimbursement_list.html index fc48da7d2..6ebd83f52 100644 --- a/payroll/templates/payroll/reimbursement/reimbursement_list.html +++ b/payroll/templates/payroll/reimbursement/reimbursement_list.html @@ -166,9 +166,9 @@ @@ -462,9 +462,9 @@ @@ -746,9 +746,9 @@ diff --git a/payroll/templates/payroll/reimbursement/request_cards.html b/payroll/templates/payroll/reimbursement/request_cards.html index 43e4d072c..7d983718a 100644 --- a/payroll/templates/payroll/reimbursement/request_cards.html +++ b/payroll/templates/payroll/reimbursement/request_cards.html @@ -73,10 +73,10 @@ {% if req.status != "approved" %} ${element.leave_type_id__name - }${element.available_days}${element.carryforward_days}` - } - $("#availableTableBody").html($(rows)) - removeHighlight() - } - }); - } - function removeHighlight() { - setTimeout(function() { - $(".toggle-highlight").removeClass("toggle-highlight") - }, 200); - } {% endblock %} diff --git a/static/fonts/material_icons.woff2 b/static/fonts/material_icons.woff2 new file mode 100644 index 000000000..5492a6e75 Binary files /dev/null and b/static/fonts/material_icons.woff2 differ diff --git a/templates/dashboard.html b/templates/dashboard.html index 5f7d609da..8d2e99178 100755 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -485,13 +485,13 @@
    {% include "request_and_approve/shift_request.html" %}
    -
    -
    +
    +
    {% endif %} {% if perms.base.change_worktyperequest or request.user|is_reportingmanager %}
    {% include "request_and_approve/feedback_answer.html" %}
    -
+
{% if perms.asset.change_assetrequest or request.user|is_reportingmanager %}
{% include "request_and_approve/asset_requests_approve.html" %}
-
- + + {% endif %} @@ -730,137 +730,6 @@ - - -
-
{% trans "Quick Actions" %}

- -
- -
-
- -
diff --git a/templates/floating_button.html b/templates/floating_button.html new file mode 100644 index 000000000..852baf07e --- /dev/null +++ b/templates/floating_button.html @@ -0,0 +1,253 @@ +{% load static %} + + +
+ + + + + + + +
+
+ add +
+ + diff --git a/templates/index.html b/templates/index.html index 4a24c68fb..7d4bdacb2 100755 --- a/templates/index.html +++ b/templates/index.html @@ -401,6 +401,9 @@ } .swal2-actions { direction: rtl; +} +.oh-dropdown__menu { + z-index:15 } @@ -667,6 +670,7 @@
+ {% include "floating_button.html" %} @@ -724,6 +728,65 @@ +