1
0
Fork 0

Stop uploading of the same files in an observation

merge-requests/724/head
Alfredos-Panagiotis Damkalis 2019-03-07 21:41:22 +02:00
parent 39b656f38d
commit 9a15b3b77f
4 changed files with 62 additions and 5 deletions

View File

@ -1,3 +1,4 @@
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import get_object_or_404
from django.utils.timezone import now
@ -19,13 +20,26 @@ class ObservationView(viewsets.ModelViewSet, mixins.UpdateModelMixin):
pagination_class = pagination.LinkedHeaderPageNumberPagination
def update(self, request, *args, **kwargs):
instance = self.get_object()
if request.data.get('client_version'):
instance = self.get_object()
instance.ground_station.client_version = request.data.get('client_version')
instance.ground_station.save()
if request.data.get('demoddata'):
instance = self.get_object()
instance.demoddata.create(payload_demod=request.data.get('demoddata'))
try:
file_path = 'data_obs/{0}/{1}'.format(instance.id, request.data.get('demoddata'))
instance.demoddata.get(payload_demod=file_path)
return Response(data='This data file has already been uploaded',
status=status.HTTP_403_FORBIDDEN)
except ObjectDoesNotExist:
instance.demoddata.create(payload_demod=request.data.get('demoddata'))
if request.data.get('waterfall'):
if instance.has_waterfall:
return Response(data='Watefall has already been uploaded',
status=status.HTTP_403_FORBIDDEN)
if request.data.get('payload'):
if instance.has_audio:
return Response(data='Audio has already been uploaded',
status=status.HTTP_403_FORBIDDEN)
super(ObservationView, self).update(request, *args, **kwargs)
return Response(status=status.HTTP_200_OK)

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-03-07 18:17
from __future__ import unicode_literals
from django.db import migrations, models
import network.base.models
class Migration(migrations.Migration):
dependencies = [
('base', '0055_add_new_antenna_type'),
]
operations = [
migrations.AlterField(
model_name='demoddata',
name='payload_demod',
field=models.FileField(unique=True, upload_to=network.base.models._name_obs_demoddata),
),
]

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-03-07 18:28
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('base', '0056_unique_demoddata_payload'),
]
operations = [
migrations.AlterField(
model_name='demoddata',
name='observation',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='demoddata', to='base.Observation'),
),
]

View File

@ -59,6 +59,7 @@ def _name_obs_files(instance, filename):
def _name_obs_demoddata(instance, filename):
# On change of the string bellow, change it also at api/views.py
return 'data_obs/{0}/{1}'.format(instance.observation.id, filename)
@ -610,8 +611,8 @@ post_save.connect(_observation_post_save, sender=Observation)
class DemodData(models.Model):
observation = models.ForeignKey(Observation, related_name='demoddata',
on_delete=models.CASCADE, blank=True, null=True)
payload_demod = models.FileField(upload_to=_name_obs_demoddata, blank=True, null=True)
on_delete=models.CASCADE)
payload_demod = models.FileField(upload_to=_name_obs_demoddata, unique=True)
copied_to_db = models.BooleanField(default=False)
def is_image(self):