#coding=utf-8 ''' ''' import json import datetime import logging import re import hashlib import xlrd from django.core.cache import cache from django.db.models import Q from django.db.models import Sum from django.db import transaction from django.contrib import auth import common.models as cm import common.error_info as ce import password_handle as ph import common.common_functions as ccf def add_user(request): """ """ kwargs = request.json need_params = ["realname","phone","department_id","utype","is_active"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) if cm.UserInfo.objects.filter(phone=kwargs.get("phone")).exists(): raise ce.TipException(u"该用户已存在!") need_params.extend(["email","remark"]) cvals = ccf.get_need_params(*need_params,**kwargs) cvals.update({"name":cvals.get("phone")}) cvals.update({"password":ph.make_password(cvals.get("phone")[-6:],True)}) cvals["cid"] = request.user.id cvals["cperson"] = request.user.realname obj = cm.UserInfo.objects.create(**cvals) return obj def delete_user(request): kwargs = request.json need_params = ["id"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) ids = str(kwargs.get("id")).split(",") cm.UserInfo.objects.filter(id__in=ids).update(status=0) def update_user(request): """ """ kwargs = request.json need_params = ["id"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) id = kwargs.get("id") if cm.UserInfo.objects.exclude(id=id).filter(phone=kwargs.get("phone")).exists(): raise ce.TipException(u"该用户已存在!") need_params.extend(["realname","phone","department_id","utype","is_active","email","remark"]) cvals = ccf.get_need_params(*need_params,**kwargs) cvals.update({"name":cvals.get("phone")}) cvals.update({"password":ph.make_password(cvals.get("phone")[-6:],True)}) cvals["cid"] = request.user.id cvals["cperson"] = request.user.realname obj = cm.UserInfo.objects.filter(id=id).update(**cvals) return obj def login_user(request): """ """ info = request.json login_info = info.get('username') password = info.get('password') captcha_id = info.get('imgcode_id') idcode = info.get('imgcode') captcha = cache.get(captcha_id, '') cache.delete(captcha_id) if not login_info or not password: raise ce.TipException(u"账户或密码不能为空!") if not idcode: raise ce.TipException(u"验证码不能为空!") if idcode.upper() != captcha.upper(): raise ce.TipException(u"验证码错误!") user = auth.authenticate(request, account=login_info, pwd=password) if user: auth.login(request, user) return user else: raise ce.TipException(u"账号或密码错误!") def reset_password(request): """ @attention: 重置密码 """ uid = request.user.id qdata = request.json need_params = ["password","repassword"] mse = ccf.check_params(*need_params,**qdata) if mse: raise ce.TipException(mse) uid = request.json.get("uid") if not uid: uid = request.user.id phone = qdata.get("phone") password = qdata.get("password") repassword = qdata.get("repassword") if password != repassword: raise ce.TipException(u"两次输入的密码不一致!") pwd = ph.make_password(password) cm.UserInfo.objects.filter(id=uid).update(password=pwd) def reset_user_password(request): qdata = request.json need_params = ["uid","code","password"] mse = ccf.check_params(*need_params,**qdata) if mse: raise ce.TipException(mse) upk = qdata.get("uid") code = qdata.get("code") pkey = request.user.phone if cache.get(pkey,"") != code: raise ce.TipException(u"验证码不正确!") newpwd = qdata.get("password") pwd = ph.make_password(newpwd) cm.UserInfo.objects.filter(pk=upk).update(password=pwd) def regist_user(request): """ """ kwargs = request.json need_parms = ["realname","password","repassword","phone","email"] mse = ccf.check_params(*need_parms,**kwargs) if mse: raise ce.TipException(mse) if cm.UserInfo.objects.filter(phone=kwargs.get("phone")).exists(): raise ce.TipException(u"该手机号已注册!") cvals = ccf.get_need_params(*need_parms,**kwargs) cvals.pop("repassword") cvals["name"] = cvals["phone"] if kwargs["password"] != kwargs["repassword"]: raise ce.TipException(u"前后输入的密码不一致!") if not cvals.get("password"): pwd,password = ph.make_default_password(None) cvals.update({"password":password}) else: pwd = cvals.get("password") cvals.update({"password":ph.make_password(cvals.get("password"))}) uobj = cm.UserInfo.objects.create(**cvals) return None def format_user(*ids): """ """ eset = cm.UserInfo.objects.filter(id__in=ids,status=1) if not eset.exists(): raise ce.TipException(u"客户不存在!") data = list(eset.values()) return data def get_user_info(request): """ """ kwargs = request.json need_params = ["id"] mse = ccf.check_params(*need_params,**kwargs) if mse: raise ce.TipException(mse) ids = str(kwargs.get("id")).split(",") info = format_user(*ids) info = info[0] if info else {} return info def get_user_personal_info(request): """ """ id = request.user.id info = format_user(*[id]) info = info[0] if info else {} return info def get_account_info(request): """ """ id = request.user.id print id,99999 info = format_user(*[id]) info = info[0] if info else {} info["p"] = ["Product.*.*"] return info def get_user_list(request): """ """ kwargs = request.json eset = cm.UserInfo.objects.filter(status=1) if "name" in kwargs and kwargs.get("name"): eset = eset.filter(name__icontains=kwargs.get("name")) if "department_id" in kwargs and kwargs.get("department_id"): eset = eset.filter(department_id=kwargs.get("department_id")) if "utype" in kwargs and kwargs.get("utype"): eset = eset.filter(utype=kwargs.get("utype")) if "is_active" in kwargs and kwargs.get("is_active"): eset = eset.filter(is_active=kwargs.get("is_active")) total = eset.count() edata = list(eset.values()) page = int(kwargs.get("page",1)) page_size = int(kwargs.get("page_size",20)) total,data = ccf.get_page_list(edata,page,page_size) return (total,data) def get_unaudit_user_list(request): """ """ kwargs = request.json eset = cm.UserInfo.objects.filter(status=1,is_active=0) if "name" in kwargs and kwargs.get("name"): eset = eset.filter(name__icontains=kwargs.get("name")) if "utype" in kwargs and kwargs.get("utype"): eset = eset.filter(utype=kwargs.get("utype")) total = eset.count() edata = list(eset.values()) page = int(kwargs.get("page",1)) page_size = int(kwargs.get("page_size",20)) total,data = ccf.get_page_list(edata,page,page_size) return (total,data)