def post(self, request): json_str = request.body if not json_str: to_json_data(errno=Code.PARAMERR, errmsg='参数错误') dict_data = json.loads(json_str) # 数据清洗 form = NewsForm(data=dict_data) if form.is_valid(): # 对于作者更新对于的新闻, 知道新闻是哪个作者发布的 # 创建实例 不保存到数据库 news = models.News.objects.filter( title=form.cleaned_data.get('title'), content=form.cleaned_data.get('content'), tag=form.cleaned_data.get('tag'), digest=form.cleaned_data.get('digest'), image_url=form.cleaned_data.get('image_url')).first() if news: news.is_delete = False news.save(update_fields=['is_delete']) else: news = form.save(commit=False) news.author_id = request.user.id news.save() return to_json_data(errmsg='文章发布成功') else: err_m_l = [] for i in form.errors.values(): err_m_l.append(i[0]) err_msg_str = '/'.join(err_m_l) return to_json_data(errno=Code.PARAMERR, errmsg=err_msg_str)
def put(self, request, news_id): news = models.News.objects.filter(id=news_id, is_delete=False).first() if not news: return to_json_data(errno=Code.PARAMERR, errmsg='文章不存在') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) form = NewsForm(data=dict_data) if form.is_valid(): news.title = form.cleaned_data.get('title') news.digest = form.cleaned_data.get('digest') news.tag = form.cleaned_data.get('tag') news.content = form.cleaned_data.get('content') news.image_url = form.cleaned_data.get('image_url') news.save() return to_json_data(errmsg='文章更新成功') else: err_m_l = [] for i in form.errors.values(): err_m_l.append(i[0]) errmsg_str = '/'.join(err_m_l) return to_json_data(errno=Code.PARAMERR, errmsg=errmsg_str)
def delete(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) news_id = dict_data.get('news_id') if type(news_id) == type(list()): news_list = [] for id in news_id: news = models.News.objects.filter(is_delete=False, id=id).first() if news: news_list.append(news) else: return to_json_data(errno=Code.PARAMERR, errmsg='选择的文章中有ID错误') for news in news_list: news.is_delete = True news.save(update_fields=['is_delete']) return to_json_data(errno=Code.OK) else: news = models.News.objects.filter(is_delete=False, id=news_id).first() if news: news.is_delete = True news.save(update_fields=['is_delete']) return to_json_data(errmsg='文章删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='该文章不存在')
def delete(self, request, banner_id): banner = models.Banners.objects.filter(is_delete=False, id=banner_id).first() if banner: banner.is_delete = True banner.save(update_fields=['is_delete']) return to_json_data(errmsg='轮播图删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='该轮播图不存在')
def post(self, request): if not request.user.is_authenticated: return to_json_data(errno=Code.USERERR, errmsg='用户未登录') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf-8')) mobile = dict_data.get('mobile') smsCode = dict_data.get('sms_code') if not all([mobile, smsCode]): return to_json_data(errno=Code.PARAMERR, errmsg='输入的信息为空') # 手机号校验 if User.objects.filter(mobile=mobile).exists(): return to_json_data(errno=Code.PARAMERR, errmsg='该手机号已绑定,请更换其他的手机号') if not re.match(r'^1[345789]\d{9}$', mobile): return to_json_data(errno=Code.PARAMERR, errmsg='手机号格式不正确') # 验证码校验 redis_conn = get_redis_connection('verify_codes') sms_code = redis_conn.get('sms_{}'.format(mobile)) if not sms_code: return to_json_data(errno=Code.NODATA, errmsg='短信验证码已过期,请重新获取') if sms_code.decode() != smsCode: return to_json_data(errno=Code.PARAMERR, errmsg='短信验证码输入错误,请重新输入') redis_conn.delete('sms_flag_{}'.format(mobile)) redis_conn.delete('sms_{}'.format(mobile)) user = request.user user.mobile = mobile user.save(update_fields=['mobile']) return to_json_data(errmsg='手机号修改成功')
def post(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in models.Banners.B_CHOICES] if priority not in priority_list: return to_json_data(errno=Code.PARAMERR, errmsg='轮播图优先级不存在') except Exception as e: logger.error('轮播图优先级获取异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='优先级获取异常') image_url = dict_data.get('image_url') if not image_url: return to_json_data(errno=Code.NODATA, errmsg='图片URL为空') news_id = int(dict_data.get('news_id')) if not models.News.objects.filter(is_delete=False, id=news_id).exists(): return to_json_data(errno=Code.NODATA, errmsg='新闻不存在') banner, is_create = models.Banners.objects.get_or_create( news_id=news_id, priority=priority, image_url=image_url) if not is_create: if banner.is_delete: banner.is_delete = False banner.save(update_fields=['is_delete']) return to_json_data(errmsg='轮播图添加成功') else: return to_json_data(errno=Code.DATAEXIST, errmsg='该轮播图已存在') else: return to_json_data(errno=Code.OK)
def post(self, request): if request.user.is_authenticated: return to_json_data(errno=Code.DATAERR, errmsg='用户已登录,请退出登录') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) mobile = dict_data.get('mobile') password = dict_data.get('password') password_repeat = dict_data.get('password_repeat') smsCodeText = dict_data.get('smsCodeText') if not all([mobile, password, password_repeat, smsCodeText]): return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) if not User.objects.filter(mobile=mobile): return to_json_data(errno=Code.PARAMERR, errmsg='手机号输入错误') if not ((20 >= len(password) >= 6) or (20 >= len(password_repeat) >= 6)): return to_json_data(errno=Code.PARAMERR, errmsg='密码长度为6-20位') redis_conn = get_redis_connection('verify_codes') sms_code = redis_conn.get('sms_{}'.format(mobile)) if sms_code.decode() != smsCodeText: return to_json_data(errno=Code.PARAMERR, errmsg='验证码输入错误') redis_conn.delete('sms_flag_{}'.format(mobile)) redis_conn.delete('sms_{}'.format(mobile)) user = User.objects.get(mobile=mobile) if user: user.set_password(password) user.save(update_fields=['password']) return to_json_data(errmsg='密码修改成功,请重新登录') else: return to_json_data(errno=Code.PARAMERR, errmsg='该用户不存在')
def dispatch(self, request, *args, **kwargs): if Group.objects.filter(user=request.user).first(): user_permissions = Group.objects.filter( user=request.user).first().permissions.all() user_permissions = [ i.content_type.app_label + '.' + i.codename for i in user_permissions ] local_permission_required = self.method_to_permission(request) if local_permission_required not in user_permissions: if request.method.lower() == 'get': return render( request, '403.html', context={'errmsg': '很抱歉,您没有权限使用该功能,请联系管理员申请权限!'}) return to_json_data(errno=Code.ROLEERR, errmsg='您未拥有权限,请向超管申请', data={'redirect_url': '403.html'}) return super(PermissionRequiredMixin, self).dispatch(request, *args, **kwargs) else: return render(request, '403.html', context={'errmsg': '很抱歉,您没有权限使用该功能,请联系管理员申请权限!'})
def put(self, request, g_id): group = Group.objects.filter(id=g_id).first() if not group: return to_json_data(errno=Code.PARAMERR, errmsg='该用户组不存在') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) name = dict_data.get('name').strip() permissions = dict_data.get('group_permission') local_group_permissions = set(i.id for i in group.permissions.all()) try: permissions = set(int(i) for i in permissions) except Exception as e: logger.error('传入的权限参数异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='传入的权限参数异常') if not name: return to_json_data(errno=Code.PARAMERR, errmsg='请输入用户组名') if name != group.name and Group.objects.filter(name=name).exists(): return to_json_data(errno=Code.DATAEXIST, errmsg='该用户组名已存在') permissions.update(local_group_permissions) group.permissions.clear() for i in permissions: p = Permission.objects.get(id=i) if not p: return to_json_data(errno=Code.PARAMERR, errmsg='传入的权限不合法') group.permissions.add(p) group.name = name group.save() return to_json_data(errmsg='用户组更新成功 ')
def put(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) mobile = dict_data.get('mobile') flag = dict_data.get('flag') if not mobile: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) if not flag: if not User.objects.filter(mobile=mobile).exists(): return to_json_data(errno=Code.NODATA, errmsg='该用户不存在,请检查手机号是否输入正确') else: if User.objects.filter(mobile=mobile).exists(): return to_json_data(errno=Code.NODATA, errmsg='该手机号已绑定,请输入新的手机号') if not re.match(r'^1[345789]\d{9}$', mobile): return to_json_data(errno=Code.PARAMERR, errmsg='手机号格式不正确') redis_conn = get_redis_connection('verify_codes') send_flag = redis_conn.get("sms_flag_{}".format(mobile)) if send_flag: return to_json_data(errno=Code.DATAEXIST, errmsg='短信发送频繁,请稍后重试') sms_code = "%06d" % random.randint(0, 999999) redis_conn.setex('sms_{}'.format(mobile), 300, sms_code) redis_conn.setex('sms_flag_{}'.format(mobile), 60, 1) logger.info('短信验证码发送成功[mobile:{},sms_code:{}]'.format(mobile, sms_code)) return to_json_data(errmsg='短信验证码发送成功')
def put(self, request, banner_id): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) try: priority = int(dict_data.get('priority')) priority_list = [i for i, _ in models.Banners.B_CHOICES] if priority not in priority_list: return to_json_data(errno=Code.NODATA, errmsg='传入的轮播图优先级不存在') except Exception as e: logger.error('优先级传入异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='传入的优先级参数不合法') image_url = dict_data.get('image_url') if not image_url: return to_json_data(errno=Code.NODATA, errmsg='传入的图片参数为空') banner = models.Banners.objects.filter(is_delete=False, id=banner_id).first() if banner.priority == priority and banner.image_url == image_url: return to_json_data(errno=Code.DATAEXIST, errmsg='传入的图片和优先级和与原轮播图一致') if banner: banner.priority = priority banner.image_url = image_url banner.save(update_fields=['priority', 'image_url']) return to_json_data(errmsg='轮播图更新成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='轮播图不存在')
def post(self, request): if not request.user.is_authenticated: return to_json_data(errno=Code.USERERR, errmsg='用户未登录') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) username = dict_data.get('username') avatar_url = dict_data.get('avatar_url') if not all([username, avatar_url]): return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') if not re.match(r'^[\w_\u4e00-\u9fa5]{2,20}', username): return to_json_data(errno=Code.PARAMERR, errmsg='用户名格式不正确') user = request.user user.username = username user.avatar_url = avatar_url user.save(update_fields=['username', 'avatar_url']) return to_json_data(errmsg='用户信息更新成功')
def post(self, request): name = request.FILES image_file = name.get('image_files') if image_file.content_type not in ConstantDefinition.IMAGE_TYPE_LIST: return to_json_data(errno=Code.PARAMERR, errmsg='不能上传非图片文件') ext_name = image_file.name.split('.')[-1] try: upload_img = FDFS_Client.upload_by_buffer(image_file.read(), file_ext_name=ext_name) except Exception as e: logger.error('图片上传失败:{}'.format(e)) return to_json_data(errno=Code.UNKOWNERR, errmsg='图片上传失败') else: if upload_img.get('Status') != 'Upload successed.': return to_json_data(errno=Code.UNKOWNERR, errmsg='图片上传到服务器失败') else: img_id = upload_img.get('Remote file_id') img_url = settings.FDFS_URL + img_id return to_json_data(data={'image_url': img_url}, errmsg='图片上传成功')
def put(self, request, tag_id): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) name = dict_data.get('name').strip() if not name: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) if len(name) > 20: return to_json_data(errno=Code.PARAMERR, errmsg='分类名称请控制在20字内') tag = models.Tag.objects.get(id=tag_id) if tag: if not models.Tag.objects.filter(is_delete=False, name=name).exists(): tag.name = name tag.save(update_fields=['name']) return to_json_data(errno=Code.OK) else: return to_json_data(errno=Code.DATAEXIST, errmsg=error_map[Code.DATAEXIST]) else: return to_json_data(errno=Code.PARAMERR, errmsg='该分类不存在')
def post(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) name = dict_data.get('name').strip() permissions = dict_data.get('group_permission') try: permissions = set(int(i) for i in permissions) except Exception as e: logger.error('传入的权限参数异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='传入的权限参数异常') if not name: return to_json_data(errno=Code.PARAMERR, errmsg='请输入用户组名') group, is_create = Group.objects.get_or_create(name=name) if is_create: for i in permissions: p = Permission.objects.get(id=i) if not p: return to_json_data(errno=Code.PARAMERR, errmsg='传入的权限不合法') group.permissions.add(p) group.save() return to_json_data(errmsg='用户组更新成功 ') else: return to_json_data(errno=Code.PARAMERR, errmsg='组名已存在')
def post(self, request, news_id): if not request.user.is_authenticated: return to_json_data(errno=Code.SESSIONERR, errmsg=error_map[Code.SESSIONERR]) if not News.objects.filter(is_delete=False, id=news_id).exists(): return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) json_str = request.body if not json_str: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_str.decode('utf8')) content = dict_data.get('content') parent_id = dict_data.get('parent_id') if not content: return to_json_data(errno=Code.NODATA, errmsg='请填写评论内容') if parent_id is not None and not Comments.objects.filter( is_delete=False, id=parent_id, news_id=news_id).exists(): return to_json_data(errno=Code.PARAMERR, errmsg='评论信息不存在') comment = Comments() comment.news_id = news_id comment.content = content comment.author = request.user comment.parent_id = parent_id comment.save() return to_json_data(errmsg='评论成功')
def get(self, request): banner = Banners.objects.select_related('news').only( 'image_url', 'news__title').filter(is_delete=False).order_by('priority') b_info = [] for i in banner: b_info.append({ 'image_url': i.image_url, 'news_title': i.news.title, 'news_id': i.news.id }) data = {'banner': b_info} return to_json_data(data=data)
def post(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) form = LoginForm(data=dict_data, request=request) if form.is_valid(): return to_json_data(errmsg='登录成功', data={ 'referer': request.session['referer'] if (request.session['referer'] and request.user.is_staff) else None }) else: # 表单验证失败处理 msg_list = [] for i in form.errors.get_json_data().values(): msg_list.append(i[0].get('message')) msg_str = '/'.join(msg_list) return to_json_data(errno=Code.PARAMERR, errmsg=msg_str)
def post(self, request): if not request.user.is_authenticated: return to_json_data(errno=Code.SESSIONERR, errmsg='请登录之后再操作') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) comment_id = dict_data.get('comment_id') if not comment_id: return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') comment = Comments.objects.filter(is_delete=False, id=comment_id).first() if not comment: return to_json_data(errno=Code.PARAMERR, errmsg='该评论不存在') is_add = ThumbsUpClicks.objects.filter( comments_id=comment_id, author_id=request.user.id).first() if is_add: if not is_add.is_delete: try: if comment.clicks == 0: raise Exception('点赞数异常') except Exception as e: logger.error(e) return to_json_data(errno=Code.PARAMERR, errmsg='点赞数异常') comment.clicks -= 1 comment.save(update_fields=['clicks']) is_add.is_delete = True is_add.save(update_fields=['is_delete']) data = { 'clicks': comment.clicks if comment.clicks != 0 else "赞", 'is_add': False } # return to_json_data(data=comment.clicks) else: comment.clicks += 1 comment.save(update_fields=['clicks']) is_add.is_delete = False is_add.save(update_fields=['is_delete']) data = { 'clicks': comment.clicks if comment.clicks != 0 else "赞", 'is_add': True } else: comment.clicks += 1 comment.save(update_fields=['clicks']) thumbs = ThumbsUpClicks() thumbs.comments_id = comment_id thumbs.author_id = request.user.id thumbs.save() data = { 'clicks': comment.clicks if comment.clicks != 0 else "赞", 'is_add': True } return to_json_data(data=data)
def delete(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) user_id = dict_data.get('user_list') if type(user_id) == type(list()): user_list = [] for i in user_id: user = User.objects.filter(is_active=True, id=i).first() if user.username == request.user.username: return to_json_data(errno=Code.USERERR, errmsg='用户不能操作自己的权限') if user: user_list.append(user) else: return to_json_data(errno=Code.PARAMERR, errmsg='有用户不存在') for user in user_list: user.groups.clear() user.user_permissions.clear() user.is_active = False user.save() return to_json_data(errmsg='选中的用户均已被删除') else: try: user_id = int(user_id) except Exception as e: logger.error('用户id异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='用户的id不合法') user = User.objects.filter(is_active=True, id=user_id).first() if user: if user.username == request.user.username: return to_json_data(errno=Code.USERERR, errmsg='用户不能操作自己的权限') user.groups.clear() user.user_permissions.clear() user.is_active = False user.save() return to_json_data(errmsg='用户删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='该用户不存在')
def delete(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf-8')) tag_id = dict_data.get('tag_id') if not tag_id: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) if type(tag_id) == type(list()): tag_list = [] for id in tag_id: tag = models.Tag.objects.get(is_delete=False, id=id) if tag: if models.Tag.objects.values('id').annotate(num_news=Count('news')).filter(is_delete=False, id=id). \ get()['num_news']: return to_json_data(errno=Code.NODATA, errmsg='文章数量不为零的分类不允许删除') tag_list.append(tag) else: return to_json_data(errno=Code.NODATA, errmsg='分类信息不存在') for tag in tag_list: tag.is_delete = True tag.save(update_fields=['is_delete']) return to_json_data(errno=Code.OK) else: tag = models.Tag.objects.get(id=tag_id) if tag: if models.Tag.objects.values('id').annotate(num_news=Count('news')).filter(is_delete=False, id=tag_id). \ get()['num_news']: return to_json_data(errno=Code.NODATA, errmsg='文章数量不为零的分类不允许删除') else: tag.is_delete = True tag.save(update_fields=['is_delete']) return to_json_data(errno=Code.OK) else: return to_json_data(errno=Code.PARAMERR, errmsg='该分类不存在')
def get(self, request): try: tag = int(request.GET.get('tag_id', 0)) except Exception as e: logger.error('页面分类错误{}'.format(e)) tag = 0 try: page = int(request.GET.get('page', 1)) except Exception as e: logger.error('页面页数错误{}'.format(e)) page = 1 news_list = News.objects.values( 'title', 'digest', 'image_url', 'update_time', 'clicks', 'id').annotate(tag_name=F('tag__name'), author=F('author__username')) news_info = news_list.filter( is_delete=False, tag_id=tag) or news_list.filter(is_delete=False) # 分页 pages = Paginator(news_info, 5) try: news_page = pages.page(page) except Exception as e: logger.error(e) news_page = pages.page(pages.num_pages) # print(news_page) # print([news['id'] for news in news_page]) comment_count = [] # news_list_info = [] for news in news_page: news['update_time'] = time_filter(news['update_time']) comment_count.append([ i.id for i in Comments.objects.filter(is_delete=False, news_id=news['id']) ].__len__()) data = { 'news': list(news_page), 'total_pages': pages.num_pages, 'comment_count': comment_count } return to_json_data(data=data)
def post(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) text = dict_data.get('text') UUID = dict_data.get('image_code_id') mobile = dict_data.get('mobile') if not all([text, UUID, mobile]): return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) if not re.match(r'^1[345789]\d{9}$', mobile): return to_json_data(errno=Code.PARAMERR, errmsg='手机号格式不正确') redis_conn = get_redis_connection('verify_codes') send_flag = redis_conn.get("sms_flag_{}".format(mobile)) if send_flag: return to_json_data(errno=Code.DATAEXIST, errmsg='短信发送频繁,请稍后重试') image_code_server = redis_conn.get('img_{}'.format(UUID)) if not image_code_server: return to_json_data(errno=Code.PARAMERR, errmsg='图形验证码已过期,请重新获取') try: redis_conn.delete("img_{}".format(UUID)) except Exception as e: logger.error(e) image_code_server = image_code_server.decode() if text.upper() != image_code_server.upper(): return to_json_data(errno=Code.PARAMERR, errmsg='图形验证码输入错误') sms_code = "%06d" % random.randint(0, 999999) redis_conn.setex('sms_{}'.format(mobile), 300, sms_code) redis_conn.setex('sms_flag_{}'.format(mobile), 60, 1) # logger.info('短信验证码发送成功[mobile:{},sms_code:{}]'.format(mobile, sms_code)) # return to_json_data(errmsg='短信验证码发送成功') # # 异步发送短信 需要事先把celery任务开起来才能使用 # send_res = send_sms_code.delay(mobile, sms_code) # print(send_res) # if send_res == 0: # return to_json_data(errmsg='短信验证码发送成功') # else: # return to_json_data(errno=Code.PARAMERR, errmsg='短信验证码发送失败,请检查手机号你是否正确') # 调用接口发送短信 ccp = CCP() ccp.send_template_sms(mobile, [sms_code, 5], 1) return to_json_data(errmsg='短信验证码发送成功')
def put(self, request, user_id): user = User.objects.filter(is_active=True, id=user_id).first() if user.username == request.user.username: return to_json_data(errno=Code.USERERR, errmsg='用户不能操作自己的权限') if not user: return to_json_data(errno=Code.PARAMERR, errmsg='该用户不存在') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) is_staff = int(dict_data.get('is_staff')) is_superuser = int(dict_data.get('is_superuser')) is_active = int(dict_data.get('is_active')) is_VIP = int(dict_data.get('is_VIP')) groups = dict_data.get('groups') if not all( [q in [0, 1] for q in (is_staff, is_superuser, is_active, is_VIP)]): return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') try: if groups: group_set = set(int(i) for i in groups) else: group_set = set() except Exception as e: logger.error('传入的用户组参数异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='用户组参数异常') all_groups_set = set(i.id for i in Group.objects.only('id')) if not group_set.issubset(all_groups_set): return to_json_data(errno=Code.PARAMERR, errmsg='传入的用户组参数不合法') gsa = Group.objects.filter(id__in=group_set) user.groups.set(gsa) user.is_staff = bool(is_staff) user.is_superuser = bool(is_superuser) user.is_active = bool(is_active) user.is_VIP = bool(is_VIP) user.save() return to_json_data(errmsg='用户权限信息更新成功')
def post(self, request): if not request.user.is_authenticated: return to_json_data(errno=Code.SESSIONERR, errmsg='用户未登录') if not request.user.is_VIP: return to_json_data(errno=Code.DATAERR, errmsg='该用户暂未拥有该权限,请联系管理员进行修改后在进行操作') json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg='没有参数') dict_data = json.loads(json_str.decode('utf8')) words = dict_data.get('words').strip() if not words: return to_json_data(errno=Code.NODATA, errmsg='未传入参数') try: per = int(dict_data.get('per')) per = per if per else 5 except Exception as e: logger.error('人声选择传参异常:{}'.format(e)) per = 5 try: speed = int(dict_data.get('speed')) speed = speed if speed else 5 except Exception as e: logger.error('语速传参异常:{}'.format(e)) speed = 5 try: column = int(dict_data.get('column')) column = column if column else 5 except Exception as e: logger.error('音调传参异常:{}'.format(e)) column = 5 song_length = int(dict_data.get('song_length')) engine = BaiduVoiceToWord() if song_length == 0: result = engine.say_words(words, per=per, pit=column, spd=speed) else: result = engine.stop() if result.get('err_msg'): return to_json_data(errno=Code.UNKOWNERR, errmsg='播放错误') return to_json_data(errno=Code.OK, data={'song_length': result['song_length']})
def delete(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf-8')) group_id = dict_data.get('group_list') if type(group_id) != type(list()): try: group_id = int(group_id) except Exception as e: logger.error('用户组ID传入异常:{}'.format(e)) return to_json_data(errno=Code.PARAMERR, errmsg='用户组ID异常') group = Group.objects.filter(id=group_id).first() if group: group.permissions.clear() group.delete() return to_json_data(errmsg='用户组删除成功') else: return to_json_data(errno=Code.PARAMERR, errmsg='该用户组不存在') else: group_list = [] for id in group_id: group = Group.objects.get(id=id) if group: if Group.objects.values('id').annotate(num_users=Count('user')).filter(id=id). \ get()['num_users']: return to_json_data(errno=Code.NODATA, errmsg='还有用户存在的用户组不允许被删除') group_list.append(group) else: return to_json_data(errno=Code.NODATA, errmsg='用户组不存在') for group in group_list: group.permissions.clear() group.delete() return to_json_data(errno=Code.OK)
def post(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) dict_data = json.loads(json_str.decode('utf8')) name = dict_data.get('name') if not name: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) if len(name) > 20: return to_json_data(errno=Code.PARAMERR, errmsg='分类名称请控制在20字内') tag = models.Tag.objects.get_or_create(name=name) if not tag[-1]: if tag[0].is_delete: tag[0].is_delete = False tag[0].save(update_fields=['is_delete']) return to_json_data(errno=Code.OK) else: return to_json_data(errno=Code.DATAEXIST, errmsg='该分类已存在') else: return to_json_data(errno=Code.OK)
def get(self, request, mobile): data = { 'mobile': mobile, 'count': User.objects.filter(mobile=mobile).count() } return to_json_data(data=data)
def get(self, request, username): data = { 'username': username, 'count': User.objects.filter(username=username).count() } return to_json_data(data=data)
def post(self, request): json_str = request.body if not json_str: return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA]) dict_data = json.loads(json_str.decode('utf8')) username = dict_data.get('username') mobile = dict_data.get('mobile') password = dict_data.get('password') password_repeat = dict_data.get('password_repeat') smsCode = dict_data.get('smsCode') if not all([username, mobile, password, password_repeat, smsCode]): return to_json_data(errno=Code.PARAMERR, errmsg='参数错误') # 验证用户名 if not re.match(r'^[\u4e00-\u9fa5\w\d_]{2,20}$', username): return to_json_data(errno=Code.PARAMERR, errmsg='用户名格式不正确') if User.objects.filter(username=username).count() > 0: return to_json_data(errno=Code.DATAEXIST, errmsg='用户名已存在') # 验证手机号 if not re.match(r'^1[345789]\d{9}$', mobile): return to_json_data(errno=Code.PARAMERR, errmsg='手机号格式不正确') if User.objects.filter(mobile=mobile).count() > 0: return to_json_data(errno=Code.DATAEXIST, errmsg='手机号已存在') # 验证密码 if not re.match(r'^[\w\d]{6,20}', password): return to_json_data(errno=Code.PARAMERR, errmsg='密码格式不正确') if password != password_repeat: return to_json_data(errno=Code.PARAMERR, errmsg='两次输入的密码不一致,请重新输入') # 验证码校验 redis_conn = get_redis_connection('verify_codes') sms_code = redis_conn.get('sms_{}'.format(mobile)) if not sms_code: return to_json_data(errno=Code.NODATA, errmsg='验证码已过期,请重新获取') if sms_code.decode() != smsCode: return to_json_data(errno=Code.PARAMERR, errmsg='验证码输入错误,请重新输入') redis_conn.delete('sms_{}'.format(mobile)) redis_conn.delete('sms_flag_{}'.format(mobile)) user, is_create = User.objects.get_or_create(username=username, password=password, mobile=mobile) if is_create: login(request, user) return to_json_data(errmsg='恭喜您,注册成功', data={'referer': request.session['referer']}) else: if user.is_active: return to_json_data(errno=Code.USERERR, errmsg='该用户已被注册') else: user.is_active = True user.save(update_fields=['is_active']) login(request, user) return to_json_data(errmsg='恭喜您,注册成功')