- {{ ev }}
+ {{ ev }}
|
diff --git a/evidence/urls.py b/evidence/urls.py
index 3a20d41..060ce52 100644
--- a/evidence/urls.py
+++ b/evidence/urls.py
@@ -16,4 +16,5 @@ app_name = 'evidence'
urlpatterns = [
path("", views.ListEvidencesView.as_view(), name="list"),
path("upload", views.UploadView.as_view(), name="upload"),
+ path("", views.EvidenceView.as_view(), name="details"),
]
diff --git a/evidence/views.py b/evidence/views.py
index 77d1577..58a0d56 100644
--- a/evidence/views.py
+++ b/evidence/views.py
@@ -5,7 +5,7 @@ from django.views.generic.edit import (
FormView,
)
-from dashboard.mixins import DashboardView
+from dashboard.mixins import DashboardView, Http403
from evidence.models import Evidence
from evidence.forms import UploadForm
# from django.shortcuts import render
@@ -50,3 +50,26 @@ class UploadView(DashboardView, FormView):
def form_invalid(self, form):
response = super().form_invalid(form)
return response
+
+
+class EvidenceView(DashboardView, TemplateView):
+ template_name = "ev_details.html"
+ section = "evidences"
+ title = _("Evidences")
+ breadcrumb = "Evidences / Details"
+
+ def get(self, request, *args, **kwargs):
+ self.pk = kwargs['pk']
+ self.object = Evidence(self.pk)
+ if self.object.owner != self.request.user:
+ raise Http403
+
+ self.object.get_annotations()
+ return super().get(request, *args, **kwargs)
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context.update({
+ 'object': self.object,
+ })
+ return context
diff --git a/utils/forms.py b/utils/forms.py
new file mode 100644
index 0000000..5e19829
--- /dev/null
+++ b/utils/forms.py
@@ -0,0 +1,19 @@
+from django import forms
+
+
+class MultipleFileInput(forms.ClearableFileInput):
+ allow_multiple_selected = True
+
+
+class MultipleFileField(forms.FileField):
+ def __init__(self, *args, **kwargs):
+ kwargs.setdefault("widget", MultipleFileInput())
+ super().__init__(*args, **kwargs)
+
+ def clean(self, data, initial=None):
+ single_file_clean = super().clean
+ if isinstance(data, (list, tuple)):
+ result = [single_file_clean(d, initial) for d in data]
+ else:
+ result = [single_file_clean(data, initial)]
+ return result
|