From 5b5b864f80e1d59a0e25f65e57a46fdd5f3e0a2a Mon Sep 17 00:00:00 2001 From: Cayo Puigdefabregas Date: Mon, 3 Feb 2025 13:37:44 +0100 Subject: [PATCH] admin lot tags --- admin/templates/lot_tag_panel.html | 173 +++++++++++++++++++++++++++++ admin/urls.py | 4 + admin/views.py | 76 ++++++++++++- dashboard/templates/base.html | 21 ++-- lot/urls.py | 2 +- 5 files changed, 264 insertions(+), 12 deletions(-) create mode 100644 admin/templates/lot_tag_panel.html diff --git a/admin/templates/lot_tag_panel.html b/admin/templates/lot_tag_panel.html new file mode 100644 index 0000000..44be7ff --- /dev/null +++ b/admin/templates/lot_tag_panel.html @@ -0,0 +1,173 @@ +{% extends "base.html" %} +{% load i18n django_bootstrap5 %} + +{% block content %} +
+
+

{{ subtitle }}

+
+
+ +
+
+
+
+ {% if lot_tags %} + + + + + + + + + {% for tag in lot_tags %} + + + + + + + {% endfor %} + +
{% trans "Tag" %} + {% trans "Actions" %} +
+ {{ tag.name }} + +
+ + +
+
+ + + {% else %} + + {% endif %} +
+
+ + + + + +{% for tag in lot_tags %} + +{% endfor %} + + + +{% for tag in lot_tags %} + + +{% endfor %} +{% endblock %} diff --git a/admin/urls.py b/admin/urls.py index 9a26cbf..97c1ed1 100644 --- a/admin/urls.py +++ b/admin/urls.py @@ -10,4 +10,8 @@ urlpatterns = [ path("users/edit/", views.EditUserView.as_view(), name="edit_user"), path("users/delete/", views.DeleteUserView.as_view(), name="delete_user"), path("institution/", views.InstitutionView.as_view(), name="institution"), + path("lot_tag/", views.LotTagPanelView.as_view(), name="tag_panel"), + path("lot_tag/add", views.AddLotTagView.as_view(), name="add_lot_tag"), + path("lot_tag/delete/", views.DeleteLotTagView.as_view(), name='delete_lot_tag'), + path("lot_tag/edit//", views.UpdateLotTagView.as_view(), name='edit_lot_tag'), ] diff --git a/admin/views.py b/admin/views.py index 9ce25c7..abdd771 100644 --- a/admin/views.py +++ b/admin/views.py @@ -1,6 +1,7 @@ from smtplib import SMTPException +from django.contrib import messages from django.urls import reverse_lazy -from django.shortcuts import get_object_or_404 +from django.shortcuts import get_object_or_404, redirect from django.utils.translation import gettext_lazy as _ from django.views.generic.base import TemplateView from django.views.generic.edit import ( @@ -11,6 +12,7 @@ from django.views.generic.edit import ( from dashboard.mixins import DashboardView, Http403 from user.models import User, Institution from admin.email import NotifyActivateUserByEmail +from lot.models import LotTag class AdminView(DashboardView): @@ -18,7 +20,7 @@ class AdminView(DashboardView): response = super().get(*args, **kwargs) if not self.request.user.is_admin: raise Http403 - + return response class PanelView(AdminView, TemplateView): @@ -104,7 +106,75 @@ class EditUserView(AdminView, UpdateView): kwargs = super().get_form_kwargs() return kwargs - + +class LotTagPanelView(AdminView, TemplateView): + template_name = "lot_tag_panel.html" + title = _("Lot Tag Panel") + breadcrumb = _("admin / Lot Tag Panel") + + +class AddLotTagView(AdminView, CreateView): + template_name = "lot_tag_panel.html" + title = _("New lot tag Definition") + breadcrumb = "Admin / New lot tag" + success_url = reverse_lazy('admin:tag_panel') + model = LotTag + fields = ('name',) + + def form_valid(self, form): + form.instance.owner = self.request.user.institution + form.instance.user = self.request.user + + response = super().form_valid(form) + messages.success(self.request, _("Lot Tag successfully added.")) + return response + + +class DeleteLotTagView(AdminView, DeleteView): + model = LotTag + success_url = reverse_lazy('admin:tag_panel') + + def post(self, request, *args, **kwargs): + pk = kwargs.get('pk') + self.object = get_object_or_404( + self.model, + owner=self.request.user.institution, + pk=pk + ) + + if self.object.lot_set.first(): + msg = _('This tag have lots. Impossible deleted.') + messages.warning(self.request, msg) + return redirect(reverse_lazy('admin:tag_panel')) + + response = super().delete(request, *args, **kwargs) + msg = _('Lot Tag has been deleted.') + messages.success(self.request, msg) + return response + + +class UpdateLotTagView(AdminView, UpdateView): + model = LotTag + template_name = 'lot_tag_panel.html' + fields = ['name'] + success_url = reverse_lazy('admin:tag_panel') + + def get_form_kwargs(self): + pk = self.kwargs.get('pk') + self.object = get_object_or_404( + self.model, + owner=self.request.user.institution, + pk=pk + ) + return super().get_form_kwargs() + + def form_valid(self, form): + response = super().form_valid(form) + msg = _("Lot Tag updated successfully.") + messages.success(self.request, msg) + return response + + class InstitutionView(AdminView, UpdateView): template_name = "institution.html" title = _("Edit institution") diff --git a/dashboard/templates/base.html b/dashboard/templates/base.html index 40e6658..486592e 100644 --- a/dashboard/templates/base.html +++ b/dashboard/templates/base.html @@ -51,7 +51,7 @@ } - + {% endblock %} @@ -81,11 +81,11 @@