def get(self, request, user_id, *args, **kwargs): try: user = User.objects.get(pk=user_id) roles = user.role.all() ret = [] ids = list(roles.values('id')) for i in ids: ret.append(i['id']) fid = Role.objects.filter(~Q(id__in=ret)).values( 'id', 'code', 'name') ser2 = RoleSerializer(instance=fid, many=True) # todo 判断查询条件查询数据库是否为空 if roles.exists(): ser = RoleSerializer(instance=roles, many=True) return restful.result(message="查询成功", role2=ser.data, role=ser2.data) else: rets = self.list(request, *args, **kwargs) return restful.result(message="查询成功,当前用户无角色,请为用户添加角色", role=rets.data) except Exception as e: ip_username(request) return restful.result2(message="查询失败,id传输错误", kwargs=logger.error(e.args), data=e.args)
def get(self, request, role_id, *args, **kwargs): try: role = Role.objects.get(pk=role_id) menus = role.menu.all() ret = [] ids = list(menus.values('id')) for i in ids: ret.append(i['id']) fid = Menu.objects.filter(~Q(id__in=ret)).values( 'id', 'parent_id', 'name', 'code', 'type', 'layer') ser2 = MenuSerializer(instance=fid, many=True) # todo 判断当前查询条件是否为空 if menus.exists(): ser = MenuSerializer(instance=menus, many=True) return restful.result(message="查询成功", role2=ser.data, role=ser2.data) else: rets = self.list(request, *args, **kwargs) return restful.result(message="查询成功,当前角色无菜单,请为角色添加菜单", role=rets.data) except Exception as e: ip_username(request) return restful.result(message="role_id传入错误,请检查", kwargs=logger.error(e.args), data=e.args)
def post(self, request, *args, **kwargs): try: # eavl 将字符串转换为列表 if "," in request.data["role_id"]: roles = Role.objects.filter( id__in=eval(request.data["role_id"])) else: roles = Role.objects.filter(id=request.data["role_id"]) if "," in request.data["user_id"]: users = User.objects.filter( id__in=eval(request.data["user_id"])) else: users = User.objects.filter(id=request.data["user_id"]) for user in users: # 设置角色之前,先查询当前用户对应的所有角色,进行删除,然后在插入。 user.role.set([]) # 删除 user.role.set(roles) # 插入 return restful.result(message="操作成功") except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def my_login(request): if request.method == "GET": return render(request, 'auth/auth.html') else: form = LoginForm(request.POST) if form.is_valid(): username = form.cleaned_data.get('username') password = form.cleaned_data.get('pwd') next = form.cleaned_data.get("next") if next: next_url = next.split("=")[1] else: next_url = "" user = authenticate(request, username=username, password=password) # print("user",user) if user: login(request, user) request.session.set_expiry(None) data = {"next_url": next_url} return restful.result(data=data) else: return restful.noauth(message="用户名或者密码错误!") else: print(form.get_error()) return restful.paramserror(form.get_error())
def new_order(request): form = NewOrderForms(request.POST) if form.is_valid(): which_time = form.cleaned_data.get("which_time") which_date = form.cleaned_data.get("which_date") person_nums = form.cleaned_data.get("person_nums") order_tel = form.cleaned_data.get("order_tel") order_info = form.cleaned_data.get("order_info") goods_pk = form.cleaned_data.get("goods_pk") if which_time == "time-am": which_time = "上午场" else: which_time = "下午场" if order_tel == '0': order_tel = request.user.telephone goods = Goods.objects.get(pk=int(goods_pk)) prices = goods.prices.strip("¥") amount = int(prices) * int(person_nums) goods_order = GoodsOrder.objects.create(goods=goods, buyer=request.user, which_time=which_time, which_date=which_date, person_nums=person_nums, amount=amount, order_info=order_info, order_tel=order_tel, isdeal=1) return restful.result(data={"order_id": goods_order.pk}) else: print("fail") return restful.params_error(message=form.errors)
def post(self, request, *args, **kwargs): try: # eavl 将字符串转换为列表 if "," in request.data["role_id"]: roles = Role.objects.filter( id__in=eval(request.data["role_id"])) else: roles = Role.objects.filter(id=request.data["role_id"]) if "," in request.data["menu_id"]: menus = Menu.objects.filter( id__in=eval(request.data["menu_id"])) else: menus = Menu.objects.filter(id=request.data["menu_id"]) for role in roles: # 设置权限之前,先查询当前角色对应的所有权限,进行删除,然后在插入。 role.menu.set([]) # 删除 role.menu.set(menus) # 插入 return restful.result(message="操作成功") except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def post(self, request): # self.dispatch() try: username = request.data['username'] pwd = request.data['password'] user = authenticate(request, username=username, password=pwd) if user.check_password(pwd): login(request, user) else: return restful.params_error_400("用户名和密码不对") # 为用户创建token token = md5(user.username) # 创建获取时间 expr = time_add_min(constant.TOKEN_EXPR_MIN) # 存在就更新,不存在就创建 base_model.UserToken.objects.update_or_create(user=user, defaults={ 'token': token, 'expr': expr }) ret = {'token': token, 'expr': expr} return restful.result(message="登录成功", data=ret) except Exception as e: print(e) return restful.server_error_500("系统错误!")
def upload_img_file(request): file = request.FILES.get('file') name = file.name with open(os.path.join(settings.MEDIA_ROOT, name), 'wb') as fp: for chunk in file.chunks(): fp.write(chunk) url = request.build_absolute_uri(settings.MEDIA_URL + name) return restful.result(data={'url': url})
def get(self, request, *args, **kwargs): try: ret = self.list(request, *args, **kwargs) return restful.result(message="操作成功", data=ret.data) except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def write_comment_view(request): page = int(request.GET.get('p', 1)) start = (page - 1) * settings.ONE_PAGE_SCENE_COMMENT_COUNT ends = start + settings.ONE_PAGE_SCENE_COMMENT_COUNT comments = Comment.objects.select_related('author').all()[start:ends] serializer = CommentSerializer(comments, many=True) data = serializer.data return restful.result(data=data)
def get(self, request): try: # 删除当前用户对应的token UserToken.objects.get(user_id=request.user.id).delete() # 调用django的登出方法 logout(request) return restful.result("登出成功") except Exception as e: print(e) return restful.server_error_500("系统错误!")
def post(self, request, *args, **kwargs): try: ret = self.create(request, *args, **kwargs) return restful.result(message="保存成功") except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def patch(self, request, id): try: ret = Role.objects.filter(pk=id).first() ser = RoleSerializer(instance=ret, many=False) return restful.result(data=ser.data) except Exception as e: ip_username(request) return restful.result2("操作失败", kwargs=logger.error(e.args), data=e.args)
def get(self, request, *args, **kwargs): # todo 创建用户 # User.objects.create_user("dading","1") try: ret = self.list(request, *args, **kwargs) return restful.result(message="操作成功", data=ret.data) except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def patch(self, request, id): try: ret = User.objects.filter(pk=id).first() ser = UserSerializer(instance=ret, many=False) return restful.result(message="查询成功", data=ser.data) except Exception as e: ip_username(request) return restful.result2(message="传输id有误", kwargs=logger.error(e.args), data=e.args)
def add_banner(request): form = AddBannerForm(request.POST) if form.is_valid(): priority = form.cleaned_data.get('priority') image_url = form.cleaned_data.get('image_url') link_to = form.cleaned_data.get('link_to') banner = Banner.objects.create(priority=priority, image_url=image_url, link_to=link_to) return restful.result(data={"banner_id": banner.pk}) else: print("创建轮播图模型错误") return restful.params_error(message=form.get_errors())
def imgOcr(request): imgurl = request.POST.get("imgurl") img_filename = imgurl.split("/")[-1] txt_filename = img_filename.split(".")[0] + '.txt' file_path = os.path.join(settings.MEDIA_ROOT, img_filename) txturl = request.build_absolute_uri(settings.MEDIA_URL + txt_filename) respDict = imgOCrApi(file_path) wordslist = [] context = "" if respDict['words_result']: for item in respDict['words_result']: wordslist.append(item['words']) context = "".join(wordslist) with open(os.path.join(settings.UEDITOR_UPLOAD_PATH, txt_filename), 'w') as fp: fp.write(context) print(context) return restful.result(data={ 'context': context, 't_filename': txt_filename }) else: return restful.result(data={'context': context})
def goods_list(request): # 通过p参数来获取第几页的数据 # 并且P参数通过查询字符串的方式传过来的/scene/list/?p=2 page = int(request.GET.get('p', 1)) start = (page - 1) * settings.ONE_PAGE_SCENE_GOODS_COUNT ends = start + settings.ONE_PAGE_SCENE_GOODS_COUNT goods = Goods.objects.all()[start:ends].values() for good in goods: good['feature_info'] = re.sub(r'<.*?>', '', good['feature_info']) good['feature_info'] = good['feature_info'].replace('\n', '')[:30] + "..." serializer = GoodsSerializer(goods, many=True) data = serializer.data return restful.result(data=data)
def post(self, request, *args, **kwargs): print(request.data) try: # 判断是否为一级菜单,parent_id为0标识一级菜单 if request.data["parent_id"] == 0: # 查询编码值最大的一级菜单,设置以及菜单的编码和排序字段 firstLevelMenu = Menu.objects.filter( parent_id=0).order_by("-code").first() # print(connection.queries) if firstLevelMenu: code_num = int(firstLevelMenu.code) + 1 code = "%03d" % code_num order_num = firstLevelMenu.order_num + 5 else: code = "001" order_num = 1 request.data["code"] = code request.data["order_num"] = order_num request.data["layer"] = 1 # print(code) # print(order_num) else: # 查询父级菜单 parentNenu = Menu.objects.get(id=request.data["parent_id"]) # 其他层级的菜单,查询同一个父亲的菜单 brotherMenu = Menu.objects.filter( parent_id=parentNenu.id).order_by("-code").first() if brotherMenu: code_num = int(brotherMenu.code[-3:]) + 1 code = brotherMenu.code[:-3] + "%03d" % code_num order_num = brotherMenu.order_num + 5 else: code = parentNenu.code + "001" order_num = 1 request.data["code"] = code request.data["order_num"] = order_num request.data["layer"] = parentNenu.layer + 1 request.data["perms"] = request.data["code"] ret = self.create(request, *args, **kwargs) # return restful.result(message="保存成功",data=ret.data) return restful.result(message="保存成功") except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def get(self, request): # self.dispatch() try: username = request.user.get_username() # login(request, request.user) # 为用户创建token token = md5(username) # 创建获取时间 expr = time_add_min(constant.TOKEN_EXPR_MIN) # 存在就更新,不存在就创建 base_model.UserToken.objects.update_or_create(user=request.user, defaults={ 'token': token, 'expr': expr }) ret = {'token': token, 'expr': expr} return restful.result(message="登录成功", data=ret) except Exception as e: print(e) return restful.server_error_500("系统错误!")
def get(self, request): try: user_id = request.GET.get("user_id") if not user_id: user_id = request.user.id menus = Menu.objects.filter(roles__users__id=user_id).distinct() if menus.count() == 0: print("请为用户添加角色") return restful.result2(message="当前用户无角色,请联系管理员") else: ser = MenuSerializer(instance=menus, many=True) return restful.result(message="查询成功", data=ser.data) except Exception as e: ip_username(request) return restful.result2(message="操作失败", kwargs=logger.error(e.args), data=e.args)
def banner_list(request): banners = Banner.objects.all() serializer = BannerSerializer(banners, many=True) return restful.result(data=serializer.data)