Compare commits
4 Commits
b4c4ed2689
...
d1cd44f8f6
Author | SHA1 | Date |
---|---|---|
Cayo Puigdefabregas | d1cd44f8f6 | |
Cayo Puigdefabregas | 69bd81289f | |
Cayo Puigdefabregas | 5bf5bc2360 | |
Cayo Puigdefabregas | 92d9837a91 |
17
api/views.py
17
api/views.py
|
@ -1,7 +1,10 @@
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from uuid import uuid4
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
|
from django.http import JsonResponse
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
@ -13,9 +16,8 @@ from django.views.generic.edit import (
|
||||||
DeleteView,
|
DeleteView,
|
||||||
UpdateView,
|
UpdateView,
|
||||||
)
|
)
|
||||||
from django.http import JsonResponse
|
|
||||||
from uuid import uuid4
|
|
||||||
|
|
||||||
|
from utils.save_snapshots import move_json, save_in_disk
|
||||||
from dashboard.mixins import DashboardView
|
from dashboard.mixins import DashboardView
|
||||||
from evidence.models import Annotation
|
from evidence.models import Annotation
|
||||||
from evidence.parse import Build
|
from evidence.parse import Build
|
||||||
|
@ -24,10 +26,6 @@ from api.models import Token
|
||||||
from api.tables import TokensTable
|
from api.tables import TokensTable
|
||||||
|
|
||||||
|
|
||||||
def save_in_disk(data, user):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
def NewSnapshot(request):
|
def NewSnapshot(request):
|
||||||
# Accept only posts
|
# Accept only posts
|
||||||
|
@ -60,10 +58,11 @@ def NewSnapshot(request):
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
if exist_annotation:
|
if exist_annotation:
|
||||||
raise ValidationError("error: the snapshot {} exist".format(data['uuid']))
|
txt = "error: the snapshot {} exist".format(data['uuid'])
|
||||||
|
return JsonResponse({'status': txt}, status=500)
|
||||||
|
|
||||||
# Process snapshot
|
# Process snapshot
|
||||||
# save_in_disk(data, tk.user)
|
path_name = save_in_disk(data, tk.owner.institution.name)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Build(data, tk.owner)
|
Build(data, tk.owner)
|
||||||
|
@ -93,6 +92,8 @@ def NewSnapshot(request):
|
||||||
"url": url,
|
"url": url,
|
||||||
"public_url": url
|
"public_url": url
|
||||||
}
|
}
|
||||||
|
move_json(path_name, tk.owner.institution.name)
|
||||||
|
|
||||||
return JsonResponse(response, status=200)
|
return JsonResponse(response, status=200)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from utils.device import create_annotation, create_doc, create_index
|
from utils.device import create_annotation, create_doc, create_index
|
||||||
|
from utils.save_snapshots import move_json, save_in_disk
|
||||||
|
|
||||||
|
|
||||||
DEVICE_TYPES = [
|
DEVICE_TYPES = [
|
||||||
|
@ -56,8 +57,11 @@ class BaseDeviceFormSet(forms.BaseFormSet):
|
||||||
if not commit:
|
if not commit:
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
path_name = save_in_disk(doc, self.user.institution.name, place="placeholder")
|
||||||
create_index(doc, self.user)
|
create_index(doc, self.user)
|
||||||
create_annotation(doc, user, commit=commit)
|
create_annotation(doc, user, commit=commit)
|
||||||
|
move_json(path_name, self.user.institution.name, place="placeholder")
|
||||||
|
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ For the full list of settings and their values, see
|
||||||
https://docs.djangoproject.com/en/5.0/ref/settings/
|
https://docs.djangoproject.com/en/5.0/ref/settings/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
import xapian
|
import xapian
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
@ -62,6 +63,7 @@ EMAIL_FILE_PATH = config('EMAIL_FILE_PATH', default='/tmp/app-messages')
|
||||||
|
|
||||||
ENABLE_EMAIL = config("ENABLE_EMAIL", default=True, cast=bool)
|
ENABLE_EMAIL = config("ENABLE_EMAIL", default=True, cast=bool)
|
||||||
|
|
||||||
|
EVIDENCES_DIR = config("EVIDENCES_DIR", default=os.path.join(BASE_DIR, "db"))
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ from utils.forms import MultipleFileField
|
||||||
from device.models import Device
|
from device.models import Device
|
||||||
from evidence.parse import Build
|
from evidence.parse import Build
|
||||||
from evidence.models import Annotation
|
from evidence.models import Annotation
|
||||||
|
from utils.save_snapshots import move_json, save_in_disk
|
||||||
|
|
||||||
|
|
||||||
class UploadForm(forms.Form):
|
class UploadForm(forms.Form):
|
||||||
|
@ -48,7 +49,9 @@ class UploadForm(forms.Form):
|
||||||
return
|
return
|
||||||
|
|
||||||
for ev in self.evidences:
|
for ev in self.evidences:
|
||||||
|
path_name = save_in_disk(ev[1], user.institution.name)
|
||||||
Build(ev[1], user)
|
Build(ev[1], user)
|
||||||
|
move_json(path_name, user.institution.name)
|
||||||
|
|
||||||
|
|
||||||
class UserTagForm(forms.Form):
|
class UserTagForm(forms.Form):
|
||||||
|
@ -151,8 +154,11 @@ class ImportForm(forms.Form):
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
for doc, cred in table:
|
for doc, cred in table:
|
||||||
|
path_name = save_in_disk(doc, self.user.institution.name, place="placeholder")
|
||||||
|
|
||||||
cred.save()
|
cred.save()
|
||||||
create_index(doc, self.user)
|
create_index(doc, self.user)
|
||||||
|
move_json(path_name, self.user.institution.name, place="placeholder")
|
||||||
return table
|
return table
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
|
@ -65,7 +65,6 @@ class PasswordResetView(auth_views.PasswordResetView):
|
||||||
success_url = reverse_lazy('login:password_reset_done')
|
success_url = reverse_lazy('login:password_reset_done')
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
import pdb; pdb.set_trace()
|
|
||||||
try:
|
try:
|
||||||
response = super().form_valid(form)
|
response = super().form_valid(form)
|
||||||
return response
|
return response
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
def move_json(path_name, user, place="snapshots"):
|
||||||
|
if place != "snapshots":
|
||||||
|
place = "placeholders"
|
||||||
|
|
||||||
|
tmp_snapshots = settings.EVIDENCES_DIR
|
||||||
|
path_dir = os.path.join(tmp_snapshots, user, place)
|
||||||
|
|
||||||
|
if os.path.isfile(path_name):
|
||||||
|
shutil.copy(path_name, path_dir)
|
||||||
|
os.remove(path_name)
|
||||||
|
|
||||||
|
|
||||||
|
def save_in_disk(data, user, place="snapshots"):
|
||||||
|
uuid = data.get('uuid', '')
|
||||||
|
now = datetime.now()
|
||||||
|
year = now.year
|
||||||
|
month = now.month
|
||||||
|
day = now.day
|
||||||
|
hour = now.hour
|
||||||
|
minutes = now.minute
|
||||||
|
tmp_snapshots = settings.EVIDENCES_DIR
|
||||||
|
if place != "snapshots":
|
||||||
|
place = "placeholders"
|
||||||
|
|
||||||
|
name_file = f"{year}-{month}-{day}-{hour}-{minutes}_{uuid}.json"
|
||||||
|
path_dir = os.path.join(tmp_snapshots, user, place, "errors")
|
||||||
|
path_name = os.path.join(path_dir, name_file)
|
||||||
|
|
||||||
|
if not os.path.isdir(path_dir):
|
||||||
|
os.system(f'mkdir -p {path_dir}')
|
||||||
|
|
||||||
|
with open(path_name, 'w') as snapshot_file:
|
||||||
|
snapshot_file.write(json.dumps(data))
|
||||||
|
|
||||||
|
return path_name
|
Loading…
Reference in New Issue