コード例 #1
0
def register(request):
    #获取参数
    user = request.POST.get("user")  #获取用户帐号
    passwd = request.POST.get("passwd")  #获取密码
    name = request.POST.get("name")  #获取用户昵称
    email = request.POST.get("email")  #获取邮箱
    CreateTime = int(time.time())  #获取当前时间戳

    #判断用户名及密码是否为空
    if user and passwd:
        #如果用户名和密码不为空则:
        user_ORM = User.objects.filter(user__exact=user)  # 查询user是否在表中
        passwd_md5 = md5(passwd)  #对密码进行MD5加密

        #判断用户是否被注册
        if not user_ORM:
            #如果没有注册则写入数据并保存
            DATA = User(user=user,
                        passwd=passwd_md5,
                        name=name,
                        email=email,
                        CreateTime=CreateTime,
                        status=0)
            DATA.save()
            return JsonResponse({"Success": "Register OK!"})

        else:
            # 如果表中有该用户则返回错误提示
            return JsonResponse({"Error": "User already registered"})

    else:
        #如果传入的用户名或密码为空时则返回以下信息:
        return JsonResponse({"Error": "User name or password is empty!"})
コード例 #2
0
	def get(self,request):
		res = HttpResponse()

		get = request.GET
		if('code' in get):
			code = request.GET['code']
		else:
			res.write({"error":1002,"data":{'info':"Please request with right json_code."}})
			return res

		codejson = self.getUserId(code)
		if('errcode' in codejson):
			res.write({"error":1002,"data":{'info':"Please request with right json_code."}})
			return res
		else:
			openid = codejson['openid']
			sessionkey = codejson['session_key']
			session = openid + sessionkey
			session = hashlib.sha1(session.encode(encoding="utf-8")).hexdigest()

			if len(Sessioninfo.objects.filter(openid=openid)) == 0:
				se = Sessioninfo(openid=openid,sessionkey=sessionkey,session=session)
				se.save()
				user = User(openid=openid)
				user.save()
				print('asdasdasd')
			else:
				se = Sessioninfo.objects.filter(openid=openid)[0]
				se.sessionkey = sessionkey
				se.session = session
				se.save()
				print('No!!!!!!')

			res.write({"error":0,"data":{"openid":openid,"session":session}})
		return res
コード例 #3
0
ファイル: views.py プロジェクト: tonyklose1984/Python3
def register(request):
    statue = "用户注册"
    if request.method == "POST" and request.POST:
        registerForm = Register_Forms(request.POST)
        if registerForm.is_valid():
            clear_data = registerForm.cleaned_data
            u = User(
                username=clear_data.get('username'),
                password=hashpassword(clear_data.get("password")),
                email=clear_data.get("email"),
                phone=clear_data.get("phone"),
                    # photo=clear_data.get("photo"),
            )
            if user_exist(u.username):
                usererror = "您输入的用户名重复了,请重新输入"
                return render_to_response("register.html",locals())
            else:
                u.save()
                return HttpResponseRedirect('/login')
            # del request.COOKIES["username"]
            # del request.session["username"]

    else:
        registerForm =Register_Forms()
    return render_to_response("register.html",locals())
コード例 #4
0
def register(request):
    if(request.method == "POST"):
        result = json.loads(request.body)
        username = result["username"]
        password = result["password"]
        phonenumber = result["phonenumber"]
        code = result["code"]

        # check if phonenumber corresponds to code
        if code != cache.get(phonenumber):
            result = {"code":0,"message":"验证码错误"}
            return HttpResponse(json.dumps(result,ensure_ascii=False),
                                content_type="application/json,charset=utf-8")

        # phonenumber existed
        if User.objects.filter(phonenumber=phonenumber):
            result = {"code":0,"message":"手机号已被注册"}
            return HttpResponse(json.dumps(result,ensure_ascii=False),
                                content_type="application/json,charset=utf-8")

        # username existed
        if User.objects.filter(username=username):
            result = {'code':0,"message":"用户名已被注册"}
            return HttpResponse(json.dumps(result,ensure_ascii=False),
                                content_type="application/json,charset=utf-8")

        # success
        user = User(username=username, password=password, phonenumber=phonenumber)
        user.save()

        result = {'code':1,"message":"success"}
        return HttpResponse(json.dumps(result,ensure_ascii=False),
                            content_type="application/json,charset=utf-8")
コード例 #5
0
 def find_pwd_handler(r):
     phone = r.d.phone
     User.get_by_phone(phone)
     SendMobile.send_captcha(r, phone, SendMobile.FIND_PWD)
     return dict(
         next_mode=ReCaptcha.MODE_FIND_PWD_CODE,
         toast_msg='',
     )
コード例 #6
0
def register(request, useremail, username, password: str):
    md5 = hashlib.md5()
    password = make_password(password)
    password = str(md5.hexdigest())
    user = User(user_email=useremail, user_password=password, user_name=username)
    user.save()
    render(request, '', context={
        'register': '注册成功',
        'status': '200'
    })
コード例 #7
0
    def post(request):
        """ POST /api/user/

        创建用户
        """
        invite_code = request.d.invite_code
        if invite_code is not None:
            # print(invite_code)
            user = User.create_invite(**request.d.dict())
        else:
            user = User.create(**request.d.dict('username', 'password'))
        return Auth.get_login_token(user)
コード例 #8
0
ファイル: views.py プロジェクト: ThreerEyed/aj
def register_count():
    # 提交的所有信息
    # phone = request.form.get('mobile')
    # imagecode = request.form.get('imagecode')
    # phonecode = request.form.get('phonecode')
    # pwd = request.form.get('password')
    # pwd2 = request.form.get('password2')

    data = request.get_json()
    phone = data.get('mobile')
    pwd = data.get('password')
    phonecode = data.get('sms_code')

    # 验证信息完整性
    if not all([phone, phonecode, pwd]):
        msg = '请输入完整信息'
        return jsonify(statucode.INFO_IS_NOT_COMPLETE)

    reg = re.match('((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[035-8])|(18[0-9])|166|198|199|(147))\\d{8}', phone)
    # 验证数据有效性
    if not reg:
        return jsonify(statucode.PHONE_NUMBER_IS_INVALID)

    # 验证用户是否已存在
    if User.query.filter_by(phone=phone).first():
        return jsonify(statucode.USER_EXISTS)

    # 验证图片验证码
    # if not imagecode:
    #     return jsonify(statucode.IMAGE_CODE_ERROR)
    # 验证手机验证码
    phone_code = redis_store.get('SMSCode_' + phone)
    if phonecode != phone_code.decode('utf-8'):
        return jsonify(statucode)

    # 删除数据库中用户的短信信息
    redis_store.delete('SMSCode_' + phone)

    # 保存用户数据到数据库
    user_register = User()
    user_register.name = phone
    user_register.phone = phone
    # 密码加密
    user_register.pw_hash = generate_password_hash(pwd)

    try:
        db.session.add(user_register)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        return jsonify(statucode.DATABASE_ERROR)

    return jsonify(statucode.COUNT_REGISTER_SUCCESS)
コード例 #9
0
def bind_email(request):
    openid = request.GET.get('openid', request.POST.get('openid', ''))
    username = request.GET.get('nickname', request.POST.get('username', ''))
    type = request.GET.get('type', request.POST.get('type', ''))
    avatar = request.GET.get('avatar', request.POST.get('avatar', ''))

    if request.method == 'POST':
        form = BindEmail(request.POST)
        if form.is_valid():
            openid = form.cleaned_data['openid']
            username = form.cleaned_data['username']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            type = form.cleaned_data['type']
            avatar = form.cleaned_data['avatar']
            users = User.objects.filter(email=email)
            if users:
                user = users[0]
            else:
                while User.objects.filter(username=username):
                    username = username + '*'
                user = User(username=username, email=email)
                user.set_password(password)
                user.is_active = True
                user.avatar = avatar
                user.oauth = True
                user.save()
            oauth_ex = OAuth_ex(user=user, openid=openid, type=type)
            oauth_ex.save()
            login(request,
                  user,
                  backend='django.contrib.auth.backends.ModelBackend')
            data = {}
            data['goto_url'] = '3397/'
            data['goto_time'] = 10000
            data['goto_page'] = True
            data['message_title'] = '绑定账号成功'
            data[
                'message'] = u'绑定成功!您的用户名为:<b>%s</b>。您现在可以同时使用本站账号和此第三方账号登录本站了!' % username
            return render_to_response('oauth/response.html', data)

    else:
        form = BindEmail(
            initial={
                'openid': openid,
                'nickname': username,
                'type': type,
                'image_url': avatar,
            })
        return render(request,
                      'oauth/bind_email.html',
                      context={
                          'form': form,
                          'type': type
                      })
コード例 #10
0
ファイル: views.py プロジェクト: matulik/spihs
def login(request):
    if User.userAuth(request, tokkening=True):
        return redirect('/users/')
    if request.method == 'POST':
        print 'loging..'
        username = request.POST['username']
        password = request.POST['password']
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            msg = 'Error. User not found.'
            print msg
            return render_to_response('login.html', {'msg': msg}, context_instance=RequestContext(request))
        except User.MultipleObjectsReturned:
            msg = 'Error. Multiple user. Please contact with administrator.'
            return render_to_response('login.html', {'msg': msg}, context_instance=RequestContext(request))

        if user.passwordCompare(password):
            user.login(request)
            msg = 'Login successfully'
            print msg
            return redirect('/users/')
        else:
            msg = 'Error. Wrong password.'
            return render_to_response('login.html', {'msg': msg}, context_instance=RequestContext(request))
    else:
        return render_to_response('login.html', context_instance=RequestContext(request))
コード例 #11
0
ファイル: views.py プロジェクト: YLAsce/oj
def previewTestData(request, problem_id, case_id,
                    mode):  # mode = 0: view input  mode = 1: view output
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if not problem_id:
            raise Err(request, 'problem illegal')

        try:
            p = Problem.getById(int(problem_id))
        except:
            raise Err(request, 'problem illegal')

        if not p.canManageProblem(u):
            raise Err(request, 'no priv')

        case_id = int(case_id)
        if case_id >= p.data_count:  # [0, data_count)
            raise Err(request, 'testdata illegal')

        mode = int(mode)
        if mode != 0 and mode != 1:
            raise Err(request, 'testdata mode illegal')

        data_preview = p.generateTestDataPreview(case_id, mode)
        return render(request, 'newtpl/problem/previewTestData.html',
                      {'data_preview': data_preview})

    except Exception as e:
        logger.error(str(e).replace('\n', '\t'))
        return render(request, Err.ERROR_PAGE)
コード例 #12
0
ファイル: views.py プロジェクト: YLAsce/oj
def index(request):
    return render_to_response(
        'newtpl/index.html', {
            'user': User.getSessionUser(request.session),
            'tpl_sp_page': True,
            'tpl_nav_act': 'index',
        })
コード例 #13
0
ファイル: views.py プロジェクト: YLAsce/oj
def rejudgeSubmission( request, sid):
    logger.info(str(request).replace("\n\r","\t"))
    """
    rejudge the very submission with the specific sid
    """
    try:
        sid = int( sid)
        u = User.getSessionUser( request.session)
        if not u:
            raise Err( request, err='not login')

        try:
            s = Submission.getById( sid)
        except:
            raise Err( request, err='no submission',
                    log_format=( '{0}'.format( sid), ''),
                    user_format=( u'{0}'.format( sid), u'不要搞笑!!'),
                    )

        if not s.problem_index.contest.course_class.canBeManaged( u):
            raise Err( request, err = 'no priv')

        Submission.rejudgeSubmission( s)

        return redirect( 'Submission:contest_status', contest_id=s.problem_index.contest.cid) 

    except Exception as e:
        logger.error(str(e).replace("\n\r","\t"))
        return render( request, Const.NEW_ERROR_PAGE, { 'errmsg': unicode(e), }, )
コード例 #14
0
ファイル: views.py プロジェクト: YLAsce/oj
def showBoardByDynamicScore(request, cId):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        try:
            c = Contest.getById(cId)
        except:
            raise Err(request, 'no resource')

        try:
            c.canEnterContest(u)
        except:
            raise Err(request, 'no priv')

        return render(request, "newtpl/statistic/board_dynamic_score.html", {
            'contest': c,
            'tpl': {
                'has_priv': Contest.hasPriv(c.course_class, u)
            }
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
コード例 #15
0
ファイル: views.py プロジェクト: YLAsce/oj
def viewAllClarifications(request, cid):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Exception(Const.NOT_LOGGED_IN)
        c = Contest.getById(cid)
        if not c:
            raise Exception(Const.CONTEST_NOT_EXIST)

        cs = Clarification.getByContestId(cid)
        try:
            c.canEnterContest(u)
            can_add_clar = True
        except:
            can_add_clar = False

        try:
            c.canBeManaged(u)
            can_update_clar = True
        except:
            can_update_clar = False

        return render(
            request, 'newtpl/contest/viewAllClars.html', {
                'clars': cs,
                'contest': c,
                'can_add_clar': can_add_clar,
                'can_update_clar': can_update_clar
            })
    except Exception as e:
        logger.error(unicode(e).replace('\n', '\t'))
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
コード例 #16
0
ファイル: views.py プロジェクト: YLAsce/oj
def answerClarification(request, clar_id):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Exception(Const.NOT_LOGGED_IN)
        clar = Clarification.getById(clar_id)
        if not clar:
            raise Exception('No such Clarification!')
        c = clar.contest
        if not c:
            raise Exception(Const.CONTEST_NOT_EXIST)
        try:
            c.canBeManaged(u)
        except:
            raise Exception('No Privilege!')

        if request.method != 'POST':
            return render(request, 'newtpl/contest/answerClar.html',
                          {'clar': clar})

        form = AnswerClarificationForm(request.POST)
        try:
            if form.is_valid():
                answer = form.cleaned_data['answer']
                clar.updateAnswer(answer, u)
                return redirect('Contest:view_all_clars', c.cid)
            else:
                raise Exception('Invalid Answer!')
        except Exception as e:
            raise e
    except Exception as e:
        logger.error(unicode(e).replace('\n', '\t'))
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
コード例 #17
0
ファイル: views.py プロジェクト: YLAsce/oj
def listManageProblem(request, pageId="1"):  # modified
    logger.info(str(request).replace("\n", "\t"))
    try:
        pageId = int(pageId)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if u.priv == 'student':
            raise Err(request, 'no priv')

        problemList = Problem.problemManageList(u)
        """
        tres = Problem.problemList(u)
        if (pageId-1)*Const.PROBLEM_PER_PAGE>=len(tres):
            raise Err(request, 'unknown err')
        res = tres[(pageId-1)*Const.PROBLEM_PER_PAGE:Const.PROBLEM_PER_PAGE]
        """
        info = {}
        if u.university.isAdmin(u):
            info['admin'] = True
        return render(request, "newtpl/problem/manageProblemList.html", {
            'problem_list': problemList,
            'info': info,
            'tpl': {
                'sp': True
            }
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
コード例 #18
0
ファイル: common.py プロジェクト: libbyandhelen/DB_timetable
def get_user_from_session(request):
    from User.models import User
    """get user from session if login"""
    user_id = load_session(request, 'user', once_delete=False)
    if user_id is None:
        return Ret(Error.REQUIRE_LOGIN)
    return User.get_user_by_id(user_id)
コード例 #19
0
 def get_login_token(user: User):
     token, _dict = JWT.encrypt(dict(
         user_id=user.pk,
     ))
     _dict['token'] = token
     _dict['user'] = user.d()
     return _dict
コード例 #20
0
 def get_talk_by_username(cls, username):
     user = User.get_user_by_username(username)
     if (user.talked):
         talk = Talk.objects.get(talker=user)
     else:
         talk = None
     return talk
コード例 #21
0
ファイル: views.py プロジェクト: YLAsce/oj
def rejudgeSubmission( request, sid):
    logger.info(str(request).replace("\n\r","\t"))
    """
    rejudge the very submission with the specific sid
    """
    try:
        sid = int( sid)
        u = User.getSessionUser( request.session)
        if not u:
            raise Err( request, err='not login')

        try:
            s = Submission.getById( sid)
        except:
            raise Err( request, err='no submission',
                    log_format=( '{0}'.format( sid), ''),
                    user_format=( u'{0}'.format( sid), u'不要搞笑!!'),
                    )

        if not s.problem_index.contest.course_class.canBeManaged( u):
            raise Err( request, err = 'no priv')

        Submission.rejudgeSubmission( s)

        return redirect( 'Submission:contest_status', contest_id=s.problem_index.contest.cid) 

    except Exception as e:
        logger.error(str(e).replace("\n\r","\t"))
        return render( request, Const.NEW_ERROR_PAGE, { 'errmsg': unicode(e), }, )
コード例 #22
0
def register():
    '''注册'''
    if request.method == 'POST':
        nickname = request.form.get('nickname', '').strip()
        password = request.form.get('password', '').strip()
        gender = request.form.get('gender', 'unknow').strip()
        city = request.form.get('city', '上海').strip()
        avatar = request.files.get('avatar')
        birthday = request.form.get('birthday', '2000-01-01').strip()
        bio = request.form.get('bio', '').strip()

        if not (nickname and password):
            return render_template('register.html', error='昵称或密码不为空')

        safe_password = utils.make_password(password)  # 安全处理密码
        avatar_url = utils.save_avatar(nickname, avatar)  # 保存头像,并返回头像网址

        user = User(nickname=nickname,
                    password=safe_password,
                    gender=gender,
                    city=city,
                    avatar=avatar_url,
                    birthday=birthday,
                    bio=bio)

        db.session.add(user)
        try:
            db.session.commit()
        except IntegrityError:  # 例: IntegrityError: (1062, "Duplicate entry 'xx' for key 'xxxxx'")
            db.session.rollback()
            return render_template('/user/register.html', error='昵称和密码能为空')
        return redirect('/user/login')
    else:
        return render_template('/user/register.html')
コード例 #23
0
def registe(request):
    name = request.POST['username']
    pass_word = make_password(request.POST['password'])
    foo = request.POST['identity']
    if (foo == 'manager'):
        is_admin = True
    else:
        is_admin = False
    print("注册信息:" + name + ' ' + ' ' + pass_word + ' ' + str(is_admin))
    user = User(name, pass_word, is_admin)
    list = User.objects.all()
    if user in list:  # 神奇的默认只比较了主键orz
        return render(request, 'user/registeFailure.html')
    else:
        user.save()
        return render(request, 'user/registeSuccess.html')
コード例 #24
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def answerClarification(request, clar_id):
    logger.info(str(request).replace("\n","\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Exception(Const.NOT_LOGGED_IN)
        clar = Clarification.getById(clar_id)
        if not clar:
            raise Exception('No such Clarification!')
        c = clar.contest
        if not c:
            raise Exception(Const.CONTEST_NOT_EXIST)
        try:
            c.canBeManaged(u)
        except:
            raise Exception('No Privilege!')
        
        if request.method != 'POST':
            return render(request, 'newtpl/contest/answerClar.html', {'clar': clar})

        form = AnswerClarificationForm(request.POST)
        try:
            if form.is_valid():
                answer = form.cleaned_data['answer']
                clar.updateAnswer(answer, u)
                return redirect('Contest:view_all_clars', c.cid)
            else:
                raise Exception('Invalid Answer!')
        except Exception as e:
            raise e
    except Exception as e:
        logger.error(unicode(e).replace('\n', '\t')) 
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})    
コード例 #25
0
ファイル: views.py プロジェクト: YLAsce/oj
def previewTestData(request, problem_id, case_id, mode): # mode = 0: view input  mode = 1: view output
    logger.info(str(request).replace("\n","\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if not problem_id:
            raise Err(request, 'problem illegal')

        try:
            p = Problem.getById(int(problem_id))
        except:
            raise Err(request, 'problem illegal')

        if not p.canManageProblem(u):
            raise Err(request, 'no priv')

        case_id = int(case_id)
        if case_id >= p.data_count:     # [0, data_count)
            raise Err(request, 'testdata illegal')

        mode = int(mode)
        if mode != 0 and mode != 1:
            raise Err(request, 'testdata mode illegal')

        data_preview = p.generateTestDataPreview(case_id, mode)
        return render(request, 'newtpl/problem/previewTestData.html', {'data_preview': data_preview})

    except Exception as e:
        logger.error(str(e).replace('\n','\t'))
        return render(request, Err.ERROR_PAGE)
コード例 #26
0
def addRecord(request, cid):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        c = Contest.getById(cid)
        try:
            c.canBeManaged(u)
        except:
            raise Err(request, err='no priv')

        cp = c.getContestProblem()

        if request.method == 'POST':
            form = ChooseProbForm(cp, request.POST) 
            if form.is_valid():
                Cheat.addRecord(cp_set=form.cleaned_data['contest_problem'])
                Cheat.antiCheat()
                return redirect('Cheat:show_cheat_result', cid=c.cid)
            else:
                raise Err(request, err='unknown err')
        else:
            form = ChooseProbForm(cp)
            return render(request, 'newtpl/cheat/addRecord.html', {'tpl':{'sp':True,}, 'contest':c, 'form':form,})
    except Exception as e:
        return render(request, Err.ERROR_PAGE)
コード例 #27
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def listProblem(request, pageId="1"): # modified
    logger.info(str(request).replace("\n","\t"))
    try:
        pageId = int(pageId)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')

        tres = Problem.problemList(u)
        if (pageId-1)*Const.PROBLEM_PER_PAGE>=len(tres):
            raise Err(request, 'unknown err')
        res = tres[(pageId-1)*Const.PROBLEM_PER_PAGE:pageId*Const.PROBLEM_PER_PAGE]
        res = tres
        probs = []
        for p in res:
            all_submits = GeneralSubmission.objects.filter(problem = p)
            all_accepts = all_submits.filter(status = 'Accepted')
            submits = all_submits.count()
            accepts = all_accepts.count()
            ratio = 0 if submits == 0 else 100 * accepts / submits
            probs.append({'accepts': accepts, 'submits': submits, 'ratio': ratio, 'prob': p})
        paginator = Paginator(probs, Const.PROBLEM_PER_PAGE)
        pageId = min(max(int(pageId), 1), paginator.num_pages)
        #return render(request,"newtpl/problem/problemList.html",{'tpl':{'sp':False}, 'problems': probs})
        return render(request,"newtpl/problem/problemList.html",{'tpl':{'sp':False}, 'problems': paginator.page(pageId)})
    except Exception as e:
        logger.error(str(e).replace("\n","\t"))
        return render(request, Err.ERROR_PAGE)
コード例 #28
0
ファイル: views.py プロジェクト: matulik/spihs
def logout(request):
    if User.userAuth(request, tokkening=True):
        user = User.objects.get(id=request.session['id'])
        user.logout(request)
        return redirect('/')
    else:
        return redirect('/')
コード例 #29
0
ファイル: views.py プロジェクト: YLAsce/oj
def showStudentByCCId(request):
    id = request.GET.get('id', 1)
    user = User.getSessionUser(request.session)
    if user == False:
        errmsg = u'请先登录'
        return render(request, 'error.html', {'errmsg': errmsg, 'user': user})
    ''' 
    try :
        courseClass = CourseClass.getById(id)
    except Exception as e:
        return render(request, 'error.html', {'errmsg' : e, 'user' : user})

    if courseClass.isAdmin(User) == False :
        errmsg =u'您不是该课程分班的课程分班管理员,无法查看该课程分班的学生'
        return render(request, 'error.html', {'errmsg' : e, 'user' : user})
    
    allStudent = courseClass.getAllStudent()
    '''

    allStudent = []
    allStudent.append(User.objects.get(pk=1))
    allStudent.append(User.objects.get(pk=1))
    return render(request, 'lyy/showStudentByCCId.html', {
        'allStudent': allStudent,
        'user': user
    })
コード例 #30
0
ファイル: api_views.py プロジェクト: 1997xhw/Akitalk
    def post(request):
        """ POST /api/user/token

        登录获取token
        """
        user = User.authenticate(**request.d.dict())
        return Auth.get_login_token(user)
コード例 #31
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def listContestByPriv(request, ccId, pageId='1'):
    """
    view used to list all contest a user can manage, course_class restricted
    """
    try:
        u = User.getSessionUser(request.session)
        if not u:
            messages.info(request, u'请先登录')
            return render(request, 'newtpl/contest/contestListByPriv.html')
        
        cc = CourseClass.getById(ccId)
        if not Contest.hasPriv(cc, u):
            raise Exception(Const.NOT_PVLG)
            
        contestList = Contest.getByCourseClass(cc)
        now = datetime.now()
        
        for c in contestList:
            c.course_class_name = unicode(c.course_class.getFullName())
            c.title = unicode(c.contest_title)
            if c.start_time+timedelta(minutes=c.length)<now:
                c.status = 'ended'
            elif c.start_time > now:
                c.status = 'scheduled'
            else:
                c.status = 'running'

        paginator = Paginator(contestList, Const.CONTEST_PER_PAGE)
        pageId = min(max(int(pageId), 1), paginator.num_pages)
        return render(request, 'newtpl/contest/contestListByPriv.html',
                      {'contest_list': paginator.page(pageId),  'course_class': cc,
                       'tpl':{'has_priv': True, 'nav_act':'contest',}})
    except Exception as e:
        return render(request, Const.ERROR_PAGE, {'errmsg': unicode(e), })
コード例 #32
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def updateContestNotice(request, cId, cnId):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Exception(Const.NOT_LOGGED_IN)
        
        c = Contest.getById(cId)
        cn = ContestNotice.getById(cnId)
        c.canBeManaged(u)
        
        if request.method == 'POST':
            form = contestNoticeForm(request.POST)
            if form.is_valid():
                cnTitle = form.cleaned_data['title']
                cnContent = form.cleaned_data['content']
                cn.updateNotice(cnTitle, cnContent)
                return redirect('Contest:show_contest_notice', cId, cn.id)
            else:
                return render(request, 'newtpl/contest/updateContestNotice.html',
                              {'form': form, 'cid': cId, 'cnid': cnId,
                           'tpl':{'has_priv': True, 'sp': True, 'nav_act':'contest',}})
        else:
            form = contestNoticeForm(
                initial={
                    'title': cn.notice_title,
                    'content': cn.notice_content,
                    }
            )
            return render(request, 'newtpl/contest/updateContestNotice.html',
                          {'form': form, 'cid': cId, 'cnid': cnId,
                           'tpl':{'has_priv': True, 'sp': True, 'nav_act':'contest',}})
    except Exception as e:
        return render(request, Const.ERROR_PAGE, {'errmsg': unicode(e), })
コード例 #33
0
    def login_qt_pwd_handler(r):
        qt = r.d.qt
        pwd = r.d.pwd

        user = User.authenticate(qt, None, pwd)

        return Auth.get_login_token(user)
コード例 #34
0
ファイル: general_views.py プロジェクト: Mr-Phoebe/BOJ-V2
def rejudgeGeneralSubmission( request, gsid):
    """
    rejudge the very general submission with the specific id
    """
    try:
        gsid = int( gsid)
        u = User.getSessionUser( request.session)
        if not u:
            raise Err( request, err='not login')

        try:
            g_s = GeneralSubmission.getById( gsid)
        except:
            raise Err( request, err='no generalsubmission',
                    log_format=( '{0}'.format( gsid), ''),
                    user_format=( u'{0}'.format( gsid), u'别扯了!!'),
                    )

        # fake
        if u.priv == 'student':
            raise Err( request, err = 'no priv')

        GeneralSubmission.rejudgeGeneralSubmission( g_s)

        return redirect( 'Submission:status')

    except Exception as e:
        return render( request, Const.NEW_ERROR_PAGE, { 'errmsg': unicode(e), }, )
コード例 #35
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def listContestByAuthor(request, pageId='1'):
    """
    view used to list all contest created by the specific user
    """
    try:
        u = User.getSessionUser(request.session)
        if not u:
            messages.info(request, u'请先登录')
            return render(request, 'newtpl/contest/contestListByAuthor.html')
            
        contestList = Contest.getByAuthor(u)
        now = datetime.now()
        for c in contestList:
            c.course_class_name = unicode(c.course_class.getFullName())
            c.title = unicode(c.contest_title)
            if c.start_time+timedelta(minutes=c.length)<now:
                c.status = 'ended'
            elif c.start_time > now:
                c.status = 'scheduled'
            else:
                c.status = 'running'

        paginator = Paginator(contestList, Const.CONTEST_PER_PAGE)
        pageId = min(max(int(pageId), 1), paginator.num_pages)
        return render(request, 'newtpl/contest/contestListByAuthor.html', {
            'contest_list': paginator.page(pageId), 'tpl':{'has_priv': True, 'nav_act':'contest',}})
    except Exception as e:
        return render(request, Const.ERROR_PAGE, {'errmsg': unicode(e), })
コード例 #36
0
ファイル: views.py プロジェクト: YLAsce/oj
def viewAllClarifications(request, cid):
    logger.info(str(request).replace("\n","\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Exception(Const.NOT_LOGGED_IN)
        c = Contest.getById(cid)
        if not c:
            raise Exception(Const.CONTEST_NOT_EXIST)
        
        cs = Clarification.getByContestId(cid)
        try:
            c.canEnterContest(u)
            can_add_clar = True
        except:
            can_add_clar = False

        try:
            c.canBeManaged(u)
            can_update_clar = True
        except:
            can_update_clar = False

        return render(request, 'newtpl/contest/viewAllClars.html', {'clars': cs, 'contest': c, 'can_add_clar': can_add_clar, 'can_update_clar': can_update_clar})
    except Exception as e:
        logger.error(unicode(e).replace('\n', '\t')) 
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})    
コード例 #37
0
def require_login_func(request):
    """需要登录

    并根据传入的token获取user
    """
    jwt_str = request.META.get('HTTP_TOKEN')
    if jwt_str is None:
        return Ret(Error.REQUIRE_LOGIN)
    from Base.jtoken import jwt_d

    ret = jwt_d(jwt_str)
    if ret.error is not Error.OK:
        return ret
    dict_ = ret.body

    try:
        user_id = dict_["user_id"]
    except KeyError as err:
        deprint(str(err))
        return Ret(Error.STRANGE)

    from User.models import User
    ret = User.get_user_by_id(user_id)
    if ret.error is not Error.OK:
        return ret
    o_user = ret.body
    if not isinstance(o_user, User):
        return Ret(Error.STRANGE)

    request.user = o_user
    return Ret()
コード例 #38
0
ファイル: views.py プロジェクト: YLAsce/oj
def register(request):
    try:
        if request.method != 'POST':
            return render(request, 'newtpl/register.html', {})
        form = RegisterForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            passwd_1 = form.cleaned_data['passwd1']
            passwd_2 = form.cleaned_data['passwd2']
            if passwd_1 != passwd_2:
                raise Exception(u'两次密码不一致')
            test_uni = University.getByName('test')
            new_user = User.addUser(username, passwd_1, test_uni, 'student')
            group = Group.getById(52)
            group.addMember(new_user)
            messages.add_message(request, messages.SUCCESS,
                                 u'注册用户test#%s成功!' % username)
            return redirect("/")
            # return redirect('User:viewuser', uid = new_user.uid)
        else:
            raise Exception('注册失败!')
    except Exception as e:
        logger.error(unicode(e).replace('\n', '\t'))
        messages.error(request, u'输入信息不合法或该用户已被注册!')
        return render(request, Err.ERROR_PAGE)
コード例 #39
0
 def get_login_token(user: User):
     token, _dict = JWT.encrypt(dict(
         user_id=user.pk,
     ), expire_second=30 * 60 * 60 * 24)
     _dict['token'] = token
     _dict['user'] = user.d()
     return _dict
コード例 #40
0
ファイル: forms.py プロジェクト: nixiaoya/bbs
 def save(self):
     user = User()
     user.username = self.username
     user.set_password(self.password)
     user.email = self.email
     if self.signature:
         user.signature = self.signature
     user.save()
     return user
コード例 #41
0
def showContestProblemStatistics(request, p_index=None, cid=None):
    logger.info(str(request).replace("\n", "\t"))
    """
    view used to show statistics of a problem in a contest
    """
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        cid = int(cid)
        c = Contest.getById(cid)

        p_index = p_index if p_index else ''

        try:
            contest_problem = ContestProblem.getBy(c, p_index)
        except:
            raise Err(
                request,
                err='no contestproblem',
                log_format=('{0}'.format(p_index), ''),
                user_format=(u'{0}'.format(p_index), u'搞错了什么吧!'),
            )

        if not contest_problem.contest.course_class.canBeManaged(u):
            raise Err(request, err='no priv')

        all_submissions = Submission.submissionList(cp=contest_problem)
        submissions = all_submissions.filter(
            status='Accepted').order_by('run_time')[:20]

        status_list = []
        for i in Const.STATUS_CN.iterkeys():
            status_list.append({
                'name':
                Const.STATUS_CN[i],
                'number':
                all_submissions.filter(status=i).count()
            })

        for sub_s in submissions:
            sub_s.status_color = Const.STATUS_COLOR[
                sub_s.status] if sub_s.status in Const.STATUS_COLOR else ''
            sub_s.status_cn = Const.STATUS_CN[sub_s.status]

        return render(
            request, 'newtpl/statistic/contest_problem.html', {
                'submissions': submissions,
                'contest_problem': contest_problem,
                'status_list': status_list,
                'tpl': {
                    'sp': True
                }
            })

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
コード例 #42
0
def userDetail(request, uid):
    try:
        u = User.getById(uid)
    except:
        return HttpResponse(status=404)
    if request.method == 'GET':
        serializer = UserSerializer(u)
        return JSONResponse(serializer.data)
コード例 #43
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def userDetail(request, uid):
    try:
        u = User.getById(uid)
    except:
        return HttpResponse(status=404)
    if request.method == 'GET':
        serializer = UserSerializer(u)
        return JSONResponse(serializer.data)
コード例 #44
0
ファイル: general_views.py プロジェクト: Mr-Phoebe/BOJ-V2
def generalSubmissionList(request, page_id='1'):
    """
    @view: list general submission
    """

    try:
        page_id = int(page_id)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err( request, err='not login')
        
        # fake
        if u.priv == 'university':
            has_priv = True
        else:
            has_priv = False

        user = u if not has_priv else None
        
        lang_list = [('gcc','GNU C'), ('g++','GNU C++'), ('java','java')]
        form = generalListForm( lang_list, request.GET)
        if form.is_valid():
            if form.cleaned_data['problem_id']:
                try:
                    p = Problem.getById( form.cleaned_data['problem_id'])
                except:
                    raise Err( request, err='request err', 
                            log_format=( 'form invalid', 'problem_id error'), 
                            user_format=( u'输入的内容不合法', u'没有这道题!')
                            )
            else:
                p = None
        else:
            raise Err( request, err='example err', 
                    log_format=( 'form invalid', ''), 
                    user_format=( u'输入的内容不合法', '')
                    )

        g_subs = GeneralSubmission.generalSubmissionList( u=user, p=p, uname=form.cleaned_data['username'], language=form.cleaned_data['language'], status_selected=form.cleaned_data['status'], university=u.university)

        if 'rejudge' in request.GET:
            if has_priv:
                map( lambda x: GeneralSubmission.rejudgeGeneralSubmission( x), g_subs)
            else:
                raise Err( request, err = 'no priv')

        paginator = Paginator( g_subs, Const.STATUS_PER_PAGE)
        page_id = min(max(int(page_id), 1), paginator.num_pages)

        g_s = paginator.page(page_id)

        for g_s_index in g_s:
            g_s_index.status_color = Const.STATUS_COLOR[g_s_index.status] if g_s_index.status in Const.STATUS_COLOR else ''
            g_s_index.status_cn = Const.STATUS_CN[ g_s_index.status]
        return render(request, 'newtpl/submission/general/status.html', {'general_list': g_s, 'form':form, 'tpl':{'can_manage': True if has_priv else False}})

    except Exception as e:
        return render(request, Err.ERROR_PAGE, { 'errmsg': unicode(e) } )
コード例 #45
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def addContest(request, ccId):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        
        try:
            cc = CourseClass.getById(ccId)
        except:
            raise Err(request, 'no resource')

        try:
            Contest.canAddContest(cc, u)
        except:
            raise Err(request, 'no priv')

        recentProblem = Problem.problemListByAuthor(u)

        if request.method == 'POST':
            form = contestForm(request.POST)
            pIdList = request.POST.getlist('problem_id')
            #pIdList =  Problem.problemList(u)

            pTitleList = request.POST.getlist('problem_title_custom')
            pCnt = len(pIdList)
            if form.is_valid():
                for i in xrange(pCnt):
                    p = Problem.getById(pIdList[i])
                    if not p.canViewProblem(u):
                        raise Err(request, 'no problem priv')

                pInfos = [(pIdList[i], pTitleList[i], chr(65+i)) for i in xrange(pCnt)]
                cTitle = form.cleaned_data['title']
                cDesc = form.cleaned_data['desc']
                cStartDate = form.cleaned_data['start_date']
                cStartTime = form.cleaned_data['start_time']
                cLength = form.cleaned_data['length']
                cBoardStop = form.cleaned_data['board_stop']
                cType = form.cleaned_data['contest_type']
                cBoardType = form.cleaned_data['board_type']
                permitLang = reduce(add, [Const.LANG_MASK[lang] for lang in form.cleaned_data['lang_limit']])
                c = Contest.addContest(u, cc, cTitle, pInfos, datetime.combine(cStartDate, cStartTime),
                                       cDesc, cLength, cBoardStop, cType, cBoardType, permitLang)
                return redirect('Contest:show_contest', c.cid)
            else:
                problemList = [{'pid': pIdList[x], 'title': pTitleList[x], 'origTitle':Problem.getById(pIdList[x]).prob_title} for x in xrange(pCnt)]
                return render(request, 'newtpl/contest/addContest.html', {'cc':cc,
                    'form': form, 'recent_problem': recentProblem,
                               'problem_list': problemList, 'tpl':{'has_priv': True, 'sp': True, }})
        else:
            form = contestForm()
            return render(request, 'newtpl/contest/addContest.html', {'cc':cc,
                'form': form, 'recent_problem': recentProblem, 
                'tpl':{'has_priv': True, 'sp': True, }})
    except Exception as e:
        messages.info(request, unicode(e))
        return render(request, Err.ERROR_PAGE)
コード例 #46
0
ファイル: views.py プロジェクト: RayFerr000/PLTL
def user_signup_save(request):
    fname = request.POST.get('fname')
    lname = request.POST.get('lname')
    email = request.POST.get('email')
    password = request.POST.get('password')
    user = User(fname=fname, lname=lname, email=email,
    last_login=datetime.now())
    user.set_password(password)
    #force_insert=True forces the database to do an insert rather then an update
    status = user.save(force_insert=True)
    if status == 'success':
        subject = 'Welcome to PLTL'
        with open("templates/SignUpNotification.txt", "r") as data:
            msgbody = data.read()
        msg = 'Dear ' + fname +',\n' + msgbody
        from_mail = settings.EMAIL_HOST_USER
        send_mail(subject, msg, from_mail, [email, from_mail],
        fail_silently=True)
    return redirect('home')
コード例 #47
0
ファイル: views.py プロジェクト: YLAsce/oj
def showResult(request, cid, page='1'):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        c = Contest.getById(int(cid))
        try:
            c.canBeManaged(u)
        except:
            raise Err(request, err='no priv')

        if ('threshold' in request.GET) and request.GET['threshold']:
            threshold = float(request.GET['threshold'])
        else:
            threshold = Const.CHEAT_DEFAULT_THRESHOLD

        cheatList = Cheat.getCheatList(contest=c, threshold=threshold)
        paginator = Paginator(cheatList, Const.CHEAT_PER_PAGE)
        page = min(max(int(page), 1), paginator.num_pages)

        cl = paginator.page(page)
        ipa = []
        ipb = []
        for idx, element in enumerate(cl):
            info_a = eval(element.sub1.other_info)
            info_b = eval(element.sub2.other_info)
            #cl[idx] = {'c': element, 'ip_a': info_a['submit_ip'], 'ip_b': info_b['submit_ip']}
            ipa.append(info_a['submit_ip'])
            ipb.append(info_b['submit_ip'])
        
        return render(request, 'newtpl/cheat/showResult.html', {'tpl':{'sp':True,}, 'contest':c, 'cheat_list':cl, 'ipa':ipa,'ipb':ipb })
    except Exception as e:
        return render(request, Err.ERROR_PAGE)

# def codeDiff(request, ctid):
#     try:
#         u = User.getSessionUser(request.session)
#         if not u:
#             raise Err(request, err='not login')
#         ct = Cheat.objects.select_related('sub1__user', 'sub2__user').get(ctid=ctid)
# 
#         try:
#             ct.contest.canBeManaged(u)
#         except:
#             raise Err(request, err='no priv')
# 
#         return render(request, 'newtpl/cheat/codeDiff.html', {'tpl':{'sp':True,}, 'sub1':ct.sub1, 'sub2':ct.sub2})
# 
# 
#     except Exception as e:
#         return render(request, Err.ERROR_PAGE)
    """
コード例 #48
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def userLogin(request):
    username, password = '', ''
    if request.META.has_key('HTTP_AUTHORIZATION'):
        authmeth, auth = request.META['HTTP_AUTHORIZATION'].split(' ', 1)
        if authmeth.lower() == 'basic':
            auth = auth.strip().decode('base64')
            username, password = auth.split(':', 1)
    u = User.getUserByRawUsername(username)
    if u!=None and u!=False and u.checkPasswd(password):
        serializer = UserSerializer(u)
        return JSONResponse(serializer.data)
    return HttpResponse(status=404)
コード例 #49
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def chooseCourseClass(request):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if u.isStudent():
            raise Err(request, 'no priv')
        cc_list = CourseClass.getAllManagedClasses(u)

        return render(request,'newtpl/contest/chooseCourseClass.html',{'list': cc_list, 'tpl':{'sp':True}})
    except Exception as e:
        return render(request, Err.ERROR_PAGE)
コード例 #50
0
ファイル: views.py プロジェクト: matulik/spihs
def token_detail(request, format=None):
    if User.userAuth(request, tokkening=False) == False:
        print u"Access denied"
        return render_to_response('denied.html', context_instance=RequestContext(request))

    if request.method == 'GET':
        try:
            user = User.objects.get(id=request.session['id'])
            token = Token.objects.get(id=user.token_id)
        except Token.DoesNotExist or User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
        serializer = TokenSerializer(token)
        return Response(serializer.data)
コード例 #51
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def login(request):
    if request.method != 'POST':
        return redirect('/')

    try:
        username = request.POST['username']
        passwd = request.POST['passwd']
        u = User.getUserByRawUsername(username)
        if u!=None and u!=False and u.checkPasswd(passwd):
            request.session['uid'] = u.uid
            return redirect(referer(request))
        else:
            username = '******' + username
            u = User.getUserByRawUsername(username)
            if u!=None and u!=False and u.checkPasswd(passwd):
                request.session['uid'] = u.uid
                return redirect(referer(request))
            else:
                raise Exception('login err')
    except Exception as e:
        messages.error(request, u'用户名或密码错误')
        return redirect(referer(request))
コード例 #52
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def showContestNotice(request, cId, cnId):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Exception(Const.NOT_LOGGED_IN)
        
        c = Contest.getById(cId)
        cn = ContestNotice.getById(cnId)
        c.canEnterContest(u)
        return render(request, 'newtpl/contest/showContestNotice.html',
                      {'cid': cId, 'contest_notice': cn,
                       'tpl': {'has_priv': Contest.hasPriv(c.course_class, u), 'sp': True, 'nav_act':'contest',}})
    except Exception as e:
        return render(request, Const.ERROR_PAGE, {'errmsg': unicode(e), })
コード例 #53
0
ファイル: views.py プロジェクト: YLAsce/oj
def chooseCourse(request):
    logger.info(str(request).replace("\n","\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if u.isStudent():
            raise Err(request, 'no priv')
        cs_list = Course.getAllManagedCourses(u)

        return render(request,'newtpl/problem/chooseCourse.html',{'list': cs_list, 'tpl':{'sp':True}})
    except Exception as e:
        logger.error(str(e).replace("\n","\t"))
        return render(request, Err.ERROR_PAGE)
コード例 #54
0
ファイル: views.py プロジェクト: YLAsce/oj
def showProblem(request,p_id): # modified
    logger.info(str(request).replace("\n","\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        p_id = int(p_id)
        p = Problem.getById(p_id)
        if not p.canViewProblem(u):
            raise Err(request, 'no priv')
        p.desc=json.loads(p.prob_desc)
        return render(request, "newtpl/problem/showProblem.html", { 'p':p, 'tpl':{'sp':True}})
    except Exception as e:
        logger.error(str(e).replace("\n","\t"))
        return render(request, Err.ERROR_PAGE)
コード例 #55
0
ファイル: views.py プロジェクト: matulik/spihs
def user_list(request, format=None):
    if User.userAuth(request, tokkening=True) == False:
        print u"Access denied"
        return render_to_response('denied.html', context_instance=RequestContext(request))

    if request.method == 'GET':
        users = User.objects.all()
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)

    elif request.method == 'POST':
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #56
0
ファイル: views.py プロジェクト: YLAsce/oj
def listProblem(request, pageId="1"): # modified
    logger.info(str(request).replace("\n","\t"))
    try:
        pageId = int(pageId)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')

        tres = Problem.problemList(u)
        if (pageId-1)*Const.PROBLEM_PER_PAGE>=len(tres):
            raise Err(request, 'unknown err')
        res = tres[(pageId-1)*Const.PROBLEM_PER_PAGE:Const.PROBLEM_PER_PAGE]

        return render(request,"newtpl/problem/problemList.html",{'res': res,'tpl':{'sp':True}})
    except Exception as e:
        logger.error(str(e).replace("\n","\t"))
        return render(request, Err.ERROR_PAGE)
コード例 #57
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def listContestByUser(request, pageId='1'):
    """
    view used to list all contest a user can participate
    """

    logger.info(str(request).replace("\n","\t"))
    tpl = {'nav_act':'contest'}

    try:
        u = User.getSessionUser(request.session)
        if not u:
            messages.info(request, u'请先登录')
            contestList = None
        else:
            now = datetime.now()
            if u.priv == 'student':
                contestList = Contest.getByStudent(u)
            else:
                contestList = Contest.getByAdmin(u)
                
            for c in contestList:
                c.course_class_name = unicode(c.course_class.getFullName())
                c.title = unicode(c.contest_title)
                if c.start_time+timedelta(minutes=c.length)<now:
                    c.status = 'ended'
                elif c.start_time > now:
                    c.status = 'scheduled'
                else:
                    c.status = 'running'

            paginator = Paginator(contestList, Const.CONTEST_PER_PAGE)
            pageId = min(max(int(pageId), 1), paginator.num_pages)

        if contestList and contestList.count>0:
            return render(request, 'newtpl/contest/contestListByUser.html', {
                'contest_list': paginator.page(pageId), 'tpl':tpl})
        else:
            return render(request, 'newtpl/contest/contestListByUser.html', {
                'tpl':tpl, 'err_msg_list': [
                    u'您暂时没有可以参加的测验。',
                    u'不如走出教室,呼吸一下新鲜空气,给家人打个电话,陪陪妹子?'
                    ]})

    except Exception as e:
        return render(request, Const.ERROR_PAGE, {'errmsg': unicode(e), })
コード例 #58
0
ファイル: views.py プロジェクト: Mr-Phoebe/BOJ-V2
def addRecord2(request, cid):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        c = Contest.getById(cid)
        try:
            c.canBeManaged(u)
        except:
            raise Err(request, err='no priv')

        cp = c.getContestProblem()
        Cheat.addRecord(cp_set=cp)
        Cheat.antiCheat()
        return redirect('Cheat:show_cheat_result', cid=c.cid)
    except Exception as e:
        return render(request, Err.ERROR_PAGE)
コード例 #59
0
ファイル: views.py プロジェクト: YLAsce/oj
def deleteProblem(request, problem_id):
    logger.info(str(request).replace("\n","\t"))
    try:
        user = User.getSessionUser(request.session)
        if not user:
            raise Err(request, 'not login')
        try:
            prob = Problem.getById(int(problem_id))
        except:
            raise Err(request, 'problem illegal')
        if not prob.author.university.isAdmin(user):
            raise Err(request, 'no priv')
        prob.deleteProblem()

        messages.add_message(request, messages.SUCCESS, u'删除题目%d成功' % int(problem_id))
        return redirect('Problem:manage')

    except Exception as e:
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})