diff --git a/admin/views.py b/admin/views.py index 2e69413..4458ce4 100644 --- a/admin/views.py +++ b/admin/views.py @@ -1,3 +1,4 @@ +import logging from smtplib import SMTPException from django.contrib import messages from django.urls import reverse_lazy @@ -18,6 +19,8 @@ from user.models import User, Institution from admin.email import NotifyActivateUserByEmail from action.models import StateDefinition +device_logger = logging.getLogger('device_log') + class AdminView(DashboardView): def get(self, *args, **kwargs): response = super().get(*args, **kwargs) @@ -139,11 +142,13 @@ class StateDefinitionContextMixin(ContextMixin): }) return context + class StatesPanelView(AdminView, StateDefinitionContextMixin, TemplateView): template_name = "states_panel.html" title = _("States") breadcrumb = _("admin / States") + " /" + class AddStateDefinitionView(AdminView, StateDefinitionContextMixin, CreateView): template_name = "states_panel.html" title = _("New State Definition") @@ -157,7 +162,8 @@ class AddStateDefinitionView(AdminView, StateDefinitionContextMixin, CreateView) form.instance.user = self.request.user try: response = super().form_valid(form) - messages.success(self.request, _("State definition successfully added.")) + messages.success(self.request, _("State definition successfully added.")) + device_logger.info(f" StateDefinition with value {form.instance.state} by user {self.request.user}.") return response except IntegrityError: messages.error(self.request, _("State is already defined.")) @@ -172,6 +178,7 @@ class DeleteStateDefinitionView(AdminView, StateDefinitionContextMixin, SuccessM success_url = reverse_lazy('admin:states') def get_success_message(self, cleaned_data): + device_logger.info(f" StateDefinition with value {self.object.state} by user {self.request.user}.") return f'State definition: {self.object.state}, has been deleted' def delete(self, request, *args, **kwargs): @@ -183,6 +190,7 @@ class DeleteStateDefinitionView(AdminView, StateDefinitionContextMixin, SuccessM return super().delete(request, *args, **kwargs) + class UpdateStateOrderView(AdminView, TemplateView): success_url = reverse_lazy('admin:states') @@ -194,12 +202,17 @@ class UpdateStateOrderView(AdminView, TemplateView): with transaction.atomic(): current_order = 1 + _log = [] for lookup_id in ordered_ids: state_definition = StateDefinition.objects.get(id=lookup_id) state_definition.order = current_order state_definition.save() + _log.append(f"{state_definition.state} (ID: {lookup_id} -> Order: {current_order})") current_order += 1 + device_logger.info( + f" State order updated by user {self.request.user}: {', '.join(_log)}" + ) messages.success(self.request, _("Order changed succesfuly.")) return redirect(self.success_url) else: