Esempio n. 1
0
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
    })
Esempio n. 2
0
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)
Esempio n. 3
0
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')
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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')
Esempio n. 7
0
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
	})
Esempio n. 8
0
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
    })
Esempio n. 9
0
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')
Esempio n. 10
0
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')
Esempio n. 11
0
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)
Esempio n. 12
0
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
    })
Esempio n. 13
0
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,
	})
Esempio n. 14
0
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
	})
Esempio n. 15
0
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})
Esempio n. 16
0
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)
Esempio n. 17
0
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)
Esempio n. 18
0
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),
	})
Esempio n. 19
0
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
    })
Esempio n. 20
0
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
	})
Esempio n. 21
0
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)
Esempio n. 22
0
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),
	})
Esempio n. 23
0
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)