Upload multiple File of evidences
This commit is contained in:
parent
9d42c27bd4
commit
46a0bb392d
|
@ -171,3 +171,4 @@ LOGGING = {
|
|||
}
|
||||
|
||||
SNAPSHOT_PATH="/tmp/"
|
||||
DATA_UPLOAD_MAX_NUMBER_FILES = 1000
|
||||
|
|
|
@ -1,27 +1,43 @@
|
|||
import json
|
||||
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from utils.forms import MultipleFileField
|
||||
from evidence.parse import Build
|
||||
from evidence.models import Annotation
|
||||
|
||||
|
||||
class UploadForm(forms.Form):
|
||||
|
||||
evidence_file = forms.FileField(label=_("File"))
|
||||
evidence_file = MultipleFileField(label=_("File"))
|
||||
|
||||
def clean(self):
|
||||
self.evidences = []
|
||||
data = self.cleaned_data.get('evidence_file')
|
||||
if not data:
|
||||
return False
|
||||
|
||||
self.file_name = data.name
|
||||
self.file_data = data.read()
|
||||
if not self.file_name or not self.file_data:
|
||||
return False
|
||||
try:
|
||||
self.file_json = json.loads(self.file_data)
|
||||
except Exception:
|
||||
return False
|
||||
for f in data:
|
||||
file_name = f.name
|
||||
file_data = f.read()
|
||||
if not file_name or not file_data:
|
||||
return False
|
||||
|
||||
try:
|
||||
file_json = json.loads(file_data)
|
||||
Build(file_json, None, check=True)
|
||||
exist_annotation = Annotation.objects.filter(
|
||||
uuid=file_json['uuid']
|
||||
).first()
|
||||
|
||||
if exist_annotation:
|
||||
raise ValidationError("error: {} exist".format(file_name))
|
||||
|
||||
except Exception:
|
||||
raise ValidationError("error in: {}".format(file_name))
|
||||
|
||||
self.evidences.append((file_name, file_json))
|
||||
|
||||
return True
|
||||
|
||||
|
@ -29,5 +45,5 @@ class UploadForm(forms.Form):
|
|||
if not commit or not user:
|
||||
return
|
||||
|
||||
evidence = Build(self.file_json, user)
|
||||
return evidence
|
||||
for ev in self.evidences:
|
||||
Build(ev[1], user)
|
||||
|
|
Loading…
Reference in New Issue