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.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)
|
||||
|
|
|
@ -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):
|
||||
# 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):
|
||||
|
|
Loading…
Reference in New Issue