def bbsMain(request): user = User.objects.get(id=request.user.id) type = getType(user) usern = user.username Posts = [] Notices = [] is_teacher = 0 is_manager = 0 if type == 'Manager': typestr = 'manager' backtype = 'manager' is_manager = 1 elif type == 'Student': typestr = 'student' backtype = 'stu' else: typestr = 'instructor' backtype = 'instructor' is_teacher = 1 posts = Post.objects.all().order_by("-is_top","-time") notices = Notice.objects.all().order_by("-time")[0:2] for var in posts: if var.is_best == 0: title = var.title else: title = '[best]:'+var.title Posts.append({'id':var.id,'poster':var.poster.username,'time':var.time,'title': title}) for var in notices: Notices.append({'instructor':var.instructor.user.username,'content':var.content}) return render(request,'bbs_homepage.html',{'backtype':backtype,'is_teacher':is_teacher,'is_manager':is_manager,'type':typestr,'userid':user.id,'username': usern,'post_list':Posts,'notices':Notices,'status':'true'})#主界面
def paperdelete(request, paperId, questionId): ques = Question.objects.get(id=questionId) pap = Paper.objects.get(id=paperId) ques.paper.remove(pap) user = request.user ins = user.instructor paper = Paper.objects.get(id=paperId) questions = Question.objects.filter(course_id=paper.course_id) paperques = paper.question_set.all() xz = [] pd = [] for q in paperques: if q.q_type == 'xz': xz.append(q) else: pd.append(q) for p in questions: if p in paperques: del (p) type = getType(user) if type != 'Instructor': return HttpResponse('You are not an instructor!') else: return render( request, 'paper2.html', { 'user': user, 'paper': paper, 'question_pd_list': pd, 'question_xz_list': xz, 'allquestion_list': questions })
def releasePost(request): user = User.objects.get(id=request.user.id) type = getType(user) errors = [] if request.method == 'POST': if request.POST['post_title'] == '': errors.append('请输入标题') elif request.POST['post_content'] == '': errors.append('请输入内容') if not errors: ptitle = request.POST['post_title'] pcontent = request.POST['post_content'] post = Post.objects.create( poster=user, title=ptitle, content=pcontent ) post.save() return bbsMain(request) html = get_template('release_post.html').render({ 'errors': errors, 'posterid': user.id }) return HttpResponse(html)
def get_post(request, offset): user = request.user type = getType(user) try: offset = int(offset) except ValueError: raise Http404() # 测试用的,添加了两个p和r数据 # 主要逻辑,根据offset找出相应的post post = Post.objects.filter(id=offset) # 根据post找出相应的replies replies = Reply.objects.filter(post=post) # 渲染帖子页面 if type != 'Manager': html = get_template('bbs_post.html').render({ 'post': post[0], 'replies': replies, 'is_manager': 0, 'status': 'true', }) else: html = get_template('bbs_post.html').render({ 'post': post[0], 'replies': replies, 'is_manager': 1, 'status': 'true', }) return HttpResponse(html)
def paper2(request, paperId): user = request.user ins = user.instructor paper = Paper.objects.get(id=paperId) #question = Question.objects.get(id=questionId) tches = Teaches.objects.filter(instructor_id=ins.id) teacher = [] for t in tches: teacher.append(t.section.course) questions = Question.objects.filter(course_id=paper.course_id) paperques = paper.question_set.all() xz = [] pd = [] for q in paperques: if q.q_type == 'xz': xz.append(q) else: pd.append(q) for p in questions: if p in paperques: del (p) type = getType(user) if type != 'Instructor': return HttpResponse('You are not an instructor!') else: return render( request, 'paper2.html', { 'user': user, 'paper': paper, 'question_pd_list': pd, 'question_xz_list': xz, 'allquestion_list': questions })
def paper1(request): user = request.user type = getType(user) if type != 'Instructor': return HttpResponse('You are not an instructor!') else: return render(request, 'paper1.html', {'user': user})
def deletepaper(request, pid): user = request.user ins = user.instructor type = getType(user) if type != 'Instructor': return HttpResponse('You are not an instructor!') paper = Paper.objects.get(id=pid) paper.delete() tches = Teaches.objects.filter(instructor_id=ins.id) teaches = [] for t in tches: teaches.append(t.section.course) iPaper = Paper.objects.all() instruPaper = [] for i in iPaper: if i.course in teaches: instruPaper.append(i) myPaper = Paper.objects.filter(instructor_id=ins.id) return render(request, 'teacher1.html', { 'user': user, 'allpaper_list': instruPaper, 'mypaper_list': myPaper })
def manageUser(request): user = request.user type = getType(user) if type != 'Manager': return HttpResponse('Fxxk!stop such actions!') if request.method == 'POST': user_id = request.POST['user_id'] if 'reply_id' in request.POST: rid = request.POST['reply_id'] reply = Reply.objects.get(id=rid) reply.delete() if 'post_id' in request.POST: pid = request.POST['post_id'] post = Post.objects.get(id=pid) post.delete() if 'user_id' in request.GET: user_id = request.GET['user_id'] ret_post = [] ret_reply = [] posts = Post.objects.filter(poster=User.objects.get(id=user_id)) replies = Reply.objects.filter(replier=User.objects.get(id=user_id)) for p in posts: ret_post.append({'id': p.id, 'title': p.title, 'content': p.content, 'time': p.time}) for r in replies: ret_reply.append({'id': r.id, 'time': r.time, 'post_title': r.post.title, 'content': r.content}) return render(request, 'manage_user.html', {'username': user.username, 'userid': user_id, 'posts': ret_post, 'replies': ret_reply})
def fileuntop(req, section_id, fid): user = req.user type = getType(user) if (type == 'Student'): return render(req, 'window10.html') else: file.objects.filter(id=fid).update(flag_top=0) return render(req, 'window8.html')
def idjudge(req, section_id): whoisthis = 'teacher' if getType(req.user) == 'Student': whoisthis = 'student' else: whoisthis = 'teacher' if whoisthis == 'teacher': return HttpResponseRedirect('teacher') else: return HttpResponseRedirect('student')
def filetop(req, section_id, fid): b = file.objects.latest('flag_top') n = b.flag_top + 1 user = req.user type = getType(user) if (type == 'Student'): return render(req, 'window10.html') else: file.objects.filter(id=fid).update(flag_top=n) return render(req, 'window7.html')
def deletePostManager(request): user = request.user type = getType(user) if request.method == 'POST': if type != 'Manager': return HttpResponse('Fxxk!stop such actions!') ppost = Post.objects.get(id=request.POST['post_id']) ppost.delete() return bbsMain(request) else: return bbsMain(request)
def filedel(req, section_id, fid): f = file.objects.get(id=fid) user = req.user type = getType(user) file.objects.get(id=fid).delete() #return render(req, 'window6.html') if req.user.id == f.user_id or type == 'Instructor': file.objects.get(id=fid).delete() return render(req, 'window6.html') else: return render(req, 'window9.html')
def lookMessage(request): user = request.user type = getType(user) usern = user.username Messages = [] message = Message.objects.filter(receiver=user) for m in message: Messages.append({'is_read': m.is_read, 'sender': m.sender.username, 'time': m.time, 'content': m.content}) for item in message: item.is_read = 1 item.save() return render(request, 'look_message.html', {'username': usern, 'message_list': Messages}) # 消息盒子界面
def paperchinfo(request, paperId): user = request.user type = getType(user) if type != 'Instructor': return HttpResponse('You are not an instructor!') if request.method == 'POST': p = Paper.objects.get(id=paperId) p.name = request.POST['paper_name'] cour_name = request.POST['course_name'] p.course = Course.objects.get(title=cour_name) #ins_name = request.POST['teacher_name'] #p.instructor = User.objects.get(username = ins_name).instructor p.difficulty = request.POST['difficulty'] #p.choice_num = request.POST['choiceNum'] #p.judge_num = request.POST['judgeNum'] #p.status = request.POST['status'] p.limit_time = request.POST['limit_time'] p.save() ins = user.instructor paper = Paper.objects.get(id=paperId) #question = Question.objects.get(id=questionId) tches = Teaches.objects.filter(instructor_id=ins.id) teacher = [] for t in tches: teacher.append(t.section_course) qtions = Question.objects.all() questions = [] for f in qtions: if f.course in teacher: questions.append(f) paperques = paper.question_set.all() xz = [] pd = [] for q in paperques: if q.q_type == 'xz': xz.append(q) else: pd.append(q) for p in questions: if p in paperques: del (p) return render( request, 'paper2.html', { 'user': user, 'paper': paper, 'question_pd_list': pd, 'question_xz_list': xz, 'allquestion_list': questions })
def mainForm(req): #建立需要的文件夹 folderpath = 'shareSource\\homework' exist = os.path.exists(folderpath) if not exist: os.mkdir(folderpath) folderpath = 'shareSource\\source' exist = os.path.exists(folderpath) if not exist: os.mkdir(folderpath) #身份检查 user = User.objects.get(id=req.user.id) type = getType(user) section_list = [] if type == 'Manager': section_list = Section.objects.all() else: if type == 'Student': for i in Takes.objects.filter(student=user.student): section_list.append(i.section) elif type == 'Instructor': for i in Teaches.objects.filter(instructor=user.instructor): section_list.append(i.section) #test data # contents = [ # {'id': 1, 'title': 'course1', 'source_link': 'sourceForm/1', 'homework_link': 'homework/1'}, # {'id': 2, 'title': 'course2', 'source_link': 'sourceForm/2', 'homework_link': 'homework/2'}, # {'id': 3, 'title': 'course3', 'source_link': 'sourceForm/3', 'homework_link': 'homework/3'}, # ] contents = [] for onesection in section_list: newcontents = { 'id': onesection.id, 'title': onesection.course.title, 'source_link': 'source/%i' % onesection.id, 'homework_link': 'homework/%i' % onesection.id } contents.append(newcontents) if req.method == 'POST': if req.POST['search'] != "": Ffile = file.objects.all().filter( file_name__contains=req.POST['search']).order_by( "-flag_top", "-file_id") return render(req, "searchForm.html", { 'file': Ffile, 'fname': req.POST['search'] }) else: return render(req, 'mainForm.html', {'content': contents}) return render(req, 'mainForm.html', {'content': contents})
def instrCourseQuery_instr(request): user = User.objects.get(id=request.user.id) type = getType(user) if type != 'Instructor': return HttpResponse('You are not a instructor!') else: time = "" room = "" teacher_name = "" ret = [] user_name = user.username instructor = User.objects.get(username=user_name).instructor p = Teaches.objects.filter(instructor=instructor) for obj in p: section = obj.section t = Teaches.objects.filter(section=section) for q in t: instructor = q.instructor name = User.objects.get(instructor=instructor).get_full_name() teacher_name += "%s / " % name course = section.course semester = section.semester max_num = section.max_number course_num = course.course_number course_name = course.title stcs = SecTimeClassroom.objects.filter(section=section) for stc in stcs: time_slot = stc.time_slot day = time_slot.day start = time_slot.start_time end = time_slot.end_time time += "周%d 第%d节 - 第%d节\n" % (day, start, end) classroom = stc.classroom building = classroom.building room_num = classroom.room_number room += "%s-%s" % (building, room_num) type = classroom.type if type == "1": room += "\n" else: room += "(多)\n" ret.append( {'course_num': course_num, 'course_name': course_name, 'semester': semester, 'time': time, 'room': room, 'teacher_name': teacher_name, 'max_num': max_num}) teacher_name = "" room = "" time = "" return render(request, 'course_query_result.html', {'ret': ret})
def setBest(request): user = request.user type = getType(user) post = {} reply = [] is_manager = 0 if type == 'Manager': is_manager = 1 if request.method == 'POST': if type != 'Manager': return HttpResponse('Fxxk!stop such actions!') ppost = Post.objects.get(id=request.POST['post_id']) if ppost.is_best == 0: ppost.is_best = 1 else: ppost.is_best = 0 ppost.save() post['id'] = ppost.id post['title'] = ppost.title post['content'] = ppost.content post['poster'] = ppost.poster.username post['time'] = ppost.time replies = Reply.objects.filter(post=ppost).order_by("time") for r in replies: reply.append({'id': r.id, 'replier': r.replier.username, 'replier_id': r.replier.id, 'content': r.content, 'time': r.time}) return render(request, 'bbs_post.html', {'is_manager': is_manager, 'post': post, 'replies': reply, 'status': 'Operation succeed!'}) else: if 'post_id' not in request.GET: return HttpResponse('Fxxk!stop such actions!') ppost = Post.objects.get(id=request.GET['post_id']) post['id'] = ppost.id post['title'] = ppost.title post['content'] = ppost.content post['poster'] = ppost.poster.username post['time'] = ppost.time replies = Reply.objects.filter(post=ppost).order_by("time") for r in replies: reply.append({'id': r.id, 'replier': r.replier.username, 'replier_id': r.replier.id, 'content': r.content, 'time': r.time}) return render(request, 'bbs_post.html', {'is_manager': is_manager, 'post': post, 'replies': reply, 'status': 'true'})
def managePost(request): user = request.user type = getType(user) if type == 'Manager': if request.method == 'POST': if 'reply_id' in request.POST: rid = request.POST['reply_id'] reply = Reply.objects.get(id=rid) reply.delete() if 'post_id' in request.POST: pid = request.POST['post_id'] post = Post.objects.get(id=pid) post.delete() ret_post = [] ret_reply = [] posts = Post.objects.all() replies = Reply.objects.all() for p in posts: ret_post.append({'id': p.id, 'title': p.title, 'content': p.content, 'time': p.time}) for r in replies: ret_reply.append({'id': r.id, 'time': r.time, 'post_title': r.post.title, 'content': r.content}) return render(request, 'user_manage_post.html', {'username': user.username, 'userid': user.id, 'posts': ret_post, 'replies': ret_reply}) else: if request.method == 'POST': if 'reply_id' in request.POST: rid = request.POST['reply_id'] reply = Reply.objects.get(id=rid) reply.delete() if 'post_id' in request.POST: pid = request.POST['post_id'] post = Post.objects.get(id=pid) post.delete() ret_post = [] ret_reply = [] posts = Post.objects.filter(poster=user) replies = Reply.objects.filter(replier=user) for p in posts: ret_post.append({'id': p.id, 'title': p.title, 'content': p.content, 'time': p.time}) for r in replies: ret_reply.append({'id': r.id, 'time': r.time, 'post_title': r.post.title, 'content': r.content}) return render(request, 'user_manage_post.html', {'username': user.username, 'userid': user.id, 'posts': ret_post, 'replies': ret_reply})
def manageNotice(request): user = request.user type = getType(user) Posts = [] Notices = [] if request.method == 'POST': id = request.POST['notice_id'] notice = Notice.objects.get(id=id) notice.delete() # 显示界面 if type == 'Student': status = 'Unable to operate on a notice!You are not an instructor!' is_teacher = 0 is_manager = 0 if type == 'Manager': typestr = 'manager' is_manager = 1 elif type == 'Student': typestr = 'student' else: typestr = 'instructor' is_teacher = 1 posts = Post.objects.all().order_by("-is_top", "-time") notices = Notice.objects.all().order_by("-time")[0:2] for var in posts: Posts.append({'id': var.id, 'poster': var.poster.username, 'time': var.time, 'title': var.title}) for var in notices: Notices.append({'instructor': var.instructor.user.username, 'content': var.content}) return render(request, 'bbs_homepage.html', {'is_teacher': is_teacher, 'is_manager': is_manager, 'type': typestr, 'userid': user.id, 'username': user.username, 'post_list': Posts, 'notices': Notices, 'status': status}) # 主界面 ret_notice = [] if type == 'Instructor': inst_notice = Notice.objects.filter(instructor=user.instructor) else: inst_notice = Notice.objects.all() for n in inst_notice: ret_notice.append({'id': n.id, 'instructor': n.instructor.user.username, 'time': n.time, 'content': n.content}) return render(request, 'manage_notice.html', {'notices': ret_notice, 'username': user.username, 'userid': user.id})
def search_post(request): user = User.objects.get(id=request.user.id) type = getType(user) usern = user.username notices = Notice.objects.all()[0:2] # 主逻辑部分 # 过去搜索键值 key = request.GET.get('search_key', '') # 得到当前在使用搜索的用户 userid = request.GET.get('userid', 22389) # 得到题目包含关键字的帖子们 posts = Post.objects.filter(title__contains=key).order_by("-is_top", "-time") # 渲染主界面,在搜索完后返回到这个界面 Posts = [] Notices = [] is_teacher = 0 is_manager = 0 if type == 'Manager': typestr = 'manager' is_manager = 1 elif type == 'Student': typestr = 'student' else: typestr = 'instructor' is_teacher = 1 notices = Notice.objects.all().order_by("-time")[0:2] for var in posts: if var.is_best == 0: title = var.title else: title = '[best]:' + var.title Posts.append({'id': var.id, 'poster': var.poster.username, 'time': var.time, 'title': title}) for var in notices: Notices.append({'instructor': var.instructor.user.username, 'content': var.content}) return render(request, 'bbs_homepage.html', {'is_teacher': is_teacher, 'is_manager': is_manager, 'type': typestr, 'userid': user.id, 'username': usern, 'post_list': Posts, 'notices': Notices, 'status': 'true'}) # 主界面
def newpaper(request): user = request.user ins = user.instructor p = Paper() p.instructor = ins p.name = request.POST['paper_name'] cname = request.POST['course_name'] cour = Course.objects.get(title=cname) p.course = cour p.difficulty = request.POST['difficulty'] p.status = request.POST['status'] p.limit_time = request.POST['limit_time'] ifauto = request.POST['method'] xznum = request.POST['xznum'] pdnum = request.POST['pdnum'] question_pd_list = [] question_xz_list = [] if ifauto == 'yes': pdqueslist = Question.objects.filter(course_id=p.course_id, difficulty=p.difficulty, q_type='pd') xzqueslist = Question.objects.filter(course_id=p.course_id, difficulty=p.difficulty, q_type='xz') if pdqueslist.count() < int(pdnum): pdqueslist = Question.objects.filter(course_id=p.course_id, q_type='pd') if pdqueslist.count() < int(pdnum): return HttpResponse('没有这么多判断题!') if xzqueslist.count() < int(xznum): xzqueslist = Question.objects.filter(course_id=p.course_id, q_type='xz') if xzqueslist.count() < int(xznum): return HttpResponse('没有这么多选择题!') question_xz_list = random.sample(list(xzqueslist), int(xznum)) p.save() for qxz in question_xz_list: qxz.paper.add(p) question_pd_list = random.sample(list(pdqueslist), int(pdnum)) for qpd in question_pd_list: qpd.paper.add(p) else: p.save() paper = Paper.objects.get(id=p.id) questions = Question.objects.filter(course_id=p.course) paperques = paper.question_set.all() for p in questions: if p in paperques: del (p) type = getType(user) if type != 'Instructor': return HttpResponse('You are not an instructor!') else: return render( request, 'paper2.html', { 'user': user, 'paper': paper, 'question_pd_list': question_pd_list, 'question_xz_list': question_xz_list, 'allquestion_list': questions })
def CheckIns(req, sid): if getType(req.user) == 'Instructor' and Teaches.objects.filter( instructor=req.user.instructor, section_id=sid).count() != 0: return 1 else: return 0
def postNotice(request): user = request.user type = getType(user) usern = user.username Posts = [] Notices = [] if type != 'Instructor': # 主界面,小窗口:(不是教师,发公告失败) status = 'Unable to operate on a notice!You are not an instructor!' is_teacher = 0 is_manager = 0 if type == 'Manager': typestr = 'manager' is_manager = 1 elif type == 'Student': typestr = 'student' else: typestr = 'instructor' is_teacher = 1 posts = Post.objects.all().order_by("-is_top", "-time") notices = Notice.objects.all().order_by("-time")[0:2] for var in posts: Posts.append({'id': var.id, 'poster': var.poster.username, 'time': var.time, 'title': var.title}) for var in notices: Notices.append({'instructor': var.instructor.user.username, 'content': var.content}) return render(request, 'bbs_homepage.html', {'is_teacher': is_teacher, 'is_manager': is_manager, 'type': typestr, 'userid': user.id, 'username': usern, 'post_list': Posts, 'notices': Notices, 'status': status}) # 主界面 else: if request.method == 'GET': # 公告存入数据库 errors = [] text = request.GET['notice'] # 检测是不是post # 如果提交了一个空的表单,就会返回相应的错误信息 if text == '': errors.append('请输入发送的消息') # 如果不出错的话就将数据存到数据库 if not errors: msg_text = request.POST.get('send_msg') # 得到短消息的文本 # 初始化一条消息的元组 notice = Notice.objects.create( instructor=user.instructor, content=text ) notice.save() return bbsMain(request) else: status = 'Noitce cannot be empty!' is_teacher = 0 is_manager = 0 if type == 'Manager': typestr = 'manager' is_manager = 1 elif type == 'Student': typestr = 'student' else: typestr = 'instructor' is_teacher = 1 posts = Post.objects.all().order_by("-is_top", "-time") notices = Notice.objects.all().order_by("-time")[0:2] for var in posts: Posts.append({'id': var.id, 'poster': var.poster.username, 'time': var.time, 'title': var.title}) for var in notices: Notices.append({'instructor': var.instructor.user.username, 'content': var.content}) return render(request, 'bbs_homepage.html', {'is_teacher': is_teacher, 'is_manager': is_manager, 'type': typestr, 'userid': user.id, 'username': usern, 'post_list': Posts, 'notices': Notices, 'status': status}) # 主界面
def CheckStu(req, sid): if getType(req.user) == 'Student' and Takes.objects.filter( student=req.user.student, section_id=sid).count() != 0: return 1 else: return 0