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
|
||||
|
||||
|
||||
|
@ -12,18 +10,6 @@ class SafeMethodsOnlyPermission(permissions.BasePermission):
|
|||
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):
|
||||
"""Only the owner can edit station jobs"""
|
||||
def has_object_permission(self, request, view, obj):
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from django.utils.timezone import now
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
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.base.models import (Antenna, Data, Observation, Satellite,
|
||||
Station, Transponder)
|
||||
|
@ -46,9 +47,13 @@ class JobView(viewsets.ReadOnlyModelViewSet):
|
|||
serializer_class = serializers.JobSerializer
|
||||
filter_class = filters.DataViewFilter
|
||||
filter_fields = ('ground_station')
|
||||
permission_classes = [
|
||||
StationOwnerCanViewPermission
|
||||
]
|
||||
|
||||
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.utils.timezone import now
|
||||
from django.conf import settings
|
||||
from django.db.models.signals import post_save
|
||||
from django.utils.html import format_html
|
||||
|
||||
from network.users.models import User
|
||||
|
@ -21,13 +20,6 @@ ANTENNA_TYPES = (
|
|||
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):
|
||||
"""Model for antennas tracked with SatNOGS."""
|
||||
frequency = models.FloatField(validators=[MinValueValidator(0)])
|
||||
|
@ -155,5 +147,3 @@ class Data(models.Model):
|
|||
|
||||
class Meta:
|
||||
ordering = ['-start', '-end']
|
||||
|
||||
post_save.connect(station_ping, sender=Data)
|
||||
|
|
Loading…
Reference in New Issue