def forum_password_page(request): ub = get_user_by_cookie(request) if ub == False: return auth_fail_tip() if request.method == 'GET': return render(request, 'forum_update_password.html', {'meta': get_page_meta(request)}) elif request.method == 'POST': param = request.POST if check_password(param['old_password'], ub.password) == False: return user_tip_page('Operation Fail', 'Your old password is not correct', jump_to_back=True) if param['new_password1'] != param['new_password2']: return user_tip_page('Operation Fail', 'Two passwords do not match', jump_to_back=True) if check_password_length(param['new_password1']) == False: return user_tip_page('Operation Fail', 'Password length must be between 6 and 15', jump_to_back=True) # Use this to logout, just write a false to the cookie record_login(request, '', '', False) return user_tip_page( 'Operation Successful', 'Your password has been updated. Please login again.', jump_to_login=True)
def forum_password_page(request): ub = get_user_by_cookie(request) if ub == False: return auth_fail_tip() if request.method == 'GET': return render(request,'forum_update_password.html', {'meta': get_page_meta(request)}) elif request.method == 'POST': param = request.POST if check_password(param['old_password'],ub.password) == False: return user_tip_page('Operation Fail', 'Your old password is not correct', jump_to_back=True) if param['new_password1'] != param['new_password2']: return user_tip_page('Operation Fail', 'Two passwords do not match', jump_to_back=True) if check_password_length(param['new_password1']) == False: return user_tip_page('Operation Fail', 'Password length must be between 6 and 15', jump_to_back=True) # Use this to logout, just write a false to the cookie record_login(request,'','',False) return user_tip_page('Operation Successful', 'Your password has been updated. Please login again.', jump_to_login=True)
def forum_profile_page(request): ub = get_user_by_cookie(request) meta = get_page_meta(request) if ub == False: return user_tip_page('Authorization Fail','You need to login first', jump_to_back=True,jump_to_main=True) pt = ProfileType.objects.all() return render(request,'forum_profile_page.html',{'meta': meta, 'profile_type': pt})
def get_page(request,page_view): meta = get_page_meta(request) #try: #page = render(request,page_name,{'meta': meta}) #except: # return simplejson.dumps({'success': False}) url = reverse(page_view) func = eval(page_view) request.method = 'GET' # Make sure we are doing the right thing page = func(request) return simplejson.dumps({'success': True, 'content': page.content})
def make_new_post(request,thread_id,text,privilege=0,quote_floor=None): ub = get_user_by_cookie(request) meta = get_page_meta(request) if ub == False: return simplejson.dumps({'success': False, 'reason': 'You have not logged in'}) tb_count = ThreadBasic.objects.filter(tid__exact=thread_id).count() if tb_count == 0: return simplejson.dumps({'success': False, 'reason': 'Thread does not exist'}) else: tb = ThreadBasic.objects.get(pk=thread_id) if quote_floor != None: # Add the quote label, and then send messages text = make_quote_post_text(text,thread_id,quote_floor) new_post = PostBasic() new_post.tid = tb new_post.uid = ub new_post.text = escape(text) # We do not check the text new_post.upvote = 0 new_post.downvote = 0 new_post.privilege = privilege new_post.floor = PostBasic.objects.filter(tid__tid__exact=thread_id).count() + 1 new_post.save() ub.userextend.money += 1 ub.userextend.credit += 1 ub.userextend.num_of_posts += 1 ub.userextend.save() try: bb = BoardBasic.objects.get(pk=tb.bid.bid) except ObjectDoesNotExist: return simplejson.dumps({'success': False, 'reason': 'Board does not exist'}) bb.post_num += 1 bb.last_thread = tb bb.save() tb.last_reply_time = new_post.post_date tb.last_reply_user = ub tb.save() floor_name_num = FloorType.objects.count() single_post = render(request,'forum_post_block.html',{'i': new_post, 'meta': meta, 'floor_name_num': floor_name_num,}) return simplejson.dumps({'success': True, 'content': single_post.content})
def forum_profile_page(request): ub = get_user_by_cookie(request) meta = get_page_meta(request) if ub == False: return user_tip_page('Authorization Fail', 'You need to login first', jump_to_back=True, jump_to_main=True) pt = ProfileType.objects.all() return render(request, 'forum_profile_page.html', { 'meta': meta, 'profile_type': pt })
def forum_uploadimage_page(request): if request.method == 'POST': form = ImageForm(request.POST,request.FILES) if form.is_valid(): ub = get_user_by_cookie(request) if ub == False: raise Http404 else: ue = ub.userextend ue.image = form.cleaned_data['img'] ue.save() return user_tip_page('Image Uploaded Successfuly', 'Now you can refresh the page and see a change', jump_to_back=True, meta=get_page_meta(request)) else: raise Http404 else: form = ImageForm() return render(request,'forum_upload_image.html', {'form': form})
def forum_board_page(request): """ Renders the board page. Each catrgory of board is grouped into one element in the list """ # forums = BoardBasic.objects.order_by(btype__) # This is always passed into the forum template board_types = BoardType.objects.order_by('order').all() boards = [] for i in board_types: type_name = i.name type_board = i.boardbasic_set.all() if len(type_board) == 0: continue else: type_dict = {'name': type_name, 'board': type_board} boards.append(type_dict) user_basic = get_user_by_cookie(request) return render_to_response('forum_board.html',{'boards':boards, 'meta': get_page_meta(request) })
def forum_uploadimage_page(request): if request.method == 'POST': form = ImageForm(request.POST, request.FILES) if form.is_valid(): ub = get_user_by_cookie(request) if ub == False: raise Http404 else: ue = ub.userextend ue.image = form.cleaned_data['img'] ue.save() return user_tip_page( 'Image Uploaded Successfuly', 'Now you can refresh the page and see a change', jump_to_back=True, meta=get_page_meta(request)) else: raise Http404 else: form = ImageForm() return render(request, 'forum_upload_image.html', {'form': form})
def make_new_reply(request,post_id,reply_text): ub = get_user_by_cookie(request) meta = get_page_meta(request) if ub == False: return simplejson.dumps({'success': False, 'reason': 'You have not logged in'}) pb_count = PostBasic.objects.filter(pid__exact=post_id).count() if pb_count == 0: return simplejson.dumps({'success': False, 'reason': 'Post does not exist'}) else: pb = PostBasic.objects.get(pk=post_id) new_reply = ReplyBasic() new_reply.pid = pb new_reply.uid = ub new_reply.text = reply_text new_reply.save() # Each reply will get you 1 point of money ub.userextend.money += 1 ub.userextend.save() # TODO: SEND MESSAGE TO THE OWNER return get_post_details(request,post_id,1)
def forum_board_page(request): """ Renders the board page. Each catrgory of board is grouped into one element in the list """ # forums = BoardBasic.objects.order_by(btype__) # This is always passed into the forum template board_types = BoardType.objects.order_by('order').all() boards = [] for i in board_types: type_name = i.name type_board = i.boardbasic_set.all() if len(type_board) == 0: continue else: type_dict = {'name': type_name, 'board': type_board} boards.append(type_dict) user_basic = get_user_by_cookie(request) return render_to_response('forum_board.html', { 'boards': boards, 'meta': get_page_meta(request) })
def forum_basicprofile_page(request): if get_user_by_cookie(request) == False: return auth_fail_tip() return render(request, 'forum_basic_profile.html', {'meta': get_page_meta(request)})
def forum_thread_page(request, bid, page='1', thread_per_page='30'): """ Display a page of threads, using the given page number and num_of_threads per page. """ # Parameters are always passed using Unicode no matter what it is in the # regexp page = int(page) thread_per_page = int(thread_per_page) meta = get_page_meta(request) # We use cached data instead of doing query a each time. So please keep the # data synchronized try: board_basic = BoardBasic.objects.get(pk=bid) except ObjectDoesNotExist: return user_tip_page('Board Does Not Exist', 'Please check your URL', jump_to_back=True, meta=meta) else: thread_num = board_basic.thread_num # Do part of the queries here threads = ThreadBasic.objects.filter(bid__bid__exact=bid) other = threads.exclude(privilege__exact=-1).filter( hided__exact=False).order_by('-privilege', '-last_reply_time').all() # Only show these threads when it is the first page uppermost_temp = threads.filter( privilege__exact=-1, hided__exact=False).order_by('-last_reply_time') hidden_num = threads.filter(hided__exact=True).count() normal_thread_num = thread_num - uppermost_temp.count() - hidden_num #return debug_output(thread_num) if page == 1: # Just do the query uppermost = uppermost_temp.all() else: uppermost = [] # These cannot be counted into the normal threads page_range = get_page_range(page, normal_thread_num, thread_per_page) # If there is no content on the first page then return a null set if page_range == False: if page == 1: other = [] total_page = 1 else: # If not requesting page number 1, then just raise an error return user_tip_page('Page Does Not Exist', 'Please check your page number', jump_to_back=True, meta=meta) else: other = other[page_range[0]:page_range[1]] total_page = page_range[2] #return HttpResponse(str(normal_thread_num),content_type='text/html') return render_to_response( 'forum_thread.html', { 'threads': { 'uppermost': uppermost, 'other': other, }, # Two parts 'board_basic': board_basic, 'thread_per_page': thread_per_page, 'total_page': total_page, 'current_page': page, 'meta': meta }, context_instance=RequestContext(request)) # CSRF
def forum_post_page(request, tid, page='1', post_per_page='30'): page = int(page) post_per_page = int(post_per_page) tid = int(tid) meta = get_page_meta(request) floor_name_num = FloorType.objects.count() try: thread_basic = ThreadBasic.objects.get(pk=tid) except ObjectDoesNotExist: return user_tip_page('Thread Does Not Exist', 'Please check your URL', jump_to_back=True, meta=meta) # Usually this won't happen, just here for safety and completeness try: board_basic = BoardBasic.objects.get(pk=thread_basic.bid.bid) except ObjectDoesNotExist: return user_tip_page('Thread Board Does Not Exist, Fatal Error', 'Please contact system administrator', jump_to_back=True, meta=meta) if thread_basic.hided == True: return user_tip_page('Cannot Access Thread', 'Thread has been locked', jumo_to_back=True, meta=meta) # privilege for the 1st floor is 2, other topped is 1, and normal is 0 post_set = PostBasic.objects.filter(tid__tid__exact=tid).order_by( '-privilege', 'post_date') post_num = post_set.count() posts = post_set.all() index_range = get_page_range(page, post_num, post_per_page) # It is not possible since each thread must at least have one post # But we do it for safety and completeness if index_range == False and page != 1: return user_tip_page('Page Does Not Exist', 'Please check your page number', jump_to_back=True, meta=meta) elif index_range == False and page == 1: total_page = 1 posts = [] else: total_page = index_range[2] posts = posts[index_range[0]:index_range[1]] # A dictionary using pid as the key. #replies = {} #for i in posts: # reply_one_post = ReplyBasic.objects.filter(pid__exact=i.pid).order_by('-post_date').all() # replies[str(i.pid)] = reply_one_post return render_to_response('forum_post.html', { 'board_basic': board_basic, 'thread_basic': thread_basic, 'posts': posts, 'post_per_page': post_per_page, 'floor_name_num': floor_name_num, 'current_page': page, 'total_page': total_page, 'meta': meta }, context_instance=RequestContext(request))
def forum_post_page(request,tid,page='1',post_per_page='30'): page = int(page) post_per_page = int(post_per_page) tid = int(tid) meta = get_page_meta(request) floor_name_num = FloorType.objects.count() try: thread_basic = ThreadBasic.objects.get(pk=tid) except ObjectDoesNotExist: return user_tip_page('Thread Does Not Exist', 'Please check your URL', jump_to_back=True, meta=meta) # Usually this won't happen, just here for safety and completeness try: board_basic = BoardBasic.objects.get(pk=thread_basic.bid.bid) except ObjectDoesNotExist: return user_tip_page('Thread Board Does Not Exist, Fatal Error', 'Please contact system administrator', jump_to_back=True, meta=meta) if thread_basic.hided == True: return user_tip_page('Cannot Access Thread', 'Thread has been locked', jumo_to_back=True, meta=meta) # privilege for the 1st floor is 2, other topped is 1, and normal is 0 post_set = PostBasic.objects.filter(tid__tid__exact=tid).order_by('-privilege','post_date') post_num = post_set.count() posts = post_set.all() index_range = get_page_range(page,post_num,post_per_page) # It is not possible since each thread must at least have one post # But we do it for safety and completeness if index_range == False and page != 1: return user_tip_page('Page Does Not Exist', 'Please check your page number', jump_to_back=True, meta=meta) elif index_range == False and page == 1: total_page = 1 posts = [] else: total_page = index_range[2] posts = posts[index_range[0]:index_range[1]] # A dictionary using pid as the key. #replies = {} #for i in posts: # reply_one_post = ReplyBasic.objects.filter(pid__exact=i.pid).order_by('-post_date').all() # replies[str(i.pid)] = reply_one_post return render_to_response('forum_post.html', {'board_basic': board_basic, 'thread_basic': thread_basic, 'posts': posts, 'post_per_page': post_per_page, 'floor_name_num': floor_name_num, 'current_page': page, 'total_page': total_page, 'meta': meta}, context_instance=RequestContext(request))
def forum_thread_page(request,bid,page='1',thread_per_page='30'): """ Display a page of threads, using the given page number and num_of_threads per page. """ # Parameters are always passed using Unicode no matter what it is in the # regexp page = int(page) thread_per_page = int(thread_per_page) meta = get_page_meta(request) # We use cached data instead of doing query a each time. So please keep the # data synchronized try: board_basic = BoardBasic.objects.get(pk=bid) except ObjectDoesNotExist: return user_tip_page('Board Does Not Exist', 'Please check your URL', jump_to_back=True, meta=meta) else: thread_num = board_basic.thread_num # Do part of the queries here threads = ThreadBasic.objects.filter(bid__bid__exact=bid) other = threads.exclude(privilege__exact=-1).filter(hided__exact=False).order_by('-privilege','-last_reply_time').all() # Only show these threads when it is the first page uppermost_temp = threads.filter(privilege__exact=-1,hided__exact=False).order_by('-last_reply_time') hidden_num = threads.filter(hided__exact=True).count() normal_thread_num = thread_num - uppermost_temp.count() - hidden_num #return debug_output(thread_num) if page == 1: # Just do the query uppermost = uppermost_temp.all() else: uppermost = [] # These cannot be counted into the normal threads page_range = get_page_range(page,normal_thread_num,thread_per_page) # If there is no content on the first page then return a null set if page_range == False: if page == 1: other = [] total_page = 1 else: # If not requesting page number 1, then just raise an error return user_tip_page('Page Does Not Exist', 'Please check your page number', jump_to_back=True,meta=meta) else: other = other[page_range[0]:page_range[1]] total_page = page_range[2] #return HttpResponse(str(normal_thread_num),content_type='text/html') return render_to_response('forum_thread.html', {'threads': {'uppermost': uppermost, 'other': other,}, # Two parts 'board_basic': board_basic, 'thread_per_page': thread_per_page, 'total_page': total_page, 'current_page': page, 'meta': meta}, context_instance=RequestContext(request)) # CSRF
def forum_basicprofile_page(request): if get_user_by_cookie(request) == False: return auth_fail_tip() return render(request,'forum_basic_profile.html', {'meta': get_page_meta(request)})