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() return render( request, 'show/gallerydetail.html', { 'show': show, 'members': members, 'scores': scores, 'reviews': reviews, 'teacher': is_teacher(request.user, show.classroom_id) })
def make(request): show_id = request.POST.get('showid') action = request.POST.get('action') if show_id and action: try: show = ShowGroup.objects.get(id=show_id) if action == 'open': show.open = True # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'藝廊上架<' + show.name + '>') log.save() else: show.open = False # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'藝廊下架<' + show.name + '>') log.save() show.save() except ObjectDoesNotExist: pass return JsonResponse({'status': 'ok'}, safe=False) else: return JsonResponse({'status': 'ko'}, safe=False)
def submit(request, index): scores = [] if request.method == 'POST': form = SubmitForm(request.POST) work = Work.objects.filter(index=index, user_id=request.user.id) if not work.exists(): if form.is_valid(): work2 = Work(index=index, user_id=request.user.id, number=form.cleaned_data['number'], memo=form.cleaned_data['memo'], publication_date=timezone.now()) work2.save() # credit update_avatar(request.user.id, 1, 2) # History history = PointHistory( user_id=request.user.id, kind=1, message='2分--繳交作業<' + lesson_list[int(index) - 1][2] + '>', url=request.get_full_path().replace("submit", "submitall")) history.save() # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'新增作業成功<'.encode("UTF-8") + lesson_list[int(index) - 1][2] + '>') log.save() else: if form.is_valid(): work.update(number=form.cleaned_data['number'], memo=form.cleaned_data['memo']) # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'更新作業成功<'.encode("UTF-8") + lesson_list[int(index) - 1][2] + '>') log.save() else: work.update(memo=form.cleaned_data['memo']) return redirect('/student/submit/' + index) else: work = Work.objects.filter(index=index, user_id=request.user.id) if not work.exists(): form = SubmitForm() else: form = SubmitForm(instance=work[0]) if work[0].scorer > 0: score_name = User.objects.get(id=work[0].scorer).first_name scores = [work[0].score, score_name] lesson = lesson_list[int(index) - 1] return render_to_response('student/submit.html', { 'form': form, 'scores': scores, 'index': index, 'lesson': lesson }, context_instance=RequestContext(request))
def make(request): unit = request.POST.get('unit') classroom_id = request.POST.get('classroomid') enroll_id = request.POST.get('enrollid') enroll = Enroll.objects.get(id=enroll_id) action = request.POST.get('action') if classroom_id and enroll_id and action: try: enroll = Enroll.objects.get(id=enroll_id) if action == 'certificate': if unit == "1": enroll.certificate1 = True enroll.certificate1_date = timezone.now() elif unit == "2": enroll.certificate2 = True enroll.certificate2_date = timezone.now() elif unit == "3": enroll.certificate3 = True enroll.certificate3_date = timezone.now() elif unit == "4": enroll.certificate4 = True enroll.certificate4_date = timezone.now() classroom = Classroom.objects.get(id=classroom_id) make_image(unit, enroll_id, classroom.teacher_id) # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u"核發證書<" + unit + '><' + enroll.student.first_name + '>') log.save() else: if unit == "1": enroll.certificate1 = False elif unit == "2": enroll.certificate2 = False elif unit == "3": enroll.certificate3 = False elif unit == "4": enroll.certificate4 = False try: os.remove(settings.BASE_DIR + "/static/certificate/" + unit + "/" + enroll_id + ".jpg") except: pass # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event=u'取消證書<' + unit + '><' + enroll.student.first_name + '>') log.save() enroll.save() except ObjectDoesNotExist: pass return JsonResponse({'status': 'ok'}, safe=False) else: return JsonResponse({'status': 'ko'}, safe=False)
def get_queryset(self): # 記錄系統事件 if self.request.user.id > 0: log = Log(user_id=self.request.user.id, event=u'查看藝廊') else: log = Log(user_id=0, event=u'查看藝廊') if is_event_open(self.request): log.save() return ShowGroup.objects.filter(open=True).order_by('-publish')
def lesson_log(request, lesson): # 記錄系統事件 tabname = request.POST.get('tabname') if is_event_open(request): log = Log(user_id=request.user.id, event=u'查看課程內容<' + lesson + '> | ' + tabname) log.save() elif is_event_video_open(request): if u"影片" in tabname: log = Log(user_id=request.user.id, event=u'查看課程內容<' + lesson + '> | ' + tabname) log.save() return JsonResponse({'status': 'ok'}, safe=False)
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 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 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 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 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 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): 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): 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 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 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=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 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 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 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 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 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 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 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 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 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): # 記錄系統事件 if is_event_open(self.request): log = Log(user_id=1, event='管理員查看帳號') log.save() queryset = User.objects.all().order_by('-id') return queryset
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): 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'])