示例#1
0
 def form_input_to_setting(input_name: str, permission_name: str):
     user = util.user.getCurrentUser(request)
     input_value = request.POST.get(input_name) or "off"
     if input_value == "unset":
         user.delUserpermission(permission_name)
     else:
         user.setUserpermission(permission_name, (input_value == "on"))
示例#2
0
def userProfile(request):
    '''查看当前用户的个人信息,点击右上角昵称进入'''
    context = {}
    user = util.user.getCurrentUser(request)
    if not user:
        return util.user.loginToContinue(request)
    # get user exps
    exps = []
    lv_notice = []
    userexps = user.getUserExp()
    for ue in userexps:
        explet = (ue, ue.getExpHistory(5))
        exps.append(explet)
        cache_key = 'userexp:{ue.id}:{ue.category}:level'.format(ue=ue)
        cache_timeout = 60 * 60 * 24 * 7 * 2  # 2 weeks
        cached_lv = cache.get(cache_key)
        if cached_lv:  # has cached category:level
            new_lv = ue.level
            if new_lv > cached_lv:
                lv_noticelet = (ue.category_zh(), cached_lv, new_lv)
                lv_notice.append(lv_noticelet)
        cache.set(cache_key, ue.level, cache_timeout)
    # get user progress counts
    progress_statics = user.getProgressStatics()
    done_prg_count = Progress.objects.filter(status='done').count()
    if done_prg_count >= 25:
        user.setUserpermission('wellread', True)
    # add exp
    userexp, created = UserExp.objects.get_or_create(userid=user.id, category='user')
    userexp.addExp(1, '查看用户个人信息')
    # render
    context['prgstatics'] = progress_statics.values()
    context['exps'] = exps
    context['lvnotice'] = lv_notice
    return render(request, 'user/profile.html', context)
示例#3
0
def progressSetical(request):  # POST
    '''用户设置进度日历的界面'''
    user = util.user.getCurrentUser(request)
    if not user:
        return util.user.loginToContinue(request)
    use_ical = request.POST.get('useical') or 'off'
    icalon = (use_ical == 'on')
    user.setUserpermission('progressical', icalon)
    return redirect('/user/setting')
示例#4
0
def newUser(request):  # POST
    """新用户点击提交注册按钮后"""
    errMsg = partial(util.ctrl.infoMsg, title=_("注册失败"))
    username = request.POST.get('username')
    question = request.POST.get('question')
    answer1 = request.POST.get('answer1')
    answer2 = request.POST.get('answer2')
    tip = request.POST.get('tip')
    nickname = request.POST.get('nickname')
    email = request.POST.get('email')
    # check musts
    if not username:
        return errMsg(_("“{}”不能为空").format(_("用户名")))
    if not question:
        return errMsg(_("“{}”不能为空").format(_("问题")))
    if not answer1:
        return errMsg(_("“{}”不能为空").format(_("答案")))
    if not email:
        return errMsg(_("“{}”不能为空").format(_("邮箱")))
    # auto fills
    if not nickname:
        nickname = util.user.getRandomName()
    answer1 = util.ctrl.salty(answer1)
    answer2 = util.ctrl.salty(answer2) if answer2 else None
    if not tip:
        tip = None
    # check conflicts
    if len(User.objects.filter(username=username)) != 0:
        return errMsg(_("用户名 '{}' 已存在!").format(username))
    if len(User.objects.filter(nickname=nickname)) != 0:
        return errMsg(_("昵称 '{}' 已存在!").format(nickname))
    if len(User.objects.filter(email=email)) != 0:
        return errMsg(_("邮箱 '{}' 已存在!").format(email))
    # check literally
    if " " in username:
        return errMsg(_("用户名 '{}' 只应包含数字、字母、和英文句号!").format(username))
    if " " in nickname:
        return errMsg(_("昵称 '{}' 只应包含字母和汉字!").format(nickname))
    # create into db
    user = User(username=username,
                question=question,
                answer1=answer1,
                answer2=answer2,
                tip=tip,
                nickname=nickname,
                email=email)
    user.save()
    # add betauser badge
    user.setUserpermission('betauser', True)
    # add exp
    util.userexp.addExp(user, 'user', 1, _('注册成功'))
    # render
    return util.ctrl.infoMsg(
        _(" {user.username} 注册成功!\n您是网站第 {user.id} 位用户。\n请登入以便我们记住您!").format(
            user=user),
        url='/user/signin',
        title=_("欢迎加入"))
示例#5
0
def userNewUser(request):  # POST
    '''新用户点击提交注册按钮后'''
    username = request.POST.get('username')
    question = request.POST.get('question')
    answer1 = request.POST.get('answer1')
    answer2 = request.POST.get('answer2')
    tip = request.POST.get('tip')
    nickname = request.POST.get('nickname')
    email = request.POST.get('email')
    # check musts
    if not username:
        return util.ctrl.infoMsg("“用户名” 不能为空", title="注册失败")
    if not question:
        return util.ctrl.infoMsg("“问题” 不能为空", title="注册失败")
    if not answer1:
        return util.ctrl.infoMsg("“答案” 不能为空", title="注册失败")
    if not email:
        return util.ctrl.infoMsg("“邮箱” 不能为空", title="注册失败")
    # auto fills
    if not nickname:
        nickname = getRandomName()
    answer1 = util.ctrl.salty(answer1)
    answer2 = util.ctrl.salty(answer2) if answer2 else None
    if not tip:
        tip = None
    # check conflicts
    if len(User.objects.filter(username=username)) != 0:
        return util.ctrl.infoMsg("用户名 '{username}' 已存在!".format(username=username), title="注册失败")
    if len(User.objects.filter(nickname=nickname)) != 0:
        return util.ctrl.infoMsg("昵称 '{nickname}' 已存在!".format(nickname=nickname), title="注册失败")
    if len(User.objects.filter(email=email)) != 0:
        return util.ctrl.infoMsg("邮箱 '{email}' 已存在!".format(email=email), title="注册失败")
    # check literally
    if " " in username:
        return util.ctrl.infoMsg("用户名 '{username}' 只应包含数字、字母、和英文句号!".format(username=username), title="注册失败")
    if " " in nickname:
        return util.ctrl.infoMsg("昵称 '{nickname}' 只应包含字母和汉字!".format(nickname=nickname), title="注册失败")
    # create into db
    user = User(username=username, question=question, answer1=answer1, answer2=answer2, tip=tip, nickname=nickname, email=email)
    user.save()
    # add betauser badge
    user.setUserpermission('betauser', True)
    # add exp
    userexp, created = UserExp.objects.get_or_create(userid=user.id, category='user')
    userexp.addExp(1, '注册成功')
    # render
    return util.ctrl.infoMsg(" {user.username} 注册成功!\n您是网站第 {user.id} 位用户。\n请登入以便我们记住您!".format(user=user), url='/user/signin', title="欢迎加入")
示例#6
0
def profile(request):
    """查看当前用户的个人信息,点击右上角昵称进入"""
    context = {}
    # get user exps
    exps = []
    user = util.user.getCurrentUser(request)
    userexps = user.getUserExp()
    for ue in userexps:
        explet = (ue, ue.getExpHistory(5))
        exps.append(explet)
    # get user progress counts
    progress_statics = user.getProgressStatics()
    done_prg_count = Progress.objects.filter(status='done').count()
    if done_prg_count >= 25:
        user.setUserpermission('wellread', True)
    # add exp
    util.userexp.addExp(user, 'user', 1, _('查看用户个人信息'))
    # render
    context['prgstatics'] = progress_statics.values()
    context['exps'] = exps
    return render(request, 'user/profile.html', context)