def edit(request): teacher = is_teacher(request.user) if teacher: custom_form = TeacherForm( request.POST or None, instance=Teacher.objects.get(user=request.user)) else: custom_form = StudentForm( request.POST or None, instance=Student.objects.get(user=request.user)) user_form = EditUserForm(request.POST or None, instance=request.user) if request.method == 'POST': if custom_form.is_valid() and user_form.is_valid(): user = user_form.save() custom_form.save() messages.success(request, 'Configurações editadas com sucesso') return render(request, 'accounts/edit.html', { 'form': user_form, 'custom_form': custom_form, 'is_teacher': teacher })
def index(request): context = {'index_active': True} if is_teacher(request.user): context['classes'] = Class.objects.filter(teachers__in=[Teacher.objects.get(user=request.user)]) else: context['classes'] = Class.objects.filter(students__in=[Student.objects.get(user=request.user)]) return render(request, 'index.html', context)
def remove(request, id): if not is_teacher(request.user): return redirect('index') if not Class.objects.filter(pk=id, teachers__in=[Teacher.objects.get(user=request.user)]): return redirect('index') Class.objects.get(pk=id).delete() return redirect('Classes:index')
def index(request): context = {'index_active': True} if is_teacher(request.user): context['classes'] = Class.objects.filter( teachers__in=[Teacher.objects.get(user=request.user)]) else: context['classes'] = Class.objects.filter( students__in=[Student.objects.get(user=request.user)]) return render(request, 'index.html', context)
def stats(request, id): obj = Class.objects.get(pk=id) students = obj.students.all() selected = False if request.GET.get('start') and request.GET.get('end'): selected = True initial_date = datetime.strptime('01/01/2000', '%d/%m/%Y') start_date = datetime.strptime( request.GET.get('start') + ' 00:00', '%d/%m/%Y %H:%M') end_date = datetime.strptime( request.GET.get('end') + ' 23:59', '%d/%m/%Y %H:%M') for student in students: initial_rewards = RewardStudentClass.objects.filter( student=student, classe=obj, created__range=(initial_date, start_date)) student.initial_score = 0 for r in initial_rewards: student.initial_score += r.reward.value rewards = RewardStudentClass.objects.filter( student=student, classe=obj, created__range=(start_date, end_date)) student.score = 0 for r in rewards: student.score += r.reward.value if student.score < student.initial_score: student.score_raise = -((student.initial_score or 1) / (student.score or 1)) * 100 else: student.score_raise = (student.score / (student.initial_score or 1)) * 100 student.badges = BadgeStudentClass.objects.filter( student=student, classe=obj, created__range=(start_date, end_date)) context = { 'class': obj, 'is_teacher': is_teacher(request.user), 'students': students, 'selected': selected } return render(request, 'classes/stats.html', context)
def remove(request, id): if not is_teacher(request.user): return redirect('index') if not Class.objects.filter( pk=id, teachers__in=[Teacher.objects.get(user=request.user)]): return redirect('index') Class.objects.get(pk=id).delete() return redirect('Classes:index')
def index(request): teacher = is_teacher(request.user) if teacher: classes = Class.objects.filter(teachers__in=[Teacher.objects.get(user=request.user)]) else: classes = Class.objects.filter(students__in=[Student.objects.get(user=request.user)]) return render(request, 'classes/index.html', { 'classes': classes, 'classes_active': True, 'is_teacher': teacher })
def index(request): teacher = is_teacher(request.user) if teacher: classes = Class.objects.filter( teachers__in=[Teacher.objects.get(user=request.user)]) else: classes = Class.objects.filter( students__in=[Student.objects.get(user=request.user)]) return render(request, 'classes/index.html', { 'classes': classes, 'classes_active': True, 'is_teacher': teacher })
def confirm_register(request, key): if is_teacher(request.user): return redirect('Classes:index') student_obj = Student.objects.get(user=request.user) pk = base64.b64decode(key) obj = Class.objects.get(pk=pk) if Class.objects.filter(pk=pk, students__in=[student_obj]): return redirect(reverse('Classes:view', kwargs={'id':pk})) obj.students.add(student_obj) obj.save() return redirect('Classes:index')
def confirm_register(request, key): if is_teacher(request.user): return redirect('Classes:index') student_obj = Student.objects.get(user=request.user) pk = base64.b64decode(key) obj = Class.objects.get(pk=pk) if Class.objects.filter(pk=pk, students__in=[student_obj]): return redirect(reverse('Classes:view', kwargs={'id': pk})) obj.students.add(student_obj) obj.save() return redirect('Classes:index')
def view(request, id): obj = Class.objects.get(pk=id) aux = set(Teacher.objects.all()) aux2 = set(obj.teachers.all()) aux -= aux2 students = obj.students.all() for student in students: rewards = RewardStudentClass.objects.filter(student=student, classe=obj) student.score = 0 for reward in rewards: student.score += reward.reward.value students = list(students) students.sort(key=lambda x: x.score, reverse=True) rewards = RewardStudentClass.objects.filter(classe=obj) ranking_rewards = {} for s in students: for r in rewards: count = RewardStudentClass.objects.filter(classe=obj, student=s).count() if not r.reward.pk in ranking_rewards or ranking_rewards[ r.reward.pk]['count'] < count: ranking_rewards[r.reward.pk] = { 'count': count, 'reward': r.reward, 'student': s } ranking_rewards = [ranking_rewards[r] for r in ranking_rewards] context = { 'class': obj, 'key': base64.b64encode(bytes(id, 'utf-8')), 'is_teacher': is_teacher(request.user), 'teachers': aux, 'students': students, 'ranking_rewards': ranking_rewards } return render(request, 'classes/view_class.html', context)
def create_class(request): if not is_teacher(request.user): return redirect('index') class_form = ClassForm(request.POST or None) if class_form.is_valid(): classe = class_form.save() classe.teachers.add(Teacher.objects.get(user=request.user)) classe.save() return redirect('Classes:index') return render(request, 'classes/form.html', { 'form': class_form, 'edit': False })
def index(request): if not is_teacher(request.user): return redirect('index') # return render(request, 'students/student_rewards.html', { # 'student': Student.objects.get(user=request.user), # 'rewards': Student.objects.get(user=request.user).rewards.all(), # 'badges': Student.objects.get(user=request.user).badges.all() # }) return render(request, 'rewards/index.html', { 'reward_form' : RewardForm(), 'badge_form': BadgeForm(), 'rewards' : Reward.objects.filter(created_by=request.user), 'badges' : Badge.objects.filter(created_by=request.user), 'rewards_active': True, })
def edit(request): teacher = is_teacher(request.user) if teacher: custom_form = TeacherForm(request.POST or None, instance=Teacher.objects.get(user=request.user)) else: custom_form = StudentForm(request.POST or None, instance=Student.objects.get(user=request.user)) user_form = EditUserForm(request.POST or None, instance=request.user) if request.method == "POST": if custom_form.is_valid() and user_form.is_valid(): user = user_form.save() custom_form.save() messages.success(request, "Configurações editadas com sucesso") return render(request, "accounts/edit.html", {"form": user_form, "custom_form": custom_form, "is_teacher": teacher})
def view(request, id): obj = Class.objects.get(pk=id) aux = set(Teacher.objects.all()) aux2 = set(obj.teachers.all()) aux -= aux2 students = obj.students.all() for student in students: rewards = RewardStudentClass.objects.filter(student=student, classe=obj) student.score = 0 for reward in rewards: student.score += reward.reward.value students = list(students) students.sort(key=lambda x: x.score, reverse=True) rewards = RewardStudentClass.objects.filter(classe=obj) ranking_rewards = {} for s in students: for r in rewards: count = RewardStudentClass.objects.filter(classe=obj, student=s).count() if not r.reward.pk in ranking_rewards or ranking_rewards[r.reward.pk]['count'] < count: ranking_rewards[r.reward.pk] = { 'count': count, 'reward': r.reward, 'student': s } ranking_rewards = [ranking_rewards[r] for r in ranking_rewards] context={ 'class': obj, 'key': base64.b64encode(bytes(id, 'utf-8')), 'is_teacher': is_teacher(request.user), 'teachers': aux, 'students': students, 'ranking_rewards': ranking_rewards } return render(request, 'classes/view_class.html', context)
def statistics(request): context = {'statistics_active': True} classes_context = [] if is_teacher(request.user): classes = Class.objects.filter(teachers__in=[Teacher.objects.get(user=request.user)]) else: classes = Class.objects.filter(students__in=[Student.objects.get(user=request.user)]) for entry in classes: students = [] for student in entry.students.all().order_by('user__first_name', 'user__last_name'): students.append({'name': str(student), 'total': student.total_value_in_class(entry)}) classes_context.append((entry, students)) context['classes'] = classes_context return render(request, 'reports.html', context)
def create_reward(request): if not is_teacher(request.user): return redirect('index') reward_form = RewardForm(request.POST or None) if reward_form.is_valid(): reward = reward_form.save(commit=False) reward.created_by = request.user reward.save() # return redirect('index') return render(request, 'rewards/index.html', { 'reward_form': reward_form, 'badge_form' : BadgeForm(), 'rewards' : Reward.object.filter(created_by=request.user), 'badges' : Badge.object.filter(created_by=request.user), })
def edit_class(request, id): if not is_teacher(request.user): return redirect('index') if not Class.objects.filter( pk=id, teachers__in=[Teacher.objects.get(user=request.user)]): return redirect('Classes:index') my_class = Class.objects.get(pk=id) class_form = ClassForm(request.POST or None, instance=my_class) if class_form.is_valid(): my_class.save() return redirect('Classes:index') return render(request, 'classes/form.html', { 'form': class_form, 'edit': True })
def edit_class(request, id): if not is_teacher(request.user): return redirect('index') if not Class.objects.filter(pk=id, teachers__in=[Teacher.objects.get(user=request.user)]): return redirect('Classes:index') my_class = Class.objects.get(pk=id) class_form = ClassForm(request.POST or None, instance = my_class) if class_form.is_valid(): my_class.save() return redirect('Classes:index') return render(request, 'classes/form.html', { 'form': class_form, 'edit': True })
def stats(request, id): obj = Class.objects.get(pk=id) students = obj.students.all() selected = False if request.GET.get('start') and request.GET.get('end'): selected = True initial_date = datetime.strptime('01/01/2000', '%d/%m/%Y') start_date = datetime.strptime(request.GET.get('start') + ' 00:00', '%d/%m/%Y %H:%M') end_date = datetime.strptime(request.GET.get('end') + ' 23:59', '%d/%m/%Y %H:%M') for student in students: initial_rewards = RewardStudentClass.objects.filter(student=student, classe=obj, created__range=(initial_date, start_date)) student.initial_score = 0 for r in initial_rewards: student.initial_score += r.reward.value rewards = RewardStudentClass.objects.filter(student=student, classe=obj, created__range=(start_date, end_date)) student.score = 0 for r in rewards: student.score += r.reward.value if student.score < student.initial_score: student.score_raise = -((student.initial_score or 1)/(student.score or 1))*100 else: student.score_raise = (student.score/(student.initial_score or 1))*100 student.badges = BadgeStudentClass.objects.filter(student=student, classe=obj, created__range=(start_date, end_date)) context={ 'class': obj, 'is_teacher': is_teacher(request.user), 'students': students, 'selected': selected } return render(request, 'classes/stats.html', context)
def create_badge(request): if not is_teacher(request.user): return redirect('index') badge_form = BadgeForm(request.POST or None) if badge_form.is_valid(): badge = badge_form.save(commit=False) badge.created_by = request.user badge.save() #return redirect('index') print("COOOL") print(badge_form.errors) return render(request, 'rewards/index.html', { 'badge_form': badge_form, 'reward_form': RewardForm(), 'rewards' : Reward.objects.filter(created_by=request.user), 'badges' : Badge.objects.filter(created_by=request.user), })
def statistics(request): context = {'statistics_active': True} classes_context = [] if is_teacher(request.user): classes = Class.objects.filter( teachers__in=[Teacher.objects.get(user=request.user)]) else: classes = Class.objects.filter( students__in=[Student.objects.get(user=request.user)]) for entry in classes: students = [] for student in entry.students.all().order_by('user__first_name', 'user__last_name'): students.append({ 'name': str(student), 'total': student.total_value_in_class(entry) }) classes_context.append((entry, students)) context['classes'] = classes_context return render(request, 'reports.html', context)