diff --git a/README.md b/README.md index f303a77..373ea18 100644 --- a/README.md +++ b/README.md @@ -90,8 +90,8 @@ windows电脑: 浏览器打开: http://127.0.0.1:8000/ 就可以看到效果了。 - +## 更多配置: +[更多配置介绍](/bin/config.md) ## 问题相关 有任何问题欢迎提Issue,或者将问题描述发送至我邮箱 `liangliangyy#gmail.com`.我会尽快解答.推荐提交Issue方式. - diff --git a/bin/config.md b/bin/config.md new file mode 100644 index 0000000..9393c58 --- /dev/null +++ b/bin/config.md @@ -0,0 +1,66 @@ +# 主要功能配置介绍: + +## 缓存: +缓存默认使用`memcache`缓存,如果你没有`memcache`环境,则将`settings.py`中的`locmemcache`改为`default`,并删除默认的`default`配置即可。 +```python +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', + 'LOCATION': '127.0.0.1:11211', + 'KEY_PREFIX': 'django_test' if TESTING else 'djangoblog', + 'TIMEOUT': 60 * 60 * 10 + }, + 'locmemcache': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'TIMEOUT': 10800, + 'LOCATION': 'unique-snowflake', + } +} +``` +## oauth登录: + +现在已经支持微博,Google,GitHub,Facebook登录,需要在其对应的开放平台申请oauth登录权限,然后修改`settings.py`中的如下配置: +```python +OAHUTH = { + 'sina': { + 'appkey': os.environ.get('SINA_APP_KEY'), + 'appsecret': os.environ.get('SINA_APP_SECRET'), + 'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=weibo' + }, + 'google': { + 'appkey': os.environ.get('GOOGLE_APP_KEY'), + 'appsecret': os.environ.get('GOOGLE_APP_SECRET'), + 'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=google' + }, + 'github': { + 'appkey': os.environ.get('GITHUB_APP_KEY'), + 'appsecret': os.environ.get('GITHUB_APP_SECRET'), + 'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=github' + }, + 'facebook': { + 'appkey': os.environ.get('FACEBOOK_APP_KEY'), + 'appsecret': os.environ.get('FACEBOOK_APP_SECRET'), + 'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=facebook' + } +} +``` +将对应的appkey和appsecret修改为你自己的,将`callbackurl`的域名也修改为你的域名。 + +## owntracks: +owntracks是一个位置追踪软件,可以定时的将你的坐标提交到你的服务器上,现在简单的支持owntracks功能,需要安装owntracks的app,然后将api地址设置为: +`你的域名/owntracks/logtracks`就可以了。然后访问`你的域名/owntracks/show_dates`就可以看到有经纬度记录的日期,点击之后就可以看到运动轨迹了。地图是使用高德地图绘制。 + +## 邮件功能: +同样,将`settings.py`中的`ADMINS = [('liangliang', 'liangliangyy@gmail.com')]`配置为你自己的错误接收邮箱,另外修改: +```python +EMAIL_HOST = 'smtp.zoho.com' +EMAIL_PORT = 587 +EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') +EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') +DEFAULT_FROM_EMAIL = EMAIL_HOST_USER +SERVER_EMAIL = os.environ.get('DJANGO_EMAIL_USER') +``` +为你自己的邮箱配置。 + +## 微信公众号 +集成了简单的微信公众号功能,在微信后台将token地址设置为:`你的域名/robot` 即可,默认token为`lylinux`,当然你可以修改为你自己的,在`servermanager/robot.py`中。 diff --git a/owntracks/tests.py b/owntracks/tests.py index 9b35495..cb850fd 100644 --- a/owntracks/tests.py +++ b/owntracks/tests.py @@ -28,6 +28,10 @@ class OwnTrackLogTest(TestCase): self.client.post('/owntracks/logtracks', json.dumps(o), content_type='application/json') length = len(OwnTrackLog.objects.all()) self.assertEqual(length, 1) + + rsp = self.client.get('/owntracks/show_maps') + self.assertEqual(rsp.status_code, 302) + user = BlogUser.objects.create_superuser(email="liangliangyy1@gmail.com", username="liangliangyy1", password="liangliangyy1") @@ -37,7 +41,11 @@ class OwnTrackLogTest(TestCase): s.lon = 123.234 s.lat = 34.234 s.save() + rsp = self.client.get('/owntracks/show_dates') + self.assertEqual(rsp.status_code, 200) 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) + rsp = self.client.get('/owntracks/get_datas?date=2018-02-26') + self.assertEqual(rsp.status_code, 200) diff --git a/owntracks/urls.py b/owntracks/urls.py index 7a7d5d3..ee44cf5 100644 --- a/owntracks/urls.py +++ b/owntracks/urls.py @@ -18,9 +18,8 @@ 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) + path('owntracks/logtracks', views.manage_owntrack_log, name='logtracks'), + path('owntracks/show_maps', views.show_maps, name='show_maps'), + path('owntracks/get_datas', views.get_datas, name='get_datas'), + path('owntracks/show_dates', views.show_log_dates, name='show_dates') ] - -# http://home.lylinux.net:2213/owntracks/logtracks diff --git a/owntracks/views.py b/owntracks/views.py index 8627f7c..0251e2e 100644 --- a/owntracks/views.py +++ b/owntracks/views.py @@ -2,6 +2,7 @@ from django.shortcuts import render # Create your views here. import json +import datetime from itertools import groupby from django.http import HttpResponse from .models import OwnTrackLog @@ -38,7 +39,27 @@ def manage_owntrack_log(request): @login_required def show_maps(request): - return render(request, 'owntracks/show_maps.html') + if request.user.is_superuser: + defaultdate = str(datetime.datetime.now().date()) + date = request.GET.get('date', defaultdate) + context = { + 'date': date + } + return render(request, 'owntracks/show_maps.html', context) + else: + from django.http import HttpResponseForbidden + return HttpResponseForbidden() + + +@login_required +def show_log_dates(request): + dates = OwnTrackLog.objects.values_list('created_time', flat=True) + results = list(set(map(lambda x: x.strftime('%Y-%m-%d'), dates))) + + context = { + 'results': results + } + return render(request, 'owntracks/show_log_dates.html', context) def convert_to_amap(locations): @@ -52,14 +73,20 @@ def convert_to_amap(locations): 'coordsys': 'gps' } rsp = requests.get(url=api, params=query) - logger.info(type(rsp.text)) + result = json.loads(rsp.text) return result['locations'] @login_required def get_datas(request): - models = OwnTrackLog.objects.all() + now = datetime.datetime.now() + querydate = datetime.datetime(now.year, now.month, now.day, 0, 0, 0) + if request.GET.get('date', None): + date = list(map(lambda x: int(x), request.GET.get('date').split('-'))) + querydate = datetime.datetime(date[0], date[1], date[2], 0, 0, 0) + nextdate = querydate + datetime.timedelta(days=1) + models = OwnTrackLog.objects.filter(created_time__range=(querydate, nextdate)) result = list() if models and len(models): for tid, item in groupby(sorted(models, key=lambda k: k.tid), key=lambda k: k.tid): @@ -72,4 +99,4 @@ def get_datas(request): paths.append(i.split(',')) d["path"] = paths result.append(d) - return JsonResponse(result, safe=False) + return JsonResponse(result, safe=False) diff --git a/requirements.txt b/requirements.txt index f5f9134..beb7a24 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,7 +18,7 @@ jsonpickle==0.9.6 markdown2==2.3.5 mistune==0.8.3 olefile==0.45.1 -packaging==16.8 +packaging==17.1 Pillow==5.0.0 Pygments==2.2.0 PyMySQL==0.8.0 diff --git a/templates/blog/tags/sidebar.html b/templates/blog/tags/sidebar.html index 3378d2a..4ee9c24 100755 --- a/templates/blog/tags/sidebar.html +++ b/templates/blog/tags/sidebar.html @@ -121,6 +121,7 @@ {% endif %} {% if user.is_superuser %}
  • 刷新缓存
  • +
  • 运动轨迹记录
  • {% endif %}
  • GitBook
  • diff --git a/templates/owntracks/show_log_dates.html b/templates/owntracks/show_log_dates.html new file mode 100644 index 0000000..aba183e --- /dev/null +++ b/templates/owntracks/show_log_dates.html @@ -0,0 +1,17 @@ + + + + + 记录日期 + + + + + + \ No newline at end of file diff --git a/templates/owntracks/show_maps.html b/templates/owntracks/show_maps.html index f753ae9..3aeda36 100644 --- a/templates/owntracks/show_maps.html +++ b/templates/owntracks/show_maps.html @@ -98,7 +98,7 @@ $('
    加载数据,请稍候...
    ').appendTo(document.body); - $.getJSON('/owntracks/get_datas', function (d) { + $.getJSON('/owntracks/get_datas?date={{ date }}', function (d) { if (!d || !d.length) { $("#loadingTip").text("没有数据...") @@ -120,7 +120,7 @@ d.forEach(function (item, index) { var navg1 = pathSimplifierIns.createPathNavigator(index, { loop: true, - speed: 1000000, + speed: 1000, }); navg1.start();