Example #1
0
def login(request):
    if request.method == 'GET':
        if request.path == '/':
            return HttpResponseRedirect("users/login.html?next=/main")
        else:
            breadcrumbs.JumpTo(request, "登录", request.get_full_path())
            request.session.modified = True
            context = {
                'nav_items': breadcrumbs.GetNavItems(request),
            }

            return render(request, "users/login.html", context)
    elif request.method == 'POST':
        user_name = request.POST['user_name']
        user_pwd = request.POST['user_pwd']
        user = authenticate(request=request,
                            username=user_name,
                            password=user_pwd)
        if user is not None:
            auth_login(request, user)
            if 'next' in request.GET:
                return HttpResponseRedirect(request.GET['next'])
            else:
                return HttpResponseRedirect('/main')
        else:
            return render(request, "users/login.html", {
                "login_error": "用户名或密码错误",
                "reg_path": "./register"
            })
Example #2
0
def main(request):
    comments = comment_models.Comment.objects.filter(
        comment_type__comment_type_name='main')
    activities = activity_models.Activity.objects.order_by("-start_date").all()

    breadcrumbs.Clear(request)
    breadcrumbs.JumpTo(request, '首页', request.get_full_path())

    # banner
    banners = models.Banner.objects.all()

    # rules
    rules = models.Rule.objects.all()

    # news
    newses = models.News.objects.all()

    context = {
        'nav_items': breadcrumbs.GetNavItems(request),
        'login': request.user.is_authenticated,
        'activities': activities,
        'comments': comments,
        'banners': banners,
        'rules': rules,
        'newses': newses,
        'comment_path':
        '/comment/?comment_type=main&object_id=0&next=\'/main\''
    }
    return render(request, 'main/main.html', context)
Example #3
0
def __getContext(request, error):
    context = {
        'nav_items': breadcrumbs.GetNavItems(request),
        'primary_deps': models.PrimaryDepartment.objects.all(),
        'secondary_deps': models.SecondaryDepartment.objects.all(),
        'programming_lans': models.ProgrammingLanguage.objects.all(),
        'reg_error': error
    }
    return context
Example #4
0
def activity(request, activity_id):
    submits = submit_models.Submit.objects.filter(activity_id=activity_id)
    plans = models.ActivityPlan.objects.filter(activity_id=activity_id)

    # review plan
    submit_review_plans = submit_models.SubmitReviewPlan.objects.filter(
        submit__activity_id=activity_id).order_by("plan_item_start")
    cur_activity = models.Activity.objects.get(activity_id=activity_id)
    comments = comment_models.Comment.objects.filter(
        comment_type__comment_type_name='activity').filter(
            object_id=activity_id)

    # add activity browse times
    cur_activity.browse_times += 1
    cur_activity.save()

    # set breadcrumbs nav
    breadcrumbs.JumpTo(request, cur_activity.name, request.get_full_path())
    request.session.modified = True

    # calc submit comment count
    for submit in submits:
        submit_comments = comment_models.Comment.objects.filter(
            comment_type__comment_type_name="submit").filter(
                object_id=submit.submit_id)
        submit.comment_count = len(submit_comments)

    # this is a ugly adaption to absolute path and relative path, i just dont want to explain why.
    for submit in submits:
        if submit.activity_user.photo.__str__()[0] != '/':
            submit.activity_user.photo = ("/media/%s" %
                                          submit.activity_user.photo)
        if submit.submit_reviewer.photo.__str__()[0] != '/':
            submit.submit_reviewer.photo = ("/media/%s" %
                                            submit.submit_reviewer.photo)

    context = {
        'nav_items':
        breadcrumbs.GetNavItems(request),
        'login':
        request.user.is_authenticated,
        'result':
        cur_activity.result,
        'submits':
        submits,
        'plans':
        plans,
        'submit_review_plans':
        submit_review_plans,
        'comments':
        comments,
        'comment_path':
        "/comment/?comment_type=activity&object_id=%s&next='/activity/%s'" %
        (activity_id, activity_id),
    }
    return render(request, 'activities/activity.html', context)
Example #5
0
def __getResponse(request, comment_type, object_id):
    comments = models.Comment.objects.filter(
        comment_type__comment_type_name=comment_type).filter(
            object_id=object_id)
    context = {
        'login': request.user.is_authenticated,
        'user_name': request.user.username,
        'nav_items': breadcrumbs.GetNavItems(request),
        'comments': comments,
        'next': request.GET['next']
    }
    return render(request, 'comment/comment.html', context)
Example #6
0
def user(request, user_name):
    # comments to me
    comments = comment_models.Comment.objects.filter(
        comment_type__comment_type_name='user').filter(object_id=user_name)

    # breadcrumb
    breadcrumbs.JumpTo(request, user_name, request.get_full_path())
    request.session.modified = True

    # as an attendant for the submits
    user_submits = submit_models.Submit.objects.filter(
        activity_user__user__username=user_name)

    # as a reviewer for the submits
    reviewer_submits = submit_models.Submit.objects.filter(
        submit_reviewer__user__username=user_name)

    # comments posted by me
    my_comments = comment_models.Comment.objects.filter(
        comment_author__user__username=user_name)
    for my_comment in my_comments:
        if my_comment.comment_type.comment_type_name == "main":
            my_comment.target_name = "首页"
            my_comment.target_url = "/main"
        elif my_comment.comment_type.comment_type_name == "activity":
            my_comment.target_name = activity_models.Activity.objects.get(
                activity_id=my_comment.object_id).name
            my_comment.target_url = "/activities/" + my_comment.object_id
        elif my_comment.comment_type.comment_type_name == "submit":
            my_comment.target_name = submit_models.Submit.objects.get(
                submit_id=my_comment.object_id)
            my_comment.target_url = "/submit/" + my_comment.object_id
        elif my_comment.comment_type.comment_type_name == "user":
            my_comment.target_name = my_comment.object_id
            my_comment.target_url = "/user/" + my_comment.object_id

    # get user object
    try:
        auth_user = auth_models.User.objects.get(username=user_name)
        acti_user = models.ActivityUser.objects.get(user=auth_user)
    except:
        return render(request, 'comment/500.html')

    # this is a ugly adaption to absolute path and relative path, i just dont want to explain why.
    if acti_user.photo.__str__()[0] != '/':
        acti_user.photo = ("/media/%s" % acti_user.photo)

    context = {
        'nav_items':
        breadcrumbs.GetNavItems(request),
        'login':
        request.user.is_authenticated,
        'acti_user':
        acti_user,
        'user_submits':
        user_submits,
        'reviewer_submits':
        reviewer_submits,
        'comments':
        comments,
        'my_comments':
        my_comments,
        'comment_path':
        "/comment/?comment_type=user&object_id=%s&next='/users/%s'" %
        (user_name, user_name),
    }
    return render(request, "users/user.html", context)
Example #7
0
def submit(request, submit_id):
    user_submit = models.Submit.objects.get(submit_id=submit_id)
    user_name = user_submit.activity_user.user.username
    comments = comment_models.Comment.objects.filter(
        comment_type__comment_type_name='submit').filter(object_id=submit_id)

    # browse times
    user_submit.browse_times += 1
    user_submit.save()

    # code description file
    code_desc_file = {}
    try:
        code_desc_file = models.SubmitFile.objects.filter(
            submit_id=submit_id).get(
                submit_file_type__submit_file_type_name='desc')
        #code_desc_file = 2
    except:
        pass

    # source code files
    src_code_files = []
    try:
        src_code_files = models.SubmitFile.objects.filter(
            submit_id=submit_id).filter(
                submit_file_type__submit_file_type_name='code')
    except:
        pass

    # code review result file
    code_review_file = {}
    try:
        code_review_file = models.SubmitFile.objects.filter(
            submit_id=submit_id).get(
                submit_file_type__submit_file_type_name='review')
    except:
        pass

    # code comment file
    code_comment_file = {}
    try:
        code_comment_file = models.SubmitFile.objects.filter(
            submit_id=submit_id).get(
                submit_file_type__submit_file_type_name="comment")
    except:
        pass

    # breadcrumbs
    breadcrumbs.JumpTo(request, ('%s的提交' % user_name), request.get_full_path())
    request.session.modified = True

    # this is a ugly adaption to absolute path and relative path, i just dont want to explain why.
    if user_submit.activity_user.photo.__str__()[0] != '/':
        user_submit.activity_user.photo = ("/media/%s" %
                                           user_submit.activity_user.photo)
    if user_submit.submit_reviewer.photo.__str__()[0] != '/':
        user_submit.submit_reviewer.photo = ("/media/%s" %
                                             user_submit.submit_reviewer.photo)

    context = {
        'nav_items':
        breadcrumbs.GetNavItems(request),
        'login':
        request.user.is_authenticated,
        'submit':
        user_submit,
        'submit_user':
        user_submit.activity_user,
        'reviewer':
        user_submit.submit_reviewer,
        'code_desc_file':
        code_desc_file,
        'code_review_file':
        code_review_file,
        'code_comment_file':
        code_comment_file,
        'src_code_files':
        src_code_files,
        'comments':
        comments,
        'comment_path':
        "/comment/?comment_type=submit&object_id=%s&next='/submit/%s'" %
        (submit_id, submit_id),
    }
    return render(request, "submit/submit.html", context)