parent
d8eb0f2dd5
commit
a10e227fca
@ -0,0 +1,8 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
from .models import OwnTrackLog
|
||||
|
||||
|
||||
class OwnTrackLogsAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class OwntracksConfig(AppConfig):
|
||||
name = 'owntracks'
|
||||
@ -0,0 +1,20 @@
|
||||
from django.db import models
|
||||
from django.utils.timezone import now
|
||||
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class OwnTrackLog(models.Model):
|
||||
tid = models.CharField(max_length=100, null=False, verbose_name='用户')
|
||||
lat = models.FloatField(verbose_name='纬度')
|
||||
lon = models.FloatField(verbose_name='经度')
|
||||
created_time = models.DateTimeField('创建时间', default=now)
|
||||
|
||||
def __str__(self):
|
||||
return self.tid
|
||||
|
||||
class Meta:
|
||||
ordering = ['created_time']
|
||||
verbose_name = "OwnTrackLogs"
|
||||
verbose_name_plural = verbose_name
|
||||
get_latest_by = 'created_time'
|
||||
@ -0,0 +1,27 @@
|
||||
from django.test import Client, RequestFactory, TestCase
|
||||
from .models import OwnTrackLog
|
||||
from accounts.models import BlogUser
|
||||
import json
|
||||
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
class OwnTrackLogTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
self.factory = RequestFactory()
|
||||
|
||||
def test_own_track_log(self):
|
||||
user = BlogUser.objects.create_superuser(email="liangliangyy1@gmail.com",
|
||||
username="liangliangyy1", password="liangliangyy1")
|
||||
|
||||
self.client.login(username='liangliangyy1', password='liangliangyy1')
|
||||
s = OwnTrackLog()
|
||||
s.tid = 12
|
||||
s.lon = 123.234
|
||||
s.lat = 34.234
|
||||
s.save()
|
||||
rsp = self.client.get('/owntracks/show_maps')
|
||||
self.assertEqual(rsp.status_code, 200)
|
||||
rsp = self.client.get('/owntracks/get_datas')
|
||||
self.assertEqual(rsp.status_code, 200)
|
||||
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
|
||||
"""
|
||||
@version: ??
|
||||
@author: liangliangyy
|
||||
@license: MIT Licence
|
||||
@contact: liangliangyy@gmail.com
|
||||
@site: https://www.lylinux.net/
|
||||
@software: PyCharm
|
||||
@file: urls.py
|
||||
@time: 2018/2/25 下午3:04
|
||||
"""
|
||||
from django.urls import path
|
||||
from . import views
|
||||
|
||||
app_name = "owntracks"
|
||||
|
||||
urlpatterns = [
|
||||
path('owntracks/logtracks', views.manage_owntrack_log),
|
||||
path('owntracks/show_maps', views.show_maps),
|
||||
path('owntracks/get_datas', views.get_datas)
|
||||
]
|
||||
|
||||
# http://home.lylinux.net:2213/owntracks/logtracks
|
||||
@ -0,0 +1,59 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
import json
|
||||
from itertools import groupby
|
||||
from django.http import HttpResponse
|
||||
from .models import OwnTrackLog
|
||||
from DjangoBlog.utils import logger
|
||||
from django.shortcuts import render
|
||||
from django.http import JsonResponse
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def manage_owntrack_log(request):
|
||||
try:
|
||||
s = json.loads(request.body)
|
||||
tid = s['tid']
|
||||
lat = s['lat']
|
||||
lon = s['lon']
|
||||
logger.info('tid:{tid}.lat:{lat}.lon:{lon}'.format(tid=tid, lat=lat, lon=lon))
|
||||
if tid and lat and lon:
|
||||
m = OwnTrackLog()
|
||||
m.tid = tid
|
||||
m.lat = lat
|
||||
m.lon = lon
|
||||
m.save()
|
||||
return HttpResponse('ok')
|
||||
else:
|
||||
return HttpResponse('data error')
|
||||
except Exception as e:
|
||||
logger.warn(e)
|
||||
return HttpResponse('error')
|
||||
|
||||
|
||||
@login_required
|
||||
def show_maps(request):
|
||||
return render(request, 'owntracks/show_maps.html')
|
||||
|
||||
|
||||
@login_required
|
||||
def get_datas(request):
|
||||
models = OwnTrackLog.objects.all()
|
||||
result = list()
|
||||
if models and len(models):
|
||||
for tid, item in groupby(sorted(models, key=lambda k: k.tid), key=lambda k: k.tid):
|
||||
|
||||
d = dict()
|
||||
d["name"] = tid
|
||||
paths = list()
|
||||
for i in item:
|
||||
path = list()
|
||||
path.append(i.lon)
|
||||
path.append(i.lat)
|
||||
paths.append(path)
|
||||
d["path"] = paths
|
||||
result.append(d)
|
||||
return JsonResponse(result, safe=False)
|
||||
Loading…
Reference in new issue