Example #1
0
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))
Example #2
0
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))
Example #3
0
 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
Example #4
0
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))
Example #5
0
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))
Example #6
0
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))
Example #7
0
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))
Example #8
0
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))    
Example #9
0
    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)
Example #10
0
    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')
Example #11
0
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
Example #12
0
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))
Example #13
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})
Example #14
0
    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
Example #15
0
 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
Example #16
0
 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
Example #17
0
 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
Example #18
0
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})
Example #19
0
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))
Example #20
0
 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
Example #21
0
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))
Example #22
0
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")
Example #23
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))
Example #24
0
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")
Example #25
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})
Example #26
0
 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
Example #27
0
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)    
Example #28
0
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))
Example #29
0
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))    
Example #30
0
 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
Example #31
0
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
Example #32
0
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)})
Example #33
0
 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
Example #34
0
 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
Example #35
0
    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
Example #36
0
 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")
Example #37
0
    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)
Example #38
0
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))
Example #39
0
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))
Example #40
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))
Example #41
0
    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
Example #42
0
    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
Example #43
0
 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'])
Example #44
0
    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')
Example #45
0
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))
Example #46
0
 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
Example #47
0
 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'])
Example #48
0
 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
Example #49
0
 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
Example #50
0
 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
Example #51
0
 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
Example #52
0
 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
Example #53
0
 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
Example #54
0
 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
Example #55
0
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)