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 8aafced..e7dd195 100644 --- a/admin/urls.py +++ b/admin/urls.py @@ -15,4 +15,8 @@ urlpatterns = [ path("states/delete/", views.DeleteStateDefinitionView.as_view(), name='delete_state_definition'), path("states/update_order/", views.UpdateStateOrderView.as_view(), name='update_state_order'), path("states/edit//", views.UpdateStateDefinitionView.as_view(), name='edit_state_definition'), + 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 df4cf16..01b9f0e 100644 --- a/admin/views.py +++ b/admin/views.py @@ -18,6 +18,7 @@ from admin.forms import OrderingStateForm from user.models import User, Institution from admin.email import NotifyActivateUserByEmail from action.models import StateDefinition +from lot.models import LotTag class AdminView(DashboardView): @@ -112,6 +113,74 @@ class EditUserView(AdminView, UpdateView): 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 57bf0fb..83bfb54 100644 --- a/dashboard/templates/base.html +++ b/dashboard/templates/base.html @@ -82,11 +82,11 @@