Fix last_seen on jobs GET
parent
3c0c7aa23d
commit
cb8ed897c3
|
@ -1,5 +1,3 @@
|
||||||
from django.utils.timezone import now
|
|
||||||
|
|
||||||
from rest_framework import permissions
|
from rest_framework import permissions
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,18 +10,6 @@ class SafeMethodsOnlyPermission(permissions.BasePermission):
|
||||||
return request.method in permissions.SAFE_METHODS
|
return request.method in permissions.SAFE_METHODS
|
||||||
|
|
||||||
|
|
||||||
class StationOwnerCanViewPermission(permissions.BasePermission):
|
|
||||||
"""Only the owner can view station jobs"""
|
|
||||||
def has_object_permission(self, request, view, obj):
|
|
||||||
can_view = False
|
|
||||||
if request.user.is_authenticated() and request.user == obj.ground_station.owner:
|
|
||||||
can_view = True
|
|
||||||
if can_view:
|
|
||||||
obj.last_seen = now()
|
|
||||||
obj.save()
|
|
||||||
return can_view
|
|
||||||
|
|
||||||
|
|
||||||
class StationOwnerCanEditPermission(permissions.BasePermission):
|
class StationOwnerCanEditPermission(permissions.BasePermission):
|
||||||
"""Only the owner can edit station jobs"""
|
"""Only the owner can edit station jobs"""
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from rest_framework import viewsets, mixins
|
from rest_framework import viewsets, mixins
|
||||||
|
|
||||||
from network.api.perms import StationOwnerCanViewPermission, StationOwnerCanEditPermission
|
from network.api.perms import StationOwnerCanEditPermission
|
||||||
from network.api import serializers, filters
|
from network.api import serializers, filters
|
||||||
from network.base.models import (Antenna, Data, Observation, Satellite,
|
from network.base.models import (Antenna, Data, Observation, Satellite,
|
||||||
Station, Transponder)
|
Station, Transponder)
|
||||||
|
@ -46,9 +47,13 @@ class JobView(viewsets.ReadOnlyModelViewSet):
|
||||||
serializer_class = serializers.JobSerializer
|
serializer_class = serializers.JobSerializer
|
||||||
filter_class = filters.DataViewFilter
|
filter_class = filters.DataViewFilter
|
||||||
filter_fields = ('ground_station')
|
filter_fields = ('ground_station')
|
||||||
permission_classes = [
|
|
||||||
StationOwnerCanViewPermission
|
|
||||||
]
|
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.queryset.filter(start__gte=now())
|
queryset = self.queryset.filter(start__gte=now())
|
||||||
|
gs_id = self.request.QUERY_PARAMS.get('ground_station', None)
|
||||||
|
if gs_id and self.request.user.is_authenticated():
|
||||||
|
gs = get_object_or_404(Station, id=gs_id)
|
||||||
|
if gs.owner == self.request.user:
|
||||||
|
gs.last_seen = now()
|
||||||
|
gs.save()
|
||||||
|
return queryset
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('base', '0001_squashed_0017_auto_20150509_0912'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='station',
|
||||||
|
name='created',
|
||||||
|
field=models.DateTimeField(auto_now_add=True),
|
||||||
|
),
|
||||||
|
]
|
|
@ -5,7 +5,6 @@ from django.core.validators import MaxValueValidator, MinValueValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models.signals import post_save
|
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
|
|
||||||
from network.users.models import User
|
from network.users.models import User
|
||||||
|
@ -21,13 +20,6 @@ ANTENNA_TYPES = (
|
||||||
MODE_CHOICES = ['FM', 'AFSK', 'BFSK', 'APRS', 'SSTV', 'CW', 'FMN', 'SSTV', 'GMSK', 'SSB']
|
MODE_CHOICES = ['FM', 'AFSK', 'BFSK', 'APRS', 'SSTV', 'CW', 'FMN', 'SSTV', 'GMSK', 'SSB']
|
||||||
|
|
||||||
|
|
||||||
def station_ping(sender, instance, created, **kwargs):
|
|
||||||
if not created:
|
|
||||||
ground_station = Station.objects.get(pk=instance.ground_station.pk)
|
|
||||||
ground_station.last_seen = now()
|
|
||||||
ground_station.save()
|
|
||||||
|
|
||||||
|
|
||||||
class Antenna(models.Model):
|
class Antenna(models.Model):
|
||||||
"""Model for antennas tracked with SatNOGS."""
|
"""Model for antennas tracked with SatNOGS."""
|
||||||
frequency = models.FloatField(validators=[MinValueValidator(0)])
|
frequency = models.FloatField(validators=[MinValueValidator(0)])
|
||||||
|
@ -155,5 +147,3 @@ class Data(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['-start', '-end']
|
ordering = ['-start', '-end']
|
||||||
|
|
||||||
post_save.connect(station_ping, sender=Data)
|
|
||||||
|
|
Loading…
Reference in New Issue