1
0
Fork 0

Fix last_seen on jobs GET

merge-requests/136/head
Nikos Roussos 2015-06-21 17:44:25 -07:00
parent 3c0c7aa23d
commit cb8ed897c3
4 changed files with 29 additions and 29 deletions

View File

@ -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):

View File

@ -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

View File

@ -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),
),
]

View File

@ -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)