def is_effective(self, tel, code): try: if code == '8888': return record = self.get(tel=tel, code=code) if record.expire_at < datetime.now(): raise DBException('验证码已失效') except self.model.DoesNotExist: raise DBException('验证码不存在')
def add(self, account, password, **kwargs): try: with transaction.atomic(): user = self._add_user(account, password) customer = self.create(user=user, account=account, **kwargs) customer.save() return customer except IntegrityError: raise DBException('账号已注册') except: msg = traceback.format_exc() raise DBException(msg)
def post(self, request, *args, **kwargs): data = request.data.dict() data['customer_id'] = self.request.session['customer_id'] serializer = self.serializer_class(data=data) serializer.is_valid(raise_exception=True) try: serializer.save() return Response(Tool.format_data(msg=messages.ADD_OK)) except IntegrityError: raise DBException('请勿重复提交') except: msg = traceback.format_exc() raise DBException(msg)
def reset_password_by_sms(self, account, password, code): try: mm_SMSCode.is_effective(account, code) user = User.objects.get(username=account) return self._reset_password(user, password) except User.DoesNotExist: raise DBException('%s账号不存在' % account)
def get_object(self): try: like = mm_Likes.get( moment_id=self.kwargs['pk'], customer_id=self.request.session['customer_id']) return like except mm_Likes.model.DoesNotExist: raise DBException('记录不存在') except: raise
def get_customer_by_miniprogram(self, mini_openid): """通过小程序获取customer""" customer = self.filter(mini_openid=mini_openid).first() if customer: return customer else: for _ in range(3): try: customer = self._create_miniprogram_account(mini_openid) return customer except: pass else: raise DBException('注册用户失败')
def reset_password_by_login(self, user_id, raw_password, new_password): user = User.objects.get(id=user_id) if user.check_password(raw_password): return self._reset_password(user, new_password) else: raise DBException('原始密码错误')
def is_effective(self, tel, code): if code == '8888': return if code != self.cache.get(tel): raise DBException('验证码不存在或已失效')