Skip to content

Commit c31e496

Browse files
committed
增加配置说明,owntracks功能修改
1 parent c6a5bba commit c31e496

File tree

9 files changed

+133
-15
lines changed

9 files changed

+133
-15
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ windows电脑:
9090

9191

9292
浏览器打开: http://127.0.0.1:8000/ 就可以看到效果了。
93-
93+
## 更多配置:
94+
[更多配置介绍](/bin/config.md)
9495
## 问题相关
9596

9697
有任何问题欢迎提Issue,或者将问题描述发送至我邮箱 `liangliangyy#gmail.com`.我会尽快解答.推荐提交Issue方式.
97-

bin/config.md

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# 主要功能配置介绍:
2+
3+
## 缓存:
4+
缓存默认使用`memcache`缓存,如果你没有`memcache`环境,则将`settings.py`中的`locmemcache`改为`default`,并删除默认的`default`配置即可。
5+
```python
6+
CACHES = {
7+
'default': {
8+
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
9+
'LOCATION': '127.0.0.1:11211',
10+
'KEY_PREFIX': 'django_test' if TESTING else 'djangoblog',
11+
'TIMEOUT': 60 * 60 * 10
12+
},
13+
'locmemcache': {
14+
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
15+
'TIMEOUT': 10800,
16+
'LOCATION': 'unique-snowflake',
17+
}
18+
}
19+
```
20+
## oauth登录:
21+
22+
现在已经支持微博,Google,GitHub,Facebook登录,需要在其对应的开放平台申请oauth登录权限,然后修改`settings.py`中的如下配置:
23+
```python
24+
OAHUTH = {
25+
'sina': {
26+
'appkey': os.environ.get('SINA_APP_KEY'),
27+
'appsecret': os.environ.get('SINA_APP_SECRET'),
28+
'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=weibo'
29+
},
30+
'google': {
31+
'appkey': os.environ.get('GOOGLE_APP_KEY'),
32+
'appsecret': os.environ.get('GOOGLE_APP_SECRET'),
33+
'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=google'
34+
},
35+
'github': {
36+
'appkey': os.environ.get('GITHUB_APP_KEY'),
37+
'appsecret': os.environ.get('GITHUB_APP_SECRET'),
38+
'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=github'
39+
},
40+
'facebook': {
41+
'appkey': os.environ.get('FACEBOOK_APP_KEY'),
42+
'appsecret': os.environ.get('FACEBOOK_APP_SECRET'),
43+
'callbackurl': 'http://www.lylinux.net/oauth/authorize?type=facebook'
44+
}
45+
}
46+
```
47+
将对应的appkey和appsecret修改为你自己的,将`callbackurl`的域名也修改为你的域名。
48+
49+
## owntracks:
50+
owntracks是一个位置追踪软件,可以定时的将你的坐标提交到你的服务器上,现在简单的支持owntracks功能,需要安装owntracks的app,然后将api地址设置为:
51+
`你的域名/owntracks/logtracks`就可以了。然后访问`你的域名/owntracks/show_dates`就可以看到有经纬度记录的日期,点击之后就可以看到运动轨迹了。地图是使用高德地图绘制。
52+
53+
## 邮件功能:
54+
同样,将`settings.py`中的`ADMINS = [('liangliang', '[email protected]')]`配置为你自己的错误接收邮箱,另外修改:
55+
```python
56+
EMAIL_HOST = 'smtp.zoho.com'
57+
EMAIL_PORT = 587
58+
EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER')
59+
EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD')
60+
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
61+
SERVER_EMAIL = os.environ.get('DJANGO_EMAIL_USER')
62+
```
63+
为你自己的邮箱配置。
64+
65+
## 微信公众号
66+
集成了简单的微信公众号功能,在微信后台将token地址设置为:`你的域名/robot` 即可,默认token为`lylinux`,当然你可以修改为你自己的,在`servermanager/robot.py`中。

owntracks/tests.py

+8
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ def test_own_track_log(self):
2828
self.client.post('/owntracks/logtracks', json.dumps(o), content_type='application/json')
2929
length = len(OwnTrackLog.objects.all())
3030
self.assertEqual(length, 1)
31+
32+
rsp = self.client.get('/owntracks/show_maps')
33+
self.assertEqual(rsp.status_code, 302)
34+
3135
user = BlogUser.objects.create_superuser(email="[email protected]",
3236
username="liangliangyy1", password="liangliangyy1")
3337

@@ -37,7 +41,11 @@ def test_own_track_log(self):
3741
s.lon = 123.234
3842
s.lat = 34.234
3943
s.save()
44+
rsp = self.client.get('/owntracks/show_dates')
45+
self.assertEqual(rsp.status_code, 200)
4046
rsp = self.client.get('/owntracks/show_maps')
4147
self.assertEqual(rsp.status_code, 200)
4248
rsp = self.client.get('/owntracks/get_datas')
4349
self.assertEqual(rsp.status_code, 200)
50+
rsp = self.client.get('/owntracks/get_datas?date=2018-02-26')
51+
self.assertEqual(rsp.status_code, 200)

owntracks/urls.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@
1818
app_name = "owntracks"
1919

2020
urlpatterns = [
21-
path('owntracks/logtracks', views.manage_owntrack_log),
22-
path('owntracks/show_maps', views.show_maps),
23-
path('owntracks/get_datas', views.get_datas)
21+
path('owntracks/logtracks', views.manage_owntrack_log, name='logtracks'),
22+
path('owntracks/show_maps', views.show_maps, name='show_maps'),
23+
path('owntracks/get_datas', views.get_datas, name='get_datas'),
24+
path('owntracks/show_dates', views.show_log_dates, name='show_dates')
2425
]
25-
26-
# http://home.lylinux.net:2213/owntracks/logtracks

owntracks/views.py

+31-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
# Create your views here.
44
import json
5+
import datetime
56
from itertools import groupby
67
from django.http import HttpResponse
78
from .models import OwnTrackLog
@@ -38,7 +39,27 @@ def manage_owntrack_log(request):
3839

3940
@login_required
4041
def show_maps(request):
41-
return render(request, 'owntracks/show_maps.html')
42+
if request.user.is_superuser:
43+
defaultdate = str(datetime.datetime.now().date())
44+
date = request.GET.get('date', defaultdate)
45+
context = {
46+
'date': date
47+
}
48+
return render(request, 'owntracks/show_maps.html', context)
49+
else:
50+
from django.http import HttpResponseForbidden
51+
return HttpResponseForbidden()
52+
53+
54+
@login_required
55+
def show_log_dates(request):
56+
dates = OwnTrackLog.objects.values_list('created_time', flat=True)
57+
results = list(set(map(lambda x: x.strftime('%Y-%m-%d'), dates)))
58+
59+
context = {
60+
'results': results
61+
}
62+
return render(request, 'owntracks/show_log_dates.html', context)
4263

4364

4465
def convert_to_amap(locations):
@@ -52,14 +73,20 @@ def convert_to_amap(locations):
5273
'coordsys': 'gps'
5374
}
5475
rsp = requests.get(url=api, params=query)
55-
logger.info(type(rsp.text))
76+
5677
result = json.loads(rsp.text)
5778
return result['locations']
5879

5980

6081
@login_required
6182
def get_datas(request):
62-
models = OwnTrackLog.objects.all()
83+
now = datetime.datetime.now()
84+
querydate = datetime.datetime(now.year, now.month, now.day, 0, 0, 0)
85+
if request.GET.get('date', None):
86+
date = list(map(lambda x: int(x), request.GET.get('date').split('-')))
87+
querydate = datetime.datetime(date[0], date[1], date[2], 0, 0, 0)
88+
nextdate = querydate + datetime.timedelta(days=1)
89+
models = OwnTrackLog.objects.filter(created_time__range=(querydate, nextdate))
6390
result = list()
6491
if models and len(models):
6592
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):
7299
paths.append(i.split(','))
73100
d["path"] = paths
74101
result.append(d)
75-
return JsonResponse(result, safe=False)
102+
return JsonResponse(result, safe=False)

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jsonpickle==0.9.6
1818
markdown2==2.3.5
1919
mistune==0.8.3
2020
olefile==0.45.1
21-
packaging==16.8
21+
packaging==17.1
2222
Pillow==5.0.0
2323
Pygments==2.2.0
2424
PyMySQL==0.8.0

templates/blog/tags/sidebar.html

+1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@
121121
{% endif %}
122122
{% if user.is_superuser %}
123123
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
124+
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
124125
{% endif %}
125126
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
126127
</ul>
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>记录日期</title>
6+
</head>
7+
<body>
8+
9+
<ul>
10+
{% for date in results %}
11+
<li>
12+
<a href="{% url 'owntracks:show_maps' %}?date={{ date }}">{{ date }}</a>
13+
</li>
14+
{% endfor %}
15+
</ul>
16+
</body>
17+
</html>

templates/owntracks/show_maps.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
font-size: 14px;
2424
}
2525
</style>
26-
<title>快速入门</title>
26+
<title>运动轨迹</title>
2727
</head>
2828

2929
<body>
@@ -98,7 +98,7 @@
9898

9999
$('<div id="loadingTip">加载数据,请稍候...</div>').appendTo(document.body);
100100

101-
$.getJSON('/owntracks/get_datas', function (d) {
101+
$.getJSON('/owntracks/get_datas?date={{ date }}', function (d) {
102102

103103
if (!d || !d.length) {
104104
$("#loadingTip").text("没有数据...")
@@ -120,7 +120,7 @@
120120
d.forEach(function (item, index) {
121121
var navg1 = pathSimplifierIns.createPathNavigator(index, {
122122
loop: true,
123-
speed: 1000000,
123+
speed: 1000,
124124
});
125125

126126
navg1.start();

0 commit comments

Comments
 (0)