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)
Beispiel #2
0
    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)
Beispiel #12
0
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)
Beispiel #15
0
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)