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" })
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)
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
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)
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)
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)
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)