Stop uploading of the same files in an observation
parent
39b656f38d
commit
9a15b3b77f
|
@ -1,3 +1,4 @@
|
||||||
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
|
||||||
|
@ -19,13 +20,26 @@ class ObservationView(viewsets.ModelViewSet, mixins.UpdateModelMixin):
|
||||||
pagination_class = pagination.LinkedHeaderPageNumberPagination
|
pagination_class = pagination.LinkedHeaderPageNumberPagination
|
||||||
|
|
||||||
def update(self, request, *args, **kwargs):
|
def update(self, request, *args, **kwargs):
|
||||||
|
instance = self.get_object()
|
||||||
if request.data.get('client_version'):
|
if request.data.get('client_version'):
|
||||||
instance = self.get_object()
|
|
||||||
instance.ground_station.client_version = request.data.get('client_version')
|
instance.ground_station.client_version = request.data.get('client_version')
|
||||||
instance.ground_station.save()
|
instance.ground_station.save()
|
||||||
if request.data.get('demoddata'):
|
if request.data.get('demoddata'):
|
||||||
instance = self.get_object()
|
try:
|
||||||
instance.demoddata.create(payload_demod=request.data.get('demoddata'))
|
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)
|
super(ObservationView, self).update(request, *args, **kwargs)
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
|
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -59,6 +59,7 @@ def _name_obs_files(instance, filename):
|
||||||
|
|
||||||
|
|
||||||
def _name_obs_demoddata(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)
|
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):
|
class DemodData(models.Model):
|
||||||
observation = models.ForeignKey(Observation, related_name='demoddata',
|
observation = models.ForeignKey(Observation, related_name='demoddata',
|
||||||
on_delete=models.CASCADE, blank=True, null=True)
|
on_delete=models.CASCADE)
|
||||||
payload_demod = models.FileField(upload_to=_name_obs_demoddata, blank=True, null=True)
|
payload_demod = models.FileField(upload_to=_name_obs_demoddata, unique=True)
|
||||||
copied_to_db = models.BooleanField(default=False)
|
copied_to_db = models.BooleanField(default=False)
|
||||||
|
|
||||||
def is_image(self):
|
def is_image(self):
|
||||||
|
|
Loading…
Reference in New Issue