# coding=utf-8 from __future__ import unicode_literals import random import json import uuid from django.contrib import auth from django.core.cache import cache from django.conf import settings from common import core_views as cv from common.captcha import create_idcode from common.models import UserInfo import control_user as cr from utils.cloopen_sms import cloopensms class GetPhoneCodeView(cv.BaseView): def send_resetpwd_code_msg(self,phones,content): """重置密码短信验证码 """ template_id = "401151" #if settings.SEND_SMS: rst,msg = cloopensms.send(phones,template_id,content) return rst,msg def post(self, request): """#获取短信验证码 @phone:"15982456282",手机号 """ uid = request.user.id qdata = request.json phone = qdata.get("phone","") #phone = UserInfo.objects.filter(id=uid).first().phone #if not phone: # return cv.to_normal_fail(u"参数错误") rcode = "".join(random.sample('1234567890',6)) valid_time = 60*2 #rst,msg = self.send_resetpwd_code_msg([phone],[rcode,2]) rst = True if rst: cache.set(phone,rcode,valid_time) return cv.to_suc({}) else: return cv.to_normal_fail(msg) class CaptchaView(cv.BaseView): def get(self, request): """#获取图形验证码(管理后台) >imgcode_id:"",后台返回登录时和验证码一起回传给后台 >imgcode:"",验证码图片base64 """ captcha, buf_str = create_idcode(4) uid = str(uuid.uuid4()) cache.set(uid, captcha, 30 * 60) return cv.to_suc({'imgcode': buf_str, 'imgcode_id': uid}) class LoginView(cv.BaseView): def post(self, request): """#账号登录(管理后台) @username:"root",str,账号 @password:"root",str,密码 @imgcode_id:"erwerkkk",图形验证码接口返回的 @imgcode:"erwe",图形验证码 """ try: rst = cr.login_user(request) return cv.to_suc() except Exception as e: cv.tracefail() return cv.to_fail(e) class LogoutView(cv.AuthView): def post(self, request): ''' #退出登录(管理后台) ''' user = request.user if user: user_name = user.realname user_email = user.name else: user_name = '' user_email = '' auth.logout(request) return cv.to_suc() class RegistView(cv.BaseView): def post(self,request): """#用户注册 @utype:1/2/3,全职/兼职/企业 @realname:姓名 @phone:"15982456282",手机号 @phcode:"1234",短信验证码 @password:"123456",密码 @repassword:"123456",确认密码 """ try: rst = cr.regist_user(request) except Exception as e: cv.tracefail() return cv.to_fail(e) return cv.to_suc() class InfoView(cv.AdminView): def get(self, request): ''' #获取全局账号信息(权限控制) ''' try: users = cr.get_account_info(request) return cv.to_suc(users) except Exception as e: return cv.to_fail(e) class ResetPwdView(cv.AdminView): def put(self, request): """ #重置密码(平台管理后台) @password:"",新密码 @repassword:"",确认密码 """ try: cr.reset_password(request) return cv.to_suc() except Exception as e: return cv.to_fail(e)