From a10e227fca7385c8f04edceb2211a688ccde483d Mon Sep 17 00:00:00 2001 From: liangliang Date: Sun, 25 Feb 2018 17:56:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=B0=E5=BD=95owntracks?= =?UTF-8?q?=E7=BB=8F=E7=BA=AC=E5=BA=A6=E4=BF=A1=E6=81=AF=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=F0=9F=A4=93=F0=9F=A4=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DjangoBlog/admin_site.py | 3 + DjangoBlog/settings.py | 1 + DjangoBlog/urls.py | 3 +- accounts/models.py | 1 - owntracks/__init__.py | 0 owntracks/admin.py | 8 ++ owntracks/apps.py | 5 ++ owntracks/migrations/__init__.py | 0 owntracks/models.py | 20 +++++ owntracks/tests.py | 27 ++++++ owntracks/urls.py | 26 ++++++ owntracks/views.py | 59 +++++++++++++ requirements.txt | 8 +- servermanager/admin.py | 3 + templates/owntracks/show_maps.html | 135 +++++++++++++++++++++++++++++ travis_test/requirements.txt | 10 +-- travis_test/travis_settings.py | 1 + 17 files changed, 299 insertions(+), 11 deletions(-) create mode 100644 owntracks/__init__.py create mode 100644 owntracks/admin.py create mode 100644 owntracks/apps.py create mode 100644 owntracks/migrations/__init__.py create mode 100644 owntracks/models.py create mode 100644 owntracks/tests.py create mode 100644 owntracks/urls.py create mode 100644 owntracks/views.py create mode 100644 templates/owntracks/show_maps.html diff --git a/DjangoBlog/admin_site.py b/DjangoBlog/admin_site.py index 1c7fdb2..f59fb70 100644 --- a/DjangoBlog/admin_site.py +++ b/DjangoBlog/admin_site.py @@ -19,6 +19,7 @@ from accounts.admin import * from oauth.admin import * from servermanager.admin import * from comments.admin import * +from owntracks.admin import * class DjangoBlogAdminSite(AdminSite): @@ -57,3 +58,5 @@ admin_site.register(BlogUser, BlogUserAdmin) admin_site.register(Comment, CommentAdmin) admin_site.register(OAuthUser, OAuthUserAdmin) + +admin_site.register(OwnTrackLog, OwnTrackLogsAdmin) diff --git a/DjangoBlog/settings.py b/DjangoBlog/settings.py index f08b988..4ff3763 100644 --- a/DjangoBlog/settings.py +++ b/DjangoBlog/settings.py @@ -47,6 +47,7 @@ INSTALLED_APPS = [ 'comments', 'oauth', 'servermanager', + 'owntracks', 'compressor' ] diff --git a/DjangoBlog/urls.py b/DjangoBlog/urls.py index 7e90ff1..e320807 100644 --- a/DjangoBlog/urls.py +++ b/DjangoBlog/urls.py @@ -46,5 +46,6 @@ urlpatterns = [ name='django.contrib.sitemaps.views.sitemap'), url(r'^feed/$', DjangoBlogFeed()), url(r'^search', include('haystack.urls'), name='search'), - url(r'', include('servermanager.urls', namespace='servermanager')) + url(r'', include('servermanager.urls', namespace='servermanager')), + url(r'', include('owntracks.urls', namespace='owntracks')) ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/accounts/models.py b/accounts/models.py index 5bf882f..1ce5059 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -8,7 +8,6 @@ from django.utils.timezone import now # Create your models here. class BlogUser(AbstractUser): - nickname = models.CharField('昵称', max_length=50, blank=True) nickname = models.CharField('昵称', max_length=100, blank=True) mugshot = models.ImageField('头像', upload_to='upload/mugshots', blank=True) created_time = models.DateTimeField('创建时间', default=now) diff --git a/owntracks/__init__.py b/owntracks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/owntracks/admin.py b/owntracks/admin.py new file mode 100644 index 0000000..66d16d3 --- /dev/null +++ b/owntracks/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +# Register your models here. +from .models import OwnTrackLog + + +class OwnTrackLogsAdmin(admin.ModelAdmin): + pass diff --git a/owntracks/apps.py b/owntracks/apps.py new file mode 100644 index 0000000..1bc5f12 --- /dev/null +++ b/owntracks/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class OwntracksConfig(AppConfig): + name = 'owntracks' diff --git a/owntracks/migrations/__init__.py b/owntracks/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/owntracks/models.py b/owntracks/models.py new file mode 100644 index 0000000..30f6ec1 --- /dev/null +++ b/owntracks/models.py @@ -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' diff --git a/owntracks/tests.py b/owntracks/tests.py new file mode 100644 index 0000000..076b6db --- /dev/null +++ b/owntracks/tests.py @@ -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) diff --git a/owntracks/urls.py b/owntracks/urls.py new file mode 100644 index 0000000..7a7d5d3 --- /dev/null +++ b/owntracks/urls.py @@ -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 diff --git a/owntracks/views.py b/owntracks/views.py new file mode 100644 index 0000000..f992495 --- /dev/null +++ b/owntracks/views.py @@ -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) diff --git a/requirements.txt b/requirements.txt index a4bc287..f5f9134 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,19 +2,19 @@ appdirs==1.4.3 bottle==0.12.13 certifi==2018.1.18 chardet==3.0.4 -coverage==4.5 +coverage==4.5.1 Django==2.0.2 django-appconf==1.0.2 django-autoslug==1.9.3 django-compressor==2.2 django-debug-toolbar==1.9.1 -django-haystack==2.6.1 +django-haystack==2.7.0 django-ipware==2.0.1 django-pagedown==1.0.4 django-uuslug==1.1.8 idna==2.6 jieba==0.39 -jsonpickle==0.9.5 +jsonpickle==0.9.6 markdown2==2.3.5 mistune==0.8.3 olefile==0.45.1 @@ -25,7 +25,7 @@ PyMySQL==0.8.0 pyparsing==2.2.0 python-memcached==1.59 python-slugify==1.2.4 -pytz==2017.3 +pytz==2018.3 rcssmin==1.0.6 requests==2.18.4 rjsmin==1.0.12 diff --git a/servermanager/admin.py b/servermanager/admin.py index 99ed5e5..f710673 100644 --- a/servermanager/admin.py +++ b/servermanager/admin.py @@ -5,3 +5,6 @@ from .models import commands class CommandsAdmin(admin.ModelAdmin): list_display = ('title', 'command', 'describe') + + +admin.site.register(commands, CommandsAdmin) diff --git a/templates/owntracks/show_maps.html b/templates/owntracks/show_maps.html new file mode 100644 index 0000000..13201b1 --- /dev/null +++ b/templates/owntracks/show_maps.html @@ -0,0 +1,135 @@ + + + + + + + 快速入门 + + + +
+ + + + + + + + \ No newline at end of file diff --git a/travis_test/requirements.txt b/travis_test/requirements.txt index cd807bc..c2b4583 100644 --- a/travis_test/requirements.txt +++ b/travis_test/requirements.txt @@ -2,19 +2,19 @@ appdirs==1.4.3 bottle==0.12.13 certifi==2018.1.18 chardet==3.0.4 -coverage==4.5 +coverage==4.5.1 Django==2.0.2 django-appconf==1.0.2 django-autoslug==1.9.3 django-compressor==2.2 django-debug-toolbar==1.9.1 -django-haystack==2.6.1 +django-haystack==2.7.0 django-ipware==2.0.1 django-pagedown==1.0.4 django-uuslug==1.1.8 idna==2.6 jieba==0.39 -jsonpickle==0.9.5 +jsonpickle==0.9.6 markdown2==2.3.5 mistune==0.8.3 olefile==0.45.1 @@ -24,7 +24,7 @@ Pygments==2.2.0 PyMySQL==0.8.0 pyparsing==2.2.0 python-slugify==1.2.4 -pytz==2017.3 +pytz==2018.3 rcssmin==1.0.6 requests==2.18.4 rjsmin==1.0.12 @@ -35,4 +35,4 @@ urllib3==1.22 webencodings==0.5.1 WeRoBot==1.2.0 Whoosh==2.7.4 -xmltodict==0.11.0 +xmltodict==0.11.0 \ No newline at end of file diff --git a/travis_test/travis_settings.py b/travis_test/travis_settings.py index a13a429..000e388 100644 --- a/travis_test/travis_settings.py +++ b/travis_test/travis_settings.py @@ -48,6 +48,7 @@ INSTALLED_APPS = [ 'comments', 'oauth', 'servermanager', + 'owntracks', 'compressor' ]