fix redirect correctly from buttons
This commit is contained in:
parent
7fcc84a92b
commit
f88e9b144e
|
@ -22,6 +22,7 @@ class State(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.institution.name} - {self.state} - {self.snapshot_uuid}"
|
return f"{self.institution.name} - {self.state} - {self.snapshot_uuid}"
|
||||||
|
|
||||||
|
|
||||||
class StateDefinition(models.Model):
|
class StateDefinition(models.Model):
|
||||||
institution = models.ForeignKey(Institution, on_delete=models.CASCADE)
|
institution = models.ForeignKey(Institution, on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="btn btn-grey" href="{% url 'dashboard:unassigned_devices' %}">{% translate "Cancel" %}</a>
|
<a class="btn btn-grey" href="{% url 'device:details' pk %}#user_properties">{% translate "Cancel" %}</a>
|
||||||
<input class="btn btn-green-admin" type="submit" name="submit" value="{% translate 'Save' %}" />
|
<input class="btn btn-green-admin" type="submit" name="submit" value="{% translate 'Save' %}" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.db import IntegrityError
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.shortcuts import get_object_or_404, redirect, Http404
|
from django.shortcuts import get_object_or_404, redirect, Http404
|
||||||
|
@ -24,6 +26,16 @@ if settings.DPP:
|
||||||
from dpp.api_dlt import PROOF_TYPE
|
from dpp.api_dlt import PROOF_TYPE
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceLogMixin(DashboardView):
|
||||||
|
|
||||||
|
def log_registry(self, _uuid, msg):
|
||||||
|
DeviceLog.objects.create(
|
||||||
|
snapshot_uuid=_uuid,
|
||||||
|
event=msg,
|
||||||
|
user=self.request.user,
|
||||||
|
institution=self.request.user.institution
|
||||||
|
)
|
||||||
|
|
||||||
class NewDeviceView(DashboardView, FormView):
|
class NewDeviceView(DashboardView, FormView):
|
||||||
template_name = "new_device.html"
|
template_name = "new_device.html"
|
||||||
title = _("New Device")
|
title = _("New Device")
|
||||||
|
@ -189,7 +201,7 @@ class PublicDeviceWebView(TemplateView):
|
||||||
return JsonResponse(device_data)
|
return JsonResponse(device_data)
|
||||||
|
|
||||||
|
|
||||||
class AddUserPropertyView(DashboardView, CreateView):
|
class AddUserPropertyView(DeviceLogMixin, CreateView):
|
||||||
template_name = "new_user_property.html"
|
template_name = "new_user_property.html"
|
||||||
title = _("New User Property")
|
title = _("New User Property")
|
||||||
breadcrumb = "Device / New Property"
|
breadcrumb = "Device / New Property"
|
||||||
|
@ -202,17 +214,19 @@ class AddUserPropertyView(DashboardView, CreateView):
|
||||||
form.instance.uuid = self.property.uuid
|
form.instance.uuid = self.property.uuid
|
||||||
form.instance.type = UserProperty.Type.USER
|
form.instance.type = UserProperty.Type.USER
|
||||||
|
|
||||||
message = _("<Created> UserProperty: {}: {}".format(form.instance.key, form.instance.value))
|
try:
|
||||||
DeviceLog.objects.create(
|
|
||||||
snapshot_uuid=form.instance.uuid,
|
|
||||||
event=message,
|
|
||||||
user=self.request.user,
|
|
||||||
institution=self.request.user.institution
|
|
||||||
)
|
|
||||||
|
|
||||||
messages.success(self.request, _("User property successfully added."))
|
|
||||||
response = super().form_valid(form)
|
response = super().form_valid(form)
|
||||||
|
messages.success(self.request, _("Property successfully added."))
|
||||||
|
log_message = _("<Created> UserProperty: {}: {}".format(
|
||||||
|
form.instance.key,
|
||||||
|
form.instance.value
|
||||||
|
))
|
||||||
|
|
||||||
|
self.log_registry(form.instance.uuid, log_message)
|
||||||
return response
|
return response
|
||||||
|
except IntegrityError:
|
||||||
|
messages.error(self.request, _("Property is already defined."))
|
||||||
|
return self.form_invalid(form)
|
||||||
|
|
||||||
def get_form_kwargs(self):
|
def get_form_kwargs(self):
|
||||||
pk = self.kwargs.get('pk')
|
pk = self.kwargs.get('pk')
|
||||||
|
@ -222,10 +236,15 @@ class AddUserPropertyView(DashboardView, CreateView):
|
||||||
return super().get_form_kwargs()
|
return super().get_form_kwargs()
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return reverse_lazy('device:details', args=[self.kwargs.get('pk')])
|
pk = self.kwargs.get('pk')
|
||||||
|
return reverse_lazy('device:details', args=[pk]) + "#user_properties"
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context['pk'] = self.kwargs.get('pk')
|
||||||
|
return context
|
||||||
|
|
||||||
class UpdateUserPropertyView(DashboardView, UpdateView):
|
class UpdateUserPropertyView(DeviceLogMixin, UpdateView):
|
||||||
template_name = "new_user_property.html"
|
template_name = "new_user_property.html"
|
||||||
title = _("Update User Property")
|
title = _("Update User Property")
|
||||||
breadcrumb = "Device / Update Property"
|
breadcrumb = "Device / Update Property"
|
||||||
|
@ -250,22 +269,34 @@ class UpdateUserPropertyView(DashboardView, UpdateView):
|
||||||
new_key = form.cleaned_data['key']
|
new_key = form.cleaned_data['key']
|
||||||
new_value = form.cleaned_data['value']
|
new_value = form.cleaned_data['value']
|
||||||
|
|
||||||
message = _("<Updated> UserProperty: {}: {} to {}: {}".format(old_key, old_value, new_key, new_value))
|
try:
|
||||||
DeviceLog.objects.create(
|
super().form_valid(form)
|
||||||
snapshot_uuid=form.instance.uuid,
|
messages.success(self.request, _("Property updated successfully."))
|
||||||
event=message,
|
log_message = _("<Updated> UserProperty: {}: {} to {}: {}".format(
|
||||||
user=self.request.user,
|
old_key,
|
||||||
institution=self.request.user.institution
|
old_value,
|
||||||
)
|
new_key,
|
||||||
|
new_value
|
||||||
|
))
|
||||||
|
self.log_registry(form.instance.uuid, log_message)
|
||||||
|
# return response
|
||||||
|
return redirect(self.get_success_url()+"#user_properties")
|
||||||
|
except IntegrityError:
|
||||||
|
messages.error(self.request, _("Property is already defined."))
|
||||||
|
return self.form_invalid(form)
|
||||||
|
|
||||||
messages.success(self.request, _("User property updated successfully."))
|
def form_invalid(self, form):
|
||||||
return super().form_valid(form)
|
super().form_invalid(form)
|
||||||
|
return redirect(self.get_success_url()+"#user_properties")
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return self.request.META.get('HTTP_REFERER', reverse_lazy('device:details', args=[self.object.pk]))
|
return self.request.META.get(
|
||||||
|
'HTTP_REFERER',
|
||||||
|
reverse_lazy('device:details', args=[self.object.pk])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DeleteUserPropertyView(DashboardView, DeleteView):
|
class DeleteUserPropertyView(DeviceLogMixin, DeleteView):
|
||||||
model = UserProperty
|
model = UserProperty
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
@ -276,14 +307,11 @@ class DeleteUserPropertyView(DashboardView, DeleteView):
|
||||||
self.object = self.get_object()
|
self.object = self.get_object()
|
||||||
self.object.delete()
|
self.object.delete()
|
||||||
|
|
||||||
message = _("<Deleted> User Property: {}:{}".format(self.object.key, self.object.value ))
|
msg = _("<Deleted> User Property: {}:{}".format(
|
||||||
DeviceLog.objects.create(
|
self.object.key,
|
||||||
snapshot_uuid=self.object.uuid,
|
self.object.value
|
||||||
event=message,
|
))
|
||||||
user=self.request.user,
|
self.log_registry(self.object.uuid, msg)
|
||||||
institution=self.request.user.institution
|
|
||||||
)
|
|
||||||
|
|
||||||
messages.info(self.request, _("User property deleted successfully."))
|
messages.info(self.request, _("User property deleted successfully."))
|
||||||
|
|
||||||
return self.handle_success()
|
return self.handle_success()
|
||||||
|
@ -292,4 +320,6 @@ class DeleteUserPropertyView(DashboardView, DeleteView):
|
||||||
return redirect(self.get_success_url())
|
return redirect(self.get_success_url())
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return self.request.META.get('HTTP_REFERER', reverse_lazy('device:details', args=[self.object.pk]))
|
pk = self.object.pk
|
||||||
|
url = reverse_lazy('device:details', args=[pk])
|
||||||
|
return self.request.META.get('HTTP_REFERER', url) + "#user_properties"
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 5.0.6 on 2025-01-30 17:52
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('evidence', '0005_alter_userproperty_type'),
|
||||||
|
('user', '0001_initial'),
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='userproperty',
|
||||||
|
constraint=models.UniqueConstraint(fields=('key', 'uuid'), name='userproperty_unique_type_key_uuid'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -37,14 +37,20 @@ class SystemProperty(Property):
|
||||||
|
|
||||||
|
|
||||||
class UserProperty(Property):
|
class UserProperty(Property):
|
||||||
uuid = models.UUIDField()
|
|
||||||
|
|
||||||
class Type(models.IntegerChoices):
|
class Type(models.IntegerChoices):
|
||||||
USER = 1, "User"
|
USER = 1, "User"
|
||||||
ERASE_SERVER = 2, "EraseServer"
|
ERASE_SERVER = 2, "EraseServer"
|
||||||
|
|
||||||
|
uuid = models.UUIDField()
|
||||||
type = models.SmallIntegerField(choices=Type, default=Type.USER)
|
type = models.SmallIntegerField(choices=Type, default=Type.USER)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
constraints = [
|
||||||
|
models.UniqueConstraint(
|
||||||
|
fields=["key", "uuid"], name="userproperty_unique_type_key_uuid")
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class Evidence:
|
class Evidence:
|
||||||
def __init__(self, uuid):
|
def __init__(self, uuid):
|
||||||
|
|
Loading…
Reference in a new issue