import json import copy from django.utils import timezone from django.shortcuts import render from user.models import User as User_models from order.models import Order as Order_models # Create your views here. from django.http import HttpResponse, JsonResponse from django.views.decorators.http import require_http_methods from django.views.decorators.csrf import csrf_exempt from django.core import serializers # 序列化 QuerySet from admin_site.utils import setError, setSuccess, userPersonToDictionary, get_timestamp,user_to_dict from sick.views import add_sick from sick.models import Sick as Sick_models from rest_framework.parsers import JSONParser import jwt import re import pytz # from rest_framework.views import APIView # from rest_framework.response import Response def index(request): return HttpResponse("Hello, user index") @csrf_exempt @require_http_methods(["POST"]) def info(request): # print(26, request.POST.get('token')) if request.POST.get('token') == None: return HttpResponse(setError("该用户不存在!")) user_info = userPersonToDictionary(User_models.objects.get(token=request.POST.get('token'))) print(34343, user_info['id']) if user_info['isSick'] == 'true': sick_list_dic = Sick_models.objects.filter(user_id=user_info['id']) sick_list = [] for key in sick_list_dic: print(39, key.name) sick_list.append(key.name) print(42, sick_list) if len(sick_list) > 0: user_info.setdefault('sick', sick_list) print('user_info', user_info) return JsonResponse(setSuccess(data=user_info)) """ 用户登陆 """ @csrf_exempt @require_http_methods(["POST"]) def login(request): body = request.POST if body.get('email') == None: return HttpResponse(setError("该用户不存在!")) if body.get('password') == None: return HttpResponse(setError("该用户不存在!")) user_info = User_models.objects.get(email=body.get('email'), password=body.get('password')) name = body.get("name", None) password = body.get("password", None) now_time = timezone.localtime() user_str = {'username': name, 'password': password, 'now_time': get_timestamp(now_time)} token = jwt.encode(user_str, 'sercet', algorithm='HS256') params = { "token": token, 'token_exit_time': now_time } User_models.objects.filter(id=user_info.id).update(**params) new_user_info = user_to_dict(user_info) params = {**new_user_info,**params} return JsonResponse(setSuccess(data=params)) @csrf_exempt @require_http_methods(["POST"]) def register(request): body = request.POST is_add = User_models.objects.all().filter(email=body.get('email')) if len(is_add) > 0: return JsonResponse(setError("当前邮箱已存在,添加失败")) params = { 'email': body.get('email'), 'password': body.get('email'), } user_add = User_models(**params) user_add.save() return JsonResponse(setSuccess(msg='注册成功', data=True)) @csrf_exempt @require_http_methods(["POST"]) def update(request): body = request.POST.dict() print(80808080, body) if body['id'] == None or body['id'] == '': return JsonResponse(setError("用户不存在")) # if(body['id']) new_body = {} body.setdefault('is_sick', body['isSick']) print(99, body['is_sick']) del body['isSick'] if body['is_sick'] == 'true': add_sick(request) for field in body: match = re.search(r'\bsick\[\b', field) if match == None: new_body[field] = body[field] else: print(107, body['is_sick']) Sick_models.objects.filter(user_id=body.get('id')).delete() new_body = body # type # field_list = ['address', 'password', 'nickname', 'mobile'] # params = {} # # 用户信息更新 # if (body.get('type') == 'Fl001'): # # 如果字段中存在未完成订单,不允许修改地址,联系方式 # if body.get('address') != None or body.get('mobile') != None: # # 查询数据库中是否存在未完成订单 # user_order = Order_models.objects.filter(user_id=body['id'], status__lte=2) # if len(user_order) > 0: # return JsonResponse(setError("存在未完成订单,无法修改!")) # for key in field_list: # if params.get(key) == None and body.get(key) != None: # params.setdefault(key, body.get(key)) # # elif body.get(key) != None and params.get(key) != None: # # setattr(params, key, body.get(key)) # # # 司机信息或者是回收站更新 # if body.get('type') == 'Fl002' or body.get('type') == 'Fl003': # for key in field_list: # # if body.get(key) != None and key != 'address': # # setattr(params, key, body.get(key)) # if params.get(key) == None and body.get(key) != None and key != 'address': # params.setdefault(key, body.get(key)) # Order_models.objects.filter(user_id=body['id'], status__lte=1) User_models.objects.filter(id=body['id']).update(**new_body) return JsonResponse(setSuccess(msg='更新成功', data=True))