From 6c172fce3d01031ef966844b3ccaf2e218641a05 Mon Sep 17 00:00:00 2001 From: ismail Date: Thu, 26 Jun 2025 10:26:00 +0300 Subject: [PATCH 1/3] update --- templates/dashboards/manager.html | 2 +- templates/purchase_orders/po_detail.html | 2 +- templates/purchase_orders/po_detail_backup.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/dashboards/manager.html b/templates/dashboards/manager.html index 28442d44..2bf21f1e 100644 --- a/templates/dashboards/manager.html +++ b/templates/dashboards/manager.html @@ -37,7 +37,7 @@
-

{{ purchase_orders }}

+

{{ purchase_orders }}

{{ _("Purchase Orders")}}

diff --git a/templates/purchase_orders/po_detail.html b/templates/purchase_orders/po_detail.html index 79465d8b..6f3c372e 100644 --- a/templates/purchase_orders/po_detail.html +++ b/templates/purchase_orders/po_detail.html @@ -67,7 +67,7 @@ + href="{% url 'purchase_order_list' request.dealer.slug %}"> {% trans 'PO List' %} diff --git a/templates/purchase_orders/po_detail_backup.html b/templates/purchase_orders/po_detail_backup.html index cc65c6b7..ca0f97fa 100644 --- a/templates/purchase_orders/po_detail_backup.html +++ b/templates/purchase_orders/po_detail_backup.html @@ -57,7 +57,7 @@ - Back to List + Back to List From 3a5ab31f83b5d11966d2fa9847699fe8125cc0e4 Mon Sep 17 00:00:00 2001 From: ismail Date: Thu, 26 Jun 2025 11:40:58 +0300 Subject: [PATCH 2/3] add user and organization dealer slug --- inventory/models.py | 4 +- inventory/views.py | 50 ++++++++++++------- static/css/custom.css | 1 + templates/dashboards/manager.html | 2 +- templates/groups/group_detail.html | 8 +-- templates/groups/group_list.html | 4 +- templates/groups/group_permission_form.html | 2 +- templates/header.html | 36 ++++++------- .../car_inventory_item_form.html | 15 +++--- .../includes/po_item_formset.html | 14 +++++- templates/purchase_orders/po_detail.html | 6 +-- templates/purchase_orders/po_list.html | 2 - templates/purchase_orders/po_update.html | 20 ++++++++ templates/sales/saleorder_detail.html | 2 +- templates/users/user_detail.html | 10 ++-- templates/users/user_list.html | 8 +-- 16 files changed, 112 insertions(+), 72 deletions(-) diff --git a/inventory/models.py b/inventory/models.py index f043ee29..0f5392c3 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -720,7 +720,9 @@ class Car(Base): car=self, exterior=exterior, interior=interior ) self.save() - + @property + def logo(self): + return self.id_car_make.logo.url if self.id_car_make.logo else None class CarTransfer(models.Model): car = models.ForeignKey( diff --git a/inventory/views.py b/inventory/views.py index 258ff023..6b263ebe 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -2662,7 +2662,6 @@ class GroupCreateView( model = models.CustomGroup form_class = forms.GroupForm template_name = "groups/group_form.html" - success_url = reverse_lazy("group_list") success_message = _("Group created successfully") def form_valid(self, form): @@ -2674,6 +2673,8 @@ class GroupCreateView( instance.save() return super().form_valid(form) + def get_success_url(self): + return reverse_lazy("group_list", args=[self.request.dealer.slug]) class GroupUpdateView( LoginRequiredMixin, @@ -2705,20 +2706,20 @@ class GroupUpdateView( model = models.CustomGroup form_class = forms.GroupForm template_name = "groups/group_form.html" - success_url = reverse_lazy("group_list") success_message = _("Group updated successfully") def form_valid(self, form): dealer = get_user_type(self.request) instance = form.save(commit=False) - instance.set_defualt_permissions() + instance.set_default_permissions() instance.group.name = f"{dealer.slug}_{instance.name}" instance.save() return super().form_valid(form) - + def get_success_url(self): + return reverse_lazy("group_list", args=[self.request.dealer.slug]) @login_required -def GroupDeleteview(request, pk): +def GroupDeleteview(request, dealer_slug,pk): """ Handles the deletion of a specific group instance. This view ensures that only authenticated users can perform the deletion. Upon successful deletion, a @@ -2731,14 +2732,15 @@ def GroupDeleteview(request, pk): :return: The HTTP response that redirects the user to the group list page after the group is successfully deleted. """ + get_object_or_404(models.Dealer,slug=dealer_slug) group = get_object_or_404(models.CustomGroup, pk=pk) group.delete() messages.success(request, _("Group deleted successfully")) - return redirect("group_list") + return redirect("group_list",dealer_slug=dealer_slug) @login_required -def GroupPermissionView(request, pk): +def GroupPermissionView(request, dealer_slug,pk): """ Handles the view for adding or modifying permissions of a specific group. This view fetches the group based on the primary key passed as a parameter, and either displays @@ -2760,6 +2762,7 @@ def GroupPermissionView(request, pk): the group's permissions and redirects to the group's detail page. :rtype: HttpResponse """ + get_object_or_404(models.Dealer,slug=dealer_slug) group = get_object_or_404(models.CustomGroup, pk=pk) if request.method == "POST": form = forms.PermissionForm(request.POST) @@ -2768,7 +2771,7 @@ def GroupPermissionView(request, pk): for i in permissions: group.add_permission(Permission.objects.get(id=int(i))) messages.success(request, _("Permission added successfully")) - return redirect("group_detail", pk=group.pk) + return redirect("group_detail", dealer_slug=dealer_slug,pk=group.pk) form = forms.PermissionForm(initial={"name": group.permissions}) return render( request, "groups/group_permission_form.html", {"group": group, "form": form} @@ -2777,7 +2780,7 @@ def GroupPermissionView(request, pk): # Users @login_required -def UserGroupView(request, slug): +def UserGroupView(request, dealer_slug,slug): """ Handles the assignment of user groups to a specific staff member. This view allows updating the groups a staff member belongs to via a form submission. @@ -2793,6 +2796,7 @@ def UserGroupView(request, slug): user detail page after successful submission for POST requests. :rtype: HttpResponse or HttpResponseRedirect """ + get_object_or_404(models.Dealer,slug=dealer_slug) staff = get_object_or_404(models.Staff, slug=slug) if request.method == "POST": form = forms.UserGroupForm(request.POST) @@ -2804,7 +2808,7 @@ def UserGroupView(request, slug): staff.add_group(cg.group) messages.success(request, _("Group added successfully")) - return redirect("user_detail", slug=staff.slug) + return redirect("user_detail",dealer_slug=dealer_slug, slug=staff.slug) form = forms.UserGroupForm(initial={"name": staff.groups}) form.fields["name"].queryset = models.CustomGroup.objects.filter( @@ -2948,7 +2952,8 @@ class UserCreateView( if group: staff.add_group(group) return super().form_valid(form) - + def get_success_url(self): + return reverse_lazy("user_list", args=[self.request.dealer.slug]) class UserUpdateView( LoginRequiredMixin, @@ -3015,10 +3020,11 @@ class UserUpdateView( staff.add_as_manager() staff.save() return super().form_valid(form) - + def get_success_url(self): + return reverse_lazy("user_list", args=[self.request.dealer.slug]) @login_required -def UserDeleteview(request, slug): +def UserDeleteview(request, dealer_slug,slug): """ Deletes a user and its associated staff member from the database and redirects to the user list page. Displays a success message upon successful deletion @@ -3029,10 +3035,11 @@ def UserDeleteview(request, slug): :return: An HTTP redirect to the user list page. """ + get_object_or_404(models.Dealer,slug=dealer_slug) staff = get_object_or_404(models.Staff, slug=slug) staff.deactivate_account() messages.success(request, _("User deleted successfully")) - return redirect("user_list") + return redirect("user_list",dealer_slug=dealer_slug) class OrganizationListView(LoginRequiredMixin, ListView): @@ -9185,6 +9192,9 @@ def InventoryItemCreateView(request, dealer_slug): cogs_accounts = entity.get_coa_accounts().filter(role="cogs_regular") if request.method == "POST": + response = HttpResponse() + response["HX-Refresh"] = "true" + name = request.POST.get("name") account = request.POST.get("account") account = inventory_accounts.get(pk=account) @@ -9216,10 +9226,11 @@ def InventoryItemCreateView(request, dealer_slug): .first() ): messages.error(request, _("Inventory item already exists")) - return redirect( - f"{reverse('inventory_item_create')}?for_po={for_po}", - dealer_slug=dealer.slug, - ) + return response + # return redirect( + # f"{reverse('inventory_item_create')}?for_po={for_po}", + # dealer_slug=dealer.slug, + # ) uom = entity.get_uom_all().get(name="Unit") entity.create_item_inventory( name=inventory_name, @@ -9229,7 +9240,8 @@ def InventoryItemCreateView(request, dealer_slug): coa_model=coa, ) messages.success(request, _("Inventory item created successfully")) - return redirect("purchase_order_list", dealer_slug=dealer.slug) + return response + # return redirect("purchase_order_list", dealer_slug=dealer.slug) if for_po: form = forms.CSVUploadForm() form.fields["vendor"].queryset = dealer.vendors.filter(active=True) diff --git a/static/css/custom.css b/static/css/custom.css index abd5fbfd..80ecd633 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -108,3 +108,4 @@ html[dir="rtl"] .form-icon-container .form-control { padding-right: 35px; padding-left: 10px; } + diff --git a/templates/dashboards/manager.html b/templates/dashboards/manager.html index 2bf21f1e..fb2b569a 100644 --- a/templates/dashboards/manager.html +++ b/templates/dashboards/manager.html @@ -12,7 +12,7 @@
-

{{ staff }}

+

{{ staff }}

{{ _("Staff")}}

diff --git a/templates/groups/group_detail.html b/templates/groups/group_detail.html index 1c2d9040..56c763f9 100644 --- a/templates/groups/group_detail.html +++ b/templates/groups/group_detail.html @@ -28,7 +28,7 @@ + href="{% url 'group_delete' request.dealer.slug group.id %}"> {% trans 'Yes' %}
@@ -74,7 +74,7 @@

Permissions

- Manage Permissions + Manage Permissions @@ -98,7 +98,7 @@
@@ -271,6 +258,15 @@ {% endif %} + {% if perms.django_ledger.view_purchaseordermodel %} + + {% endif %} diff --git a/templates/purchase_orders/car_inventory_item_form.html b/templates/purchase_orders/car_inventory_item_form.html index 67efd78e..9a9137f9 100644 --- a/templates/purchase_orders/car_inventory_item_form.html +++ b/templates/purchase_orders/car_inventory_item_form.html @@ -1,8 +1,10 @@ {% extends "base.html" %} {% load static i18n crispy_forms_tags %} -{% block customCSS %} - -{% endblock %} -{% block content %} -
+ {% csrf_token %}
@@ -139,6 +138,6 @@
- +
{% endblock content %} \ No newline at end of file diff --git a/templates/purchase_orders/includes/po_item_formset.html b/templates/purchase_orders/includes/po_item_formset.html index fbfdd23c..da6dfb61 100644 --- a/templates/purchase_orders/includes/po_item_formset.html +++ b/templates/purchase_orders/includes/po_item_formset.html @@ -18,7 +18,19 @@ - + diff --git a/templates/purchase_orders/po_detail.html b/templates/purchase_orders/po_detail.html index 6f3c372e..05809b2d 100644 --- a/templates/purchase_orders/po_detail.html +++ b/templates/purchase_orders/po_detail.html @@ -51,7 +51,7 @@ - +
@@ -72,9 +72,9 @@
- - {% include "purchase_orders/includes/mark_as.html" %} + + {% endblock %} {% block customJS %} diff --git a/templates/purchase_orders/po_list.html b/templates/purchase_orders/po_list.html index 0240eabf..e3b97737 100644 --- a/templates/purchase_orders/po_list.html +++ b/templates/purchase_orders/po_list.html @@ -21,8 +21,6 @@
{{ _("Create New PO") }} - {{ _("Create Inventory Item for PO") }}
{% include "partials/search_box.html" %} diff --git a/templates/purchase_orders/po_update.html b/templates/purchase_orders/po_update.html index 07644f59..8f8aa474 100644 --- a/templates/purchase_orders/po_update.html +++ b/templates/purchase_orders/po_update.html @@ -90,6 +90,26 @@ {% include "purchase_orders/includes/mark_as.html" %} + {% endblock %} {% block customJS %} diff --git a/templates/sales/saleorder_detail.html b/templates/sales/saleorder_detail.html index bfd46022..3f44f34d 100644 --- a/templates/sales/saleorder_detail.html +++ b/templates/sales/saleorder_detail.html @@ -136,7 +136,7 @@

- {% trans "Ledger Number" %}: {{ sale_order.invoice.ledger }}
+ {% trans "Ledger Number" %}: {{ sale_order.invoice.ledger }}
{% trans "Date" %}: {{ sale_order.invoice.ledger.created|date }}

diff --git a/templates/users/user_detail.html b/templates/users/user_detail.html index ff4325b3..97c1bd58 100644 --- a/templates/users/user_detail.html +++ b/templates/users/user_detail.html @@ -27,7 +27,7 @@

Groups

- Manage Groups + Manage Groups
{% trans 'Item' %} + {% trans 'Item' %} + + {% trans 'Unit Cost' %} {% trans 'Quantity' %} {% trans 'Unit' %}
@@ -48,20 +48,20 @@