kumify/gpslog/views.py

37 lines
1.3 KiB
Python

from django.views import View
from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import get_object_or_404
from django.utils import timezone
from django.contrib.gis.geos import Point
from .models import GPSTrack, GPSToken, GPSPoint
class GPSLogView(LoginRequiredMixin, View):
def dispatch(self, request, *args, **kwargs):
self.gps_track = get_object_or_404(GPSTrack, id=self.kwargs["track"])
self.gps_token = get_object_or_404(
GPSToken, track=self.gps_track, token=self.kwargs["token"])
if request.method == "POST" and not self.gps_token.write:
return self.http_method_not_allowed(request, *args, **kwargs)
return super().dispatch(request, *args, **kwargs)
# ?lat=47.07047834&lon=15.45140181&alt=427.04833984375&tst=1043419092&batt=23.0&acc=14.692631721496582&spd=0.0&dir=&sat=6
def get(self, request, *args, **kwargs):
if self.gps_token.write and all(field in request.GET for field in ("lat", "lon")):
lat = request.GET["lat"]
lon = request.GET["lon"]
alt = request.GET.get("alt", None)
point = Point(lat, lon, alt)
tst = request.GET.get("tst", timezone.now().timestamp())
def post(self, request, *args, **kwargs):
pass