def inner(request, *args, **kwargs): uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) if not is_principal(request.user, user_qq): return render(request, "403.html", {"REMOTE_STATIC_URL": REMOTE_STATIC_URL}) return func(request, *args, **kwargs)
def process_view(self, request, view, args, kwargs): """ 只能拦截process_view 如果proces_request的话,request.user只能获得 "AnonymousUser" ,无法正确取得username """ request_type = request.path.split("/")[1] if not request_type in ['login_qq', 'accounts']: # 除了注册和qq登陆页面,其他一律拦截 uin = request.COOKIES.get('uin') if not uin: # 如果获取不到uin print(u'取不到uin') return HttpResponseRedirect(reverse('login_qq')) qq = transform_uin(uin) username = request.user if not User.objects.qq_exist( qq) and not User.objects.username_exist(username): # 如果未记录qq和username user = User() if user.save_qq(username=username, qq=qq): # 增加记录成功 return HttpResponseRedirect(reverse('home')) else: # 增加记录失败 print(u'增加记录失败') return HttpResponseRedirect(reverse('login_qq'))
def decide_award(request, apply_id): try: apply = MyApply.objects.get(id=apply_id) except Exception as e: return HttpResponse(status=404) uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user if not is_organ_head(user, user_qq, apply.award.organization): return HttpResponse(status=401) try: data = json.loads(request.body) valid_decide(data) except InvalidData as e: logging.debug(u'%s' % e) return HttpResponse(status=422) try: apply.decide_award(data) except BaseException: return HttpResponse(status=403) return HttpResponse(status=201)
def home(request): qq = request.COOKIES.get('uin', '') qq = transform_uin(qq) user = UserInfo.objects.filter(qq=qq) if not user: UserInfo.objects.create(qq=qq, auth_token=request.user) awards_list = Award.objects.filter(status=True).order_by('-id')[:3] awards = Award.to_array(awards_list) prize_winner = Form.objects.filter(status=4).order_by('-form_id') return render(request, 'home_application/home.html', {'results': awards, 'winners': prize_winner})
def my_applys(request): """ 对django 模型跨表查询 不怎么熟悉 暂且使用 后期视性能优化 :param request: :return: """ # 过滤字段获取 apply_award_f = html_escape(request.GET.get('apply_award')) check_state_f = html_escape(request.GET.get('check_state')) start_time_f = html_escape(request.GET.get('start_time')) end_time_f = html_escape(request.GET.get('end_time')) apply_query_list = [] is_not = False if apply_award_f is not None: apply_query_list.append(Q(award__name__contains=apply_award_f)) uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user if check_state_f is not None: if check_state_f == '-1': # temp_sql_list.append('`my_applys`.`state` is null ') is_not = True else: # temp_sql_list.append('`my_applys`.`state` = %s') apply_query_list.append(Q(state=check_state_f)) if start_time_f is not None and end_time_f is not None: apply_query_list.append( Q(apply_time__range=( datetime.datetime.strptime(start_time_f, "%Y-%m-%d"), datetime.datetime.strptime(end_time_f, "%Y-%m-%d")))) # if len(apply_query_list) > 0 or check_state_f is not None: # apply_query_sql_where = ' where (' + \ # ' or '.join(temp_sql_list) + ') and' # else: # apply_query_sql_where = ' where ' applys = get_my_apply(user, user_qq, apply_query_list, is_not) paginator = Paginator(applys, 10) page = request.GET.get('page', 1) try: my_applys = paginator.page(page) except PageNotAnInteger: my_applys = paginator.page(1) except EmptyPage: my_applys = paginator.page(paginator.count) return render_json({ 'counts': paginator.count, 'my_applys': my_applys.object_list })
def my_review(request): """ 我的审核 """ apply_list = [] uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) # 得到用户QQ if OrganizationUser.objects.filter(user=user_qq, type=u'1'): organs = OrganizationUser.objects.filter(user=user_qq, type=u'1') for organ in organs: # 得到用户组织 apply_list = Apply.objects.filter(award__organization=organ.organization).order_by('status') data = {'apply_list': apply_list} return render_mako_context(request, '/personal_center/my_review.html', data)
def user_info(request): uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user permission = ['apply'] if user.is_admin(): permission.append('admin') if is_head(user, user_qq): permission.append('head') setting = mysetting(request) data = { 'nick': setting['NICK'], 'avatar': setting['AVATAR'], 'permission': permission } return render_json(data)
def can_apply_list(request): uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user can_applys = get_my_not_apply(user, user_qq) paginator = Paginator(can_applys, 10) page = request.GET.get('page', 1) try: result = paginator.page(page) except PageNotAnInteger: result = paginator.page(1) except EmptyPage: result = paginator.page(paginator.count) return render_json({ 'counts': paginator.count, 'result': result.object_list })
def pass_check(request, apply_id): try: apply = MyApply.objects.get(id=apply_id) except Exception as e: return HttpResponse(status=404) uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user if not is_organ_head(user, user_qq, apply.award.organization): return HttpResponse(status=401) try: apply.pass_check() except Exception as e: logging.debug(u'%s' % e) return HttpResponse(status=403) return HttpResponse(status=201)
def get_check_list(request): uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user check_list = get_my_check(user, user_qq) paginator = Paginator(check_list, 10) page = request.GET.get('page', 1) try: my_checks = paginator.page(page) except PageNotAnInteger: my_checks = paginator.page(1) except EmptyPage: my_checks = paginator.page(paginator.count) return render_json({ 'counts': paginator.count, 'my_checks': my_checks.object_list })
def user_info(request): """获取用户信息""" uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) user = request.user permission = ['apply'] if user.is_superuser: permission.append('admin') if is_reviewer(user, user_qq): permission.append('reviewer') setting = mysetting(request) data = { 'nick': setting['NICK'], 'avatar': setting['AVATAR'], 'permission': permission } return render_json(data)
def index(request): """ 返回评审首页 """ uin = request.COOKIES.get("uin") qq = transform_uin(uin) cur_page = int(request.GET.get('page', 1)) limit = int(request.GET.get('limit', 5)) all_form_counts = Form.objects.filter(creator__contains=qq).count() all_page = all_form_counts / limit remain = all_form_counts % limit if remain > 0: all_page += 1 offset = (cur_page - 1) * limit forms = Form.objects.filter(creator__contains=qq)[offset:offset + limit] return render(request, "review/review_index.html", { 'forms': forms, 'all_page': all_page, 'cur_page': cur_page })
def my_apply(request): """ 我的申报 """ applyed_list = Apply.objects.filter(user=request.user).order_by('status') # 我的已申报记录 award_applyed = Apply.objects.filter(user=request.user).values_list('award') # 已申报的奖项 apply_list = [] # 可申报奖项 uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) # 得到用户QQ if OrganizationUser.objects.filter(user=user_qq, type=u'1'): organs = OrganizationUser.objects.filter(user=user_qq, type=u'1') for organ in organs: # 得到用户组织 award_can_apply_list = Award.objects.filter(organization=organ.organization, status=True) # 得到有权限且生效中的奖项 for award in award_can_apply_list: if (award.id,) not in award_applyed: apply_list.append(award) data = {'apply_list': apply_list, 'applyed_list': applyed_list} return render_mako_context(request, '/personal_center/my_apply.html', data)
def home(request): """ 首页 """ award_list = [] # 可申报奖项 uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) if OrganizationUser.objects.filter(user=user_qq, type=u'1'): organs = OrganizationUser.objects.filter(user=user_qq, type=u'1') award_applyed = Apply.objects.filter(user=request.user).values_list( 'award') # 已申报的奖项 for organ in organs: # 得到用户组织 award_can_apply_list = Award.objects.filter( organization=organ.organization, status=True) # 得到有权限且生效中的奖项 for award in award_can_apply_list: if (award.id, ) not in award_applyed: award_list.append(award) # award_list = Award.objects.filter(status=True) apply_list = Apply.objects.filter(status=3).order_by('-pub_time') data = {'award_list': award_list, 'apply_list': apply_list} return render_mako_context(request, '/home_application/index.html', data)
def update_review(request): """ 更新申请表接口 """ if request.method == 'POST': try: req = json.loads(request.body) except: response = { "result": False, "code": 400, "data": {}, "message": u"审核失败" } return APIServerError(response) uin = request.COOKIES.get("uin") qq = transform_uin(uin) form_id = int(req["form_id"]) comment = req["comment"] status = int(req["status"]) try: form = Form.objects.get(form_id=form_id) except: return APIServerError({ "result": False, "code": 500, "data": {}, "message": "get form id %s error" % form_id }) form.comment = comment form.status = status form.updater = qq form.save() response = {"result": True, "code": 0, "data": {}, "message": u"审核成功"} return APIResult(response)
def inner(request, *args, **kwargs): uin = request.COOKIES.get('uin', '') user_qq = transform_uin(uin) if not is_head(request.user, user_qq): return HttpResponse(status=401, content=u'无此权限') return func(request, *args, **kwargs)