Merge remote-tracking branch '210.77.77.77/master'

# Conflicts:
#	polls/views.py
This commit is contained in:
Bob 2020-08-21 08:50:35 +08:00
commit 788ff23716
5 changed files with 129 additions and 11 deletions

View File

@ -5,4 +5,16 @@ pip install -r requirements.txt
pip install git+https://github.com/RobWeber3/django-token.git pip install git+https://github.com/RobWeber3/django-token.git
```
# migrations
不要在本机上做make migrations 和migrate
```shell
cd /home/g214/tools/nmm/NewMediaMonitoring
git pull # enter username && password
source .venv/bin/activate
python manage.py make migrations
python manage.py migrate
``` ```

View File

@ -1,3 +1,28 @@
from django.db import models from django.db import models
import uuid
import datetime
# Create your models here. VERIFY_CODE_TYPE_CHOICES = (
(0, 'register'),
(1, 'password_recover'),
)
class VerifyCode(models.Model):
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
code = models.CharField('code', max_length=8, null=False)
phone = models.CharField('phone', max_length=11, null=False)
timeouted = models.DateTimeField('timeouted', null=False)
category = models.IntegerField('category', choices=VERIFY_CODE_TYPE_CHOICES, default=0)
added = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ["-added"]
def is_in_progress(self):
now = datetime.datetime.now()
return snow <= self.timeouted
def __str__(self):
return self.phone + ':' + self.code

7
polls/utils.py Normal file
View File

@ -0,0 +1,7 @@
import random
def sent_sms_code(phone):
pass
def generate_code():
return random.randint(1000, 9999)

View File

@ -2,8 +2,7 @@ from django.shortcuts import render
from django.http import HttpResponse, JsonResponse from django.http import HttpResponse, JsonResponse
from django.contrib.auth import get_user_model, authenticate, login from django.contrib.auth import get_user_model, authenticate, login
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django_token.models import Token
# Create your views here.
def index(request): def index(request):
@ -34,10 +33,85 @@ def polls_login(request):
u = authenticate(request, username=user.username, password=password) u = authenticate(request, username=user.username, password=password)
if u is not None: if u is not None:
login(request, u) login(request, u)
print(u) token = Token.objects.get_or_create(user=u)
result = dict() result = dict()
return JsonResponse(result) profile = u.userprofile_set.first()
result['phone'] = u.first_name
result['token'] = token
if profile:
result['name'] = profile.name
result['gender'] = profile.sex
result['thumbnail'] = profile.image.path
result['organization'] = profile.organization.name
return JsonResponse({'status': 'success', 'message': result})
else: else:
return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) return JsonResponse({'status': 'error', 'message': '用户名或密码错误'})
else: else:
return JsonResponse({}) return HttpResponse(status=405)
@csrf_exempt
def send_code(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
category = request.POST.get('category', 0)
if not phone:
return JsonResponse({'status': 'error', 'message': '手机号不正确'})
exist_code = VerifyCode.objects.filter(phone=phone, category=category).first()
if exist_code and exist_code.in_progress():
return JsonResponse({'status': 'error', 'message': '验证码使用中'})
code = generate_code()
now = datetime.datetime.now()
after_10mins = now + datetime.timedelta(minutes=10)
VerifyCode.objects.create(code=code, phone=phone, category=category)
return JsonResponse({'status': 'success'})
@csrf_exempt
def register_step_one(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
code = request.POST.get('code')
exist_code = VerifyCode.objects.filter(phone=phone, code=code, category=0).exist()
if exist_code.in_progress():
return JsonResponse({'status': 'success', 'message': {phone: phone}})
else:
return JsonResponse({'status': 'error', 'message': '验证码超时,请重发'})
@csrf_exempt
def register_step_two(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
name = request.POST.get('name')
gender = request.POST.get('gender')
organization = request.POST.get('organization')
# create user
return JsonResponse({'status': 'success', 'message': '注册成功'})
@csrf_exempt
def password_recover_step_one(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
code = request.POST.get('code')
exist_code = VerifyCode.objects.filter(phone=phone, code=code, category=1).exist()
if exist_code.in_progress():
return JsonResponse({'status': 'success', 'message': {phone: phone}})
else:
return JsonResponse({'status': 'error', 'message': '验证码超时,请重发'})
@csrf_exempt
def password_recover_step_two(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
password = request.POST.get('password')
password_confirm = request.POST.get('password_confirm')

View File

@ -1,5 +1,5 @@
# Django~=2.2.15 Django~=2.2.15
# django-bootstrap3 django-bootstrap3
# django-simple-captcha django-simple-captcha
# psycopg2-binary psycopg2-binary
# django-cors-headers django-cors-headers