def group(request, classroom_id): student_groups = [] classroom = Classroom.objects.get(id=classroom_id) group_open = Classroom.objects.get(id=classroom_id).group_open groups = EnrollGroup.objects.filter(classroom_id=classroom_id) try: student_group = Enroll.objects.get(student_id=request.user.id, classroom_id=classroom_id).group except ObjectDoesNotExist : student_group = [] for group in groups: enrolls = Enroll.objects.filter(classroom_id=classroom_id, group=group.id) student_groups.append([group, enrolls, classroom.group_size-len(enrolls)]) #找出尚未分組的學生 def getKey(custom): return custom.seat enrolls = Enroll.objects.filter(classroom_id=classroom_id) nogroup = [] for enroll in enrolls: if enroll.group == 0 : nogroup.append(enroll) nogroup = sorted(nogroup, key=getKey) # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看分組<'+classroom.name+'>') log.save() return render_to_response('student/group.html', {'nogroup': nogroup, 'group_open': group_open, 'student_groups':student_groups, 'classroom':classroom, 'student_group':student_group, 'teacher': is_teacher(request.user, classroom_id)}, context_instance=RequestContext(request))
def progress(request, classroom_id, unit): bars = [] bars1 = [] bars2 = [] bars3 = [] bars4 = [] a = 0 classroom = Classroom.objects.get(id=classroom_id) enrolls = Enroll.objects.filter(classroom_id=classroom_id).order_by("seat") for enroll in enrolls: c = 0 for lesson in lesson_list : works = Work.objects.filter(user_id=enroll.student_id) bars.append([enroll, [], ""]) for work in works: if work.index == c+1: bars[a*41+c][1] = work if work.scorer > 0 : score_name = User.objects.get(id=work.scorer).first_name bars[a*41+c][2] = score_name c = c + 1 for i in range(17) : bars1.append(bars[i+41*a]) for i in range(8) : bars2.append(bars[i+17+41*a]) for i in range(8) : bars3.append(bars[i+25+41*a]) for i in range(8) : bars4.append(bars[i+33+41*a]) a = a + 1 # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看作業進度<'+unit+'><'+classroom.name+'>') log.save() return render_to_response('student/progress.html', {'unit':unit, 'bars1':bars1, 'bars2':bars2, 'bars3':bars3, 'bars4':bars4,'classroom':classroom, 'lesson_list': lesson_list,}, context_instance=RequestContext(request))
def get_queryset(self): datas = [] enrolls = Enroll.objects.filter(classroom_id=self.kwargs['classroom_id']) for enroll in enrolls: try: profile = Profile.objects.get(user_id=enroll.student_id) if self.kwargs['kind'] == "0": value = profile.work + profile.assistant + profile.debug + profile.creative datas.append([enroll, value]) elif self.kwargs['kind'] == "1": datas.append([enroll, profile.work]) elif self.kwargs['kind'] == "2": datas.append([enroll, profile.assistant]) elif self.kwargs['kind'] == "3": datas.append([enroll, profile.debug]) elif self.kwargs['kind'] == "4": datas.append([enroll, profile.creative]) except ObjectDoesNotExist: pass def getKey(custom): return custom[1], custom[0].seat datas = sorted(datas, key=getKey, reverse=True) # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event=u'查看積分排行榜<'+self.kwargs['kind']+'>') log.save() return datas
def work_group(request, lesson, classroom_id): student_groups = [] groups = EnrollGroup.objects.filter(classroom_id=classroom_id) try: student_group = Enroll.objects.get(student_id=request.user.id, classroom_id=classroom_id).group except ObjectDoesNotExist : student_group = [] for group in groups: enrolls = Enroll.objects.filter(classroom_id=classroom_id, group=group.id) group_assistants = [] works = [] scorer_name = "" for enroll in enrolls: try: work = Work.objects.get(user_id=enroll.student_id, index=lesson) if work.scorer > 0 : scorer = User.objects.get(id=work.scorer) scorer_name = scorer.first_name else : scorer_name = "X" except ObjectDoesNotExist: work = Work(index=lesson, user_id=1, number="0") works.append([enroll, work.score, scorer_name, work.number]) try : assistant = Assistant.objects.get(student_id=enroll.student.id, classroom_id=classroom_id, lesson=lesson) group_assistants.append(enroll) except ObjectDoesNotExist: pass student_groups.append([group, works, group_assistants]) lesson_data = lesson_list[int(lesson)-1] # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看作業小老師<'+lesson+'>') log.save() return render_to_response('student/work_group.html', {'lesson':lesson, 'lesson_data':lesson_data, 'student_groups':student_groups, 'classroom_id':classroom_id, 'student_group':student_group}, context_instance=RequestContext(request))
def memo_show(request, user_id, unit,classroom_id, score): user_name = User.objects.get(id=user_id).first_name del lesson_list[:] reset() works = Work.objects.filter(user_id=user_id) for work in works: lesson_list[work.index-1].append(work.score) lesson_list[work.index-1].append(work.publication_date) if work.score > 0 : score_name = User.objects.get(id=work.scorer).first_name lesson_list[work.index-1].append(score_name) else : lesson_list[work.index-1].append("null") lesson_list[work.index-1].append(work.memo) c = 0 for lesson in lesson_list: assistant = Assistant.objects.filter(student_id=user_id, lesson=c+1) if assistant.exists() : lesson.append("V") else : lesson.append("") c = c + 1 #enroll_group = Enroll.objects.get(classroom_id=classroom_id, student_id=request.user.id).group user = User.objects.get(id=user_id) # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看同學心得<'+user_name+'><'+unit+'>') log.save() return render_to_response('student/memo_show.html', {'classroom_id': classroom_id, 'works':works, 'lesson_list':lesson_list, 'user_name': user_name, 'unit':unit, 'score':score}, context_instance=RequestContext(request))
def work(request, classroom_id): del lesson_list[:] reset() works = Work.objects.filter(user_id=request.user.id) for work in works: lesson_list[work.index-1].append(work.score) lesson_list[work.index-1].append(work.publication_date) if work.score > 0 : score_name = User.objects.get(id=work.scorer).first_name lesson_list[work.index-1].append(score_name) else : lesson_list[work.index-1].append("null") c = 0 for lesson in lesson_list: assistant = Assistant.objects.filter(student_id=request.user.id, lesson=c+1, classroom_id=classroom_id) if assistant.exists() : lesson.append(1) else : lesson.append("") c = c + 1 enroll_group = Enroll.objects.get(classroom_id=classroom_id, student_id=request.user.id).group # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看個人所有作業') log.save() return render_to_response('student/work.html', {'works':works, 'lesson_list':lesson_list, 'user_id': request.user.id, 'classroom_id':classroom_id, 'group': enroll_group}, context_instance=RequestContext(request))
def classroom_enroll(request, classroom_id): scores = [] if request.method == 'POST': form = EnrollForm(request.POST) if form.is_valid(): try: classroom = Classroom.objects.get(id=classroom_id) if classroom.password == form.cleaned_data['password']: enroll = Enroll(classroom_id=classroom_id, student_id=request.user.id, seat=form.cleaned_data['seat']) enroll.save() # 記錄系統事件 if is_event_open() : log = Log(user_id=request.user.id, event=u'加入班級<'+classroom.name+'>') log.save() else: return render_to_response('message.html', {'message':"選課密碼錯誤"}, context_instance=RequestContext(request)) except Classroom.DoesNotExist: pass return redirect("/student/group/" + str(classroom.id)) else: form = EnrollForm() return render_to_response('student/classroom_enroll.html', {'form':form}, context_instance=RequestContext(request))
def classroom(request): enrolls = Enroll.objects.filter(student_id=request.user.id).order_by("-id") # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event='查看選修班級') log.save() return render_to_response('student/classroom.html',{'enrolls': enrolls}, context_instance=RequestContext(request))
def form_valid(self, form): self.object = form.save(commit=False) self.object.author_id = self.request.user.id self.object.classroom_id = self.kwargs['classroom_id'] self.object.save() # create Message title = self.request.user.first_name + u"--提出一個Bug<" + form.cleaned_data['title'] + ">" url = "/student/bug/" + str(self.object.id) message = Message.create(title=title, url=url, time=timezone.now()) message.save() enrolls = Enroll.objects.filter(student_id = self.request.user.id) for enroll in enrolls: # message for teacher messagepoll = MessagePoll.create(message_id = message.id,reader_id=enroll.classroom.teacher_id) messagepoll.save() # message for classsmates classmates = Enroll.objects.filter(classroom_id = enroll.classroom_id) for classmate in classmates: if not classmate.student_id == self.request.user.id: messagepoll = MessagePoll.create(message_id = message.id,reader_id=classmate.student_id) messagepoll.save() # 記錄系統事件 classroom_name = Classroom.objects.get(id=self.kwargs['classroom_id']).name if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event=u'張貼Bug<'+ classroom_name +'>') log.save() return redirect(url)
def form_valid(self, form): obj = form.save(commit=False) # 限制小組成員才能上傳 members = Enroll.objects.filter(group_show=self.kwargs['group_show']) is_member = False for member in members: if self.request.user.id == member.student_id: is_member = True if is_member: obj.publish = timezone.now() obj.done = True obj.save() if obj.done == False: for member in members: # credit update_avatar(member.student_id, 4, 3) # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'上傳創意秀<' + obj.name + '>') log.save() return redirect('/show/group/' + self.kwargs['round_id']) else: return redirect('homepage')
def event_excel(request, classroom_id): classroom = Classroom.objects.get(id=classroom_id) # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'下載事件到Excel') log.save() output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) #workbook = xlsxwriter.Workbook('hello.xlsx') worksheet = workbook.add_worksheet() date_format = workbook.add_format({'num_format': 'dd/mm/yy hh:mm:ss'}) enrolls = Enroll.objects.filter(classroom_id=classroom_id); users = [] for enroll in enrolls: if enroll.seat > 0 : users.append(enroll.student_id) events = Log.objects.filter(user_id__in=users).order_by('-id') index = 1 for event in events: if event.user_id > 0 : worksheet.write('A'+str(index), event.user.first_name) else: worksheet.write('A'+str(index), u'匿名') worksheet.write('B'+str(index), event.event) worksheet.write('C'+str(index), str(localtime(event.publish))) index = index + 1 workbook.close() # xlsx_data contains the Excel file response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=Report-'+classroom.name+'-'+str(localtime(timezone.now()).date())+'.xlsx' xlsx_data = output.getvalue() response.write(xlsx_data) return response
def exam_list(request, classroom_id): # 限本班任課教師 if not is_teacher(request.user, classroom_id): return redirect("homepage") enrolls = Enroll.objects.filter(classroom_id=classroom_id).order_by("seat") classroom_name = "" enroll_exam = [] for enroll in enrolls: classroom_name = enroll.classroom.name exam_list = [] for exam_id in range(3): exams = Exam.objects.filter(student_id=enroll.student_id, exam_id=exam_id + 1) total = 0 times = 0 for exam in exams: total += exam.score times += 1 exam_list.append(total) exam_list.append(times) enroll_exam.append([enroll, exam_list]) # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'查閱測驗卷成績<' + classroom_name + '>') log.save() return render_to_response('teacher/exam_list.html', { 'classroom_id': classroom_id, 'classroom_name': classroom_name, 'enroll_exam': enroll_exam }, context_instance=RequestContext(request))
def register(request): if request.method == 'POST': form = UserRegistrationForm(request.POST) if form.is_valid(): # Create a new user object but avoid saving it yet new_user = form.save(commit=False) # Set the chosen password new_user.set_password(form.cleaned_data['password']) # Save the User object new_user.save() profile = Profile(user=new_user) profile.save() # 記錄系統事件 if is_event_open(request): log = Log(user_id=new_user.id, event='註冊帳號成功') log.save() # create Message title = "請洽詢任課教師課程名稱及選課密碼" url = "/student/classroom/add" message = Message.create(title=title, url=url, time=timezone.now()) message.save() # message for group member messagepoll = MessagePoll.create(message_id=message.id, reader_id=new_user.id) messagepoll.save() return render(request, 'account/register_done.html', {'new_user': new_user}) else: form = UserRegistrationForm() return render(request, 'account/register.html', {'form': form})
def get_queryset(self): datas = [] enrolls = Enroll.objects.filter( classroom_id=self.kwargs['classroom_id']) for enroll in enrolls: try: profile = Profile.objects.get(user_id=enroll.student_id) if self.kwargs['kind'] == "0": value = profile.work + profile.assistant + profile.debug + profile.creative datas.append([enroll, value]) elif self.kwargs['kind'] == "1": datas.append([enroll, profile.work]) elif self.kwargs['kind'] == "2": datas.append([enroll, profile.assistant]) elif self.kwargs['kind'] == "3": datas.append([enroll, profile.debug]) elif self.kwargs['kind'] == "4": datas.append([enroll, profile.creative]) except ObjectDoesNotExist: pass def getKey(custom): return custom[1], custom[0].seat datas = sorted(datas, key=getKey, reverse=True) # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'查看積分排行榜<' + self.kwargs['kind'] + '>') log.save() return datas
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='查看所有私訊') log.save() queryset = Message.objects.filter(author_id=self.request.user.id, classroom_id=0-int(self.kwargs['classroom_id'])).order_by("-id") return queryset
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='列出同學以私訊') log.save() queryset = Enroll.objects.filter(classroom_id=self.kwargs['classroom_id']).order_by("seat") return queryset
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=1, event='管理員查看帳號') log.save() queryset = User.objects.all().order_by('-id') return queryset
def group(request, round_id): show = Round.objects.get(id=round_id) classroom_id = show.classroom_id classroom = Classroom.objects.get(id=classroom_id) student_groups = [] group_show_open = Classroom.objects.get(id=classroom_id).group_show_open groups = ShowGroup.objects.filter(round_id=round_id) try: student_group = Enroll.objects.get(student_id=request.user.id, classroom_id=classroom_id).group_show except ObjectDoesNotExist : student_group = [] for group in groups: enrolls = Enroll.objects.filter(classroom_id=classroom_id, group_show=group.id) student_groups.append([group, enrolls, classroom.group_show_size-len(enrolls)]) #找出尚未分組的學生 def getKey(custom): return custom.seat enrolls = Enroll.objects.filter(classroom_id=classroom_id) nogroup = [] for enroll in enrolls: if enroll.group_show == 0 : nogroup.append(enroll) nogroup = sorted(nogroup, key=getKey) # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看創意秀組別<'+classroom.name+'>') log.save() return render(request, 'show/group.html', {'round_id':round_id, 'nogroup': nogroup, 'group_show_open':group_show_open, 'teacher':is_teacher(request.user, classroom_id), 'student_groups':student_groups, 'classroom_id':classroom_id, 'student_group':student_group})
def exam_list(request, classroom_id): # 限本班任課教師 if not is_teacher(request.user, classroom_id): return redirect("homepage") enrolls = Enroll.objects.filter(classroom_id=classroom_id).order_by("seat") classroom_name="" enroll_exam = [] for enroll in enrolls: classroom_name = enroll.classroom.name exam_list = [] for exam_id in range(3): exams = Exam.objects.filter(student_id=enroll.student_id, exam_id=exam_id+1) total = 0 times = 0 for exam in exams: total += exam.score times += 1 exam_list.append(total) exam_list.append(times) enroll_exam.append([enroll, exam_list]) # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查閱測驗卷成績<'+classroom_name+'>') log.save() return render_to_response('teacher/exam_list.html', {'classroom_id':classroom_id, 'classroom_name':classroom_name, 'enroll_exam':enroll_exam}, context_instance=RequestContext(request))
def get_queryset(self): classroom = Classroom.objects.get(id=self.kwargs['classroom_id']) # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'查看班級事件<' + classroom.name + '>') log.save() enrolls = Enroll.objects.filter( classroom_id=self.kwargs['classroom_id']) users = [] for enroll in enrolls: if enroll.seat > 0: users.append(enroll.student_id) if self.kwargs['user_id'] == "0": if self.request.GET.get('q') != None: queryset = Log.objects.filter( user_id__in=users, event__icontains=self.request.GET.get('q')).order_by('-id') else: queryset = Log.objects.filter( user_id__in=users).order_by('-id') else: if self.request.GET.get('q') != None: queryset = Log.objects.filter( user_id=self.kwargs['user_id'], event__icontains=self.request.GET.get('q')).order_by('-id') else: queryset = Log.objects.filter( user_id__in=users).order_by('-id') return queryset
def announce_detail(request, message_id): message = Message.objects.get(id=message_id) classroom = Classroom.objects.get(id=message.classroom_id) announce_reads = [] messagepolls = MessagePoll.objects.filter(message_id=message_id) for messagepoll in messagepolls: enroll = Enroll.objects.get(classroom_id=message.classroom_id, student_id=messagepoll.reader_id) announce_reads.append( [enroll.seat, enroll.student.first_name, messagepoll]) def getKey(custom): return custom[0] announce_reads = sorted(announce_reads, key=getKey) if is_event_open(request): log = Log(user_id=request.user.id, event=u'查看公告<' + message.title + '>') log.save() return render_to_response('teacher/announce_detail.html', { 'message': message, 'classroom': classroom, 'announce_reads': announce_reads }, context_instance=RequestContext(request))
def clear(request, classroom_id): Log.objects.all().delete() # 記錄系統事件 if is_event_open() : log = Log(user_id=request.user.id, event=u'清除所有事件') log.save() return redirect("/account/event/0")
def avatar(request): profile = Profile.objects.get(user = request.user) # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看個人圖像') log.save() return render_to_response('account/avatar.html', {'avatar':profile.avatar}, context_instance=RequestContext(request))
def clear(request, classroom_id): Log.objects.all().delete() # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'清除所有事件') log.save() return redirect("/account/event/0")
def register(request): if request.method == 'POST': form = UserRegistrationForm(request.POST) if form.is_valid(): # Create a new user object but avoid saving it yet new_user = form.save(commit=False) # Set the chosen password new_user.set_password( form.cleaned_data['password']) # Save the User object new_user.save() profile = Profile(user=new_user) profile.save() # 記錄系統事件 if is_event_open(request) : log = Log(user_id=new_user.id, event='註冊帳號成功') log.save() # create Message title = "請洽詢任課教師課程名稱及選課密碼" url = "/student/classroom/add" message = Message.create(title=title, url=url, time=timezone.now()) message.save() # message for group member messagepoll = MessagePoll.create(message_id = message.id,reader_id=new_user.id) messagepoll.save() return render(request, 'account/register_done.html', {'new_user': new_user}) else: form = UserRegistrationForm() return render(request, 'account/register.html', {'form': form})
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=1, event='管理員查看帳號') log.save() queryset = User.objects.all().order_by('-id') return queryset
def assistant_cancle(request, classroom_id, user_id, lesson): # 限本班任課教師 if not is_teacher(request.user, classroom_id): return redirect("homepage") user = User.objects.get(id=user_id) assistant = Assistant.objects.get(student_id=user_id, classroom_id=classroom_id, lesson=lesson) assistant.delete() # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'取消小老師<'.encode("utf-8")+user.first_name.encode("utf-8")+'><'+ lesson_list[int(lesson)-1][2] + ">") log.save() # create Message title = "<" + assistant.student.first_name.encode("utf-8") + u">取消小老師<".encode("utf-8") + lesson_list[int(lesson)-1][2] + ">" url = "/student/group/work/" + str(lesson) + "/" + classroom_id message = Message.create(title=title, url=url, time=timezone.now()) message.save() group = Enroll.objects.get(classroom_id=classroom_id, student_id=assistant.student_id).group if group > 0 : enrolls = Enroll.objects.filter(group = group) for enroll in enrolls: # message for group member messagepoll = MessagePoll.create(message_id = message.id,reader_id=enroll.student_id) messagepoll.save() return redirect('/teacher/score/'+str(assistant.classroom_id)+"/"+lesson)
def grade_unit4(request, classroom_id): # 限本班任課教師 if not is_teacher(request.user, classroom_id): return redirect("homepage") enrolls = Enroll.objects.filter(classroom_id=classroom_id).order_by('seat') classroom = Classroom.objects.get(id=classroom_id) data = [] enroll_group = {} for enroll in enrolls: enroll_score = [] enroll_grade = [] # 8個作品 for i in range(8): try : work = Work.objects.get(user_id=enroll.student_id, index=i+1+17+8+8) if work.score == -1 : score=0 else : score = work.score enroll_score.append(work.score) enroll_grade.append(score/10) except ObjectDoesNotExist: enroll_score.append("缺") enroll_grade.append(0) # 1個心得 enroll_score.append(enroll.score_memo4) enroll_grade.append(enroll.score_memo4/10.0) # 1個積分 profile = Profile.objects.get(user=enroll.student) point = profile.work + profile.assistant + profile.creative + profile.debug enroll_score.append(point) if point * 0.06 > 10: enroll_grade.append(10) else : enroll_grade.append(point*0.06) score = int(sum(enroll_grade)) if enroll_group.has_key(enroll.group): enroll_group[enroll.group].append([enroll.student_id, score]) else: enroll_group[enroll.group] = [[enroll.student_id, score]] data.append([enroll, enroll_score, enroll_grade, score]) i = 0 for enroll in enrolls: group_total = 0 for group in enroll_group[enroll.group]: group_total += group[1] group_people = len(enroll_group[enroll.group]) group_score = group_total / group_people data[i].append(group_score) i = i + 1 # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'查看成<績實戰高手><'+classroom.name+'>') log.save() return render_to_response('teacher/grade_unit4.html', {'enroll_group':enroll_group, 'lesson_list':lesson_list, 'classroom':classroom, 'data':data}, context_instance=RequestContext(request))
def get_queryset(self): queryset = Message.objects.filter(classroom_id=self.kwargs['classroom_id'], author_id=self.request.user.id).order_by("-id") # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='查看班級公告') log.save() return queryset
def download(request, filename): #down_file = File.objects.get(name = filename) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DOWNLOAD_URL = BASE_DIR+"/download/" file_path = DOWNLOAD_URL + filename file_name = filename fp = open(file_path, 'rb') response = HttpResponse(fp.read()) fp.close() mime = MimeTypes() type, encoding = mime.guess_type(file_name) if type is None: type = 'application/octet-stream' response['Content-Type'] = type response['Content-Length'] = str(os.stat(file_path).st_size) if encoding is not None: response['Content-Encoding'] = encoding if u'WebKit' in request.META['HTTP_USER_AGENT']: filename_header = 'filename=%s' % file_name.encode('utf-8') elif u'MSIE' in request.META['HTTP_USER_AGENT']: filename_header = '' else: filename_header = 'filename*=UTF-8\'\'%s' % urllib.quote(file_name.encode('utf-8')) response['Content-Disposition'] = 'attachment; ' + filename_header # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'下載檔案<'+filename+'>') log.save() return response
def GalleryDetail(request, show_id): show = ShowGroup.objects.get(id=show_id) reviews = ShowReview.objects.filter(show_id=show_id, done=True) score1 = reviews.aggregate(Sum('score1')).values()[0] score2 = reviews.aggregate(Sum('score2')).values()[0] score3 = reviews.aggregate(Sum('score3')).values()[0] if reviews.count() > 0 : score1 = score1 / reviews.count() score2 = score2 / reviews.count() score3 = score3 / reviews.count() scores = [math.ceil(score1*10)/10, math.ceil(score2*10)/10, math.ceil(score3*10)/10, reviews.count()] else : scores = [0,0,0,0] members = Enroll.objects.filter(group_show=show_id) #context = self.get_context_data(show=show, form=form, members=members, review=self.object, scores=scores, score=score, reviews=reviews) # 記錄系統事件 if request.user.id > 0 : log = Log(user_id=request.user.id, event=u'查看藝廊<'+show.name+'>') else : log = Log(user_id=0, event=u'查看藝廊<'+show.name+'>') log.save() classroom_id = Round.objects.get(id=show.round_id).classroom_id showfiles = ShowFile.objects.filter(show_id=show.id) return render(request, 'show/gallerydetail.html', {'show': show, 'showfiles':showfiles, 'members':members, 'scores':scores, 'reviews':reviews, 'teacher':is_teacher(request.user, classroom_id)})
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='查看任課班級') log.save() queryset = Classroom.objects.filter(teacher_id=self.request.user.id).order_by("-id") return queryset
def get_queryset(self): lists = {} counter = 0 show = Round.objects.get(id=self.kwargs['round_id']) classroom_id = show.classroom_id enrolls = Enroll.objects.filter(classroom_id=classroom_id).order_by('seat') classroom_name = Classroom.objects.get(id=classroom_id).name shows = ShowGroup.objects.filter(round_id=show.id) for showa in shows: members = Enroll.objects.filter(group_show=showa.id) reviews = ShowReview.objects.filter(show_id=showa.id, done=True) score1 = reviews.aggregate(Sum('score1')).values()[0] score2 = reviews.aggregate(Sum('score2')).values()[0] score3 = reviews.aggregate(Sum('score3')).values()[0] if reviews.count() > 0 : score1 = score1 / reviews.count() score2 = score2 / reviews.count() score3 = score3 / reviews.count() scores = [math.ceil(score1*10)/10, math.ceil(score2*10)/10, math.ceil(score3*10)/10, score1+score2+score3, reviews.count()] else : scores = [0,0,0,0] lists[showa.id] = [showa, scores, members, self.kwargs['round_id']] # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event=u'查看創意秀平均分數<'+classroom_name+'>') log.save() lists = OrderedDict(sorted(lists.items(), key=lambda x: x[1][1][3], reverse=True)) #lists = OrderedDict(sorted(lists.items(), key=itemgetter(1))) return lists
def get_queryset(self): lists = {} counter = 0 round = Round.objects.get(id=self.kwargs['round_id']) classroom_id = round.classroom_id enrolls = Enroll.objects.filter(classroom_id=classroom_id).order_by('seat') classroom_name = Classroom.objects.get(id=classroom_id).name for enroll in enrolls: lists[enroll.id] = [] shows = ShowGroup.objects.filter(round_id=round.id) if not shows.exists(): lists[enroll.id].append([enroll]) else : for show in shows: members = Enroll.objects.filter(group_show=show.id) try: review = ShowReview.objects.get(show_id=show.id, student_id=enroll.student_id) except ObjectDoesNotExist: review = ShowReview(show_id=show.id) lists[enroll.id].append([enroll, review, show, members]) lists = OrderedDict(sorted(lists.items(), key=lambda x: x[1][0][0].seat)) # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event=u'查看創意秀評分狀況<'+classroom_name+'>') log.save() return lists
def get_queryset(self): show = ShowGroup.objects.get(id=self.kwargs['show_id']) # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event=u'查看創意秀所有評分<'+show.name+'>') log.save() return ShowReview.objects.filter(show_id=self.kwargs['show_id'], done=True).order_by("-publish")
def form_valid(self, form): self.object = form.save(commit=False) self.object.author_id = self.request.user.id self.object.classroom_id = self.kwargs['classroom_id'] self.object.save() # create Message title = self.request.user.first_name + u"--提出一個Bug<" + form.cleaned_data[ 'title'] + ">" url = "/student/bug/" + str(self.object.id) message = Message.create(title=title, url=url, time=timezone.now()) message.save() enrolls = Enroll.objects.filter(student_id=self.request.user.id) for enroll in enrolls: # message for teacher messagepoll = MessagePoll.create( message_id=message.id, reader_id=enroll.classroom.teacher_id) messagepoll.save() # message for classsmates classmates = Enroll.objects.filter( classroom_id=enroll.classroom_id) for classmate in classmates: if not classmate.student_id == self.request.user.id: messagepoll = MessagePoll.create( message_id=message.id, reader_id=classmate.student_id) messagepoll.save() # 記錄系統事件 classroom_name = Classroom.objects.get( id=self.kwargs['classroom_id']).name if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'張貼Bug<' + classroom_name + '>') log.save() return redirect(url)
def classroom_enroll(request, classroom_id): scores = [] if request.method == 'POST': form = EnrollForm(request.POST) if form.is_valid(): try: classroom = Classroom.objects.get(id=classroom_id) if classroom.password == form.cleaned_data['password']: enroll = Enroll(classroom_id=classroom_id, student_id=request.user.id, seat=form.cleaned_data['seat']) enroll.save() # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'加入班級<'+classroom.name+'>') log.save() else: return render_to_response('message.html', {'message':"選課密碼錯誤"}, context_instance=RequestContext(request)) except Classroom.DoesNotExist: pass return redirect("/student/group/" + str(classroom.id)) else: form = EnrollForm() return render_to_response('form.html', {'form':form}, context_instance=RequestContext(request))
def score_peer(request, index, classroom_id, group): try: assistant = Assistant.objects.get(lesson=index, classroom_id=classroom_id, student_id=request.user.id) except ObjectDoesNotExist: return redirect("/student/group/work/"+classroom_id+"/"+index) enrolls = Enroll.objects.filter(classroom_id=classroom_id, group=group) lesson = "" classmate_work = [] for enroll in enrolls: if not enroll.student_id == request.user.id : scorer_name = "" try: work = Work.objects.get(user_id=enroll.student.id, index=index) if work.scorer > 0 : scorer = User.objects.get(id=work.scorer) scorer_name = scorer.first_name except ObjectDoesNotExist: work = Work(index=index, user_id=1, number="0") classmate_work.append([enroll.student,work,1, scorer_name]) lesson = lesson_list[int(index)-1] # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'小老師評分名單<'+index+'><'+group+'>') log.save() return render_to_response('teacher/score_peer.html',{'enrolls':enrolls, 'classmate_work': classmate_work, 'classroom_id':classroom_id, 'lesson':lesson, 'index': index}, context_instance=RequestContext(request))
def group_add(request, classroom_id): classroom_name = Classroom.objects.get(id=classroom_id).name if request.method == 'POST': form = GroupForm(request.POST) if form.is_valid(): group = ShowGroup(name=form.cleaned_data['name'], classroom_id=int(classroom_id)) group.save() enrolls = Enroll.objects.filter(classroom_id=classroom_id) for enroll in enrolls: review = ShowReview(show_id=group.id, student_id=enroll.student_id) review.save() # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'新增創意秀組別<' + group.name + '><' + classroom_name + '>') log.save() return redirect('/show/group/' + classroom_id) else: form = GroupForm() return render_to_response('show/group_add.html', {'form': form}, context_instance=RequestContext(request))
def get_queryset(self): def getKey(custom): return custom[2] lists = [] shows = ShowGroup.objects.filter( classroom_id=self.kwargs['classroom_id']) for show in shows: students = Enroll.objects.filter(group_show=show.id) reviews = ShowReview.objects.filter(show_id=show.id, done=True) if reviews.count() > 0: score = reviews.aggregate( Sum('score' + self.kwargs['rank_id'])).values()[0] / reviews.count() else: score = 0 lists.append([ show, students, score, reviews.count(), self.kwargs['rank_id'] ]) lists = sorted(lists, key=getKey, reverse=True) # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'查看創意秀排行榜<' + self.kwargs['rank_id'] + '>') log.save() return lists
def get_queryset(self): lists = {} counter = 0 enrolls = Enroll.objects.filter( classroom_id=self.kwargs['classroom_id']).order_by('seat') classroom_name = Classroom.objects.get( id=self.kwargs['classroom_id']).name for enroll in enrolls: lists[enroll.id] = [] shows = ShowGroup.objects.filter( classroom_id=self.kwargs['classroom_id']) if not shows.exists(): lists[enroll.id].append([enroll]) else: for show in shows: members = Enroll.objects.filter(group_show=show.id) try: review = ShowReview.objects.get( show_id=show.id, student_id=enroll.student_id) except ObjectDoesNotExist: review = ShowReview(show_id=show.id) lists[enroll.id].append([enroll, review, show, members]) lists = OrderedDict( sorted(lists.items(), key=lambda x: x[1][0][0].seat)) # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'查看創意秀評分狀況<' + classroom_name + '>') log.save() return lists
def form_valid(self, form): show = ShowGroup.objects.get(id=self.kwargs['show_id']) #save object obj = form.save(commit=False) if obj.done == False: classroom_id = ShowGroup.objects.get( id=self.kwargs['show_id']).classroom_id member = Enroll.objects.get(classroom_id=classroom_id, student_id=self.request.user.id) # credit update_avatar(member.student, 4, 1) # History show = ShowGroup.objects.get(id=self.kwargs['show_id']) history = PointHistory(user_id=member.student_id, kind=4, message=u'1分--評分創意秀<' + show.title + '>', url='/show/detail/' + str(show.id)) history.save() obj.publish = timezone.now() obj.done = True obj.save() # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'評分創意秀<' + show.name + '>') log.save() return redirect('/show/detail/' + self.kwargs['show_id'])
def form_valid(self, form): obj = form.save(commit=False) # 限制小組成員才能上傳 members = Enroll.objects.filter(group_show=self.kwargs['group_show']) is_member = False for member in members: if self.request.user.id == member.student_id: is_member = True if is_member: if obj.done == False: for member in members: # credit update_avatar(member.student_id, 4, 3) # History history = PointHistory(user_id=member.student_id, kind=4, message=u'3分--繳交創意秀<' + obj.title + '>', url='/show/detail/' + str(obj.id)) history.save() #save object obj.publish = timezone.now() obj.done = True obj.save() # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'上傳創意秀<' + obj.name + '>') log.save() return redirect('/show/group/' + self.kwargs['classroom_id']) else: return redirect('homepage')
def get_queryset(self): visitorlogs = VisitorLog.objects.filter(user_id=self.kwargs['user_id']).order_by("-id") # 記錄系統事件 if is_event_open(self.request) : user = User.objects.get(id=self.kwargs['user_id']) log = Log(user_id=self.request.user.id, event=u'查看登入記錄<'+user.first_name+'>') log.save() return visitorlogs
def get_queryset(self): show = ShowGroup.objects.get(id=self.kwargs['show_id']) # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event=u'查看創意秀所有評分<' + show.name + '>') log.save() return ShowReview.objects.filter(show_id=self.kwargs['show_id'])
def get_queryset(self): classroom = Classroom.objects.get(id=self.kwargs['classroom_id']) # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='查看班級作業') log.save() queryset = TWork.objects.filter(classroom_id=self.kwargs['classroom_id']).order_by("-id") return queryset
def get_queryset(self): # 記錄系統事件 visitor = Visitor.objects.get(id=self.kwargs['visitor_id']) if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='查看單日訪客<'+str(visitor.date)+'>') log.save() queryset = VisitorLog.objects.filter(visitor_id=self.kwargs['visitor_id']).order_by('-id') return queryset
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event='查看任課班級') log.save() queryset = Classroom.objects.filter( teacher_id=self.request.user.id).order_by("-id") return queryset
def get_queryset(self): queryset = Message.objects.filter( classroom_id=self.kwargs['classroom_id'], author_id=self.request.user.id).order_by("-id") # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=self.request.user.id, event='查看班級公告') log.save() return queryset
def get_queryset(self): # 記錄系統事件 log = Log(user_id=1, event=u'管理員查看系統事件') log.save() if self.request.GET.get('q') != None: queryset = Log.objects.filter(event__icontains=self.request.GET.get('q')).order_by('-id') else : queryset = Log.objects.all().order_by('-id') return queryset
def get_queryset(self): # 記錄系統事件 if is_event_open(self.request) : log = Log(user_id=self.request.user.id, event='查看訊息') log.save() query = [] messagepolls = MessagePoll.objects.filter(reader_id=self.request.user.id).order_by('-message_id') for messagepoll in messagepolls: query.append([messagepoll, messagepoll.message]) return query
def group_delete(request, group_id, classroom_id): group = EnrollGroup.objects.get(id=group_id) group.delete() classroom_name = Classroom.objects.get(id=classroom_id).name # 記錄系統事件 if is_event_open(request) : log = Log(user_id=request.user.id, event=u'刪除組別<'+classroom_name+'><'+group.name+'>') log.save() return redirect('/student/group/'+classroom_id)