Exemplo n.º 1
0
def add_profile(request):
    if (request.user.category != tuples.CATEGORY.STUDENT or
            models.Student.objects.filter(user_id=request.user.id).exists()):
        return redirect('404')

    args = {
        'validation_permission': validation_permission(user=request.user),
    }

    # add student profile
    if request.method == 'POST':
        form = forms.AddStudent(request.POST, user=request.user)
        skill_form = forms.AddSkill(request.POST, user=request.user)
        if form.is_valid() and skill_form.is_valid():
            form.save()
            skill_form.save()

            return redirect('account:profile', username=request.user.username)
    else:
        form = forms.AddStudent()
        skill_form = forms.AddSkill()

    args = {
        'form': form,
        'skill_form': skill_form,
    }

    return render(request, 'account/profile/add_profile.html', args)
Exemplo n.º 2
0
    def render(self, request, username='', new_args=None):
        args = {
            'validation_permission': validation_permission(user=request.user),
        }

        if (request.user.category == tuples.CATEGORY.STUDENT):
            student = models.Student.objects.get(user=request.user.id)

            args['student_form'] = forms.EditStudent(instance=student)
            args['skill_form'] = forms.EditSkill(user=request.user)

        args['user_form'] = forms.EditUser(instance=request.user)

        if new_args:
            for i in new_args:
                args[i] = new_args[i]
        return render(request, self.template_name, args)
Exemplo n.º 3
0
    def render(self, request, username, new_args=None):
        args = {
            'validation_permission': validation_permission(user=request.user),
        }

        args['own_profile'] = False
        if request.user.is_authenticated and username == request.user.username:
            args['own_profile'] = True

        profile = models.User.objects.get(username=username)
        args['user_form'] = profile
        args['user_category'] = tuples.CATEGORY().value(profile.category)

        # validation permission - possibility to validate:
        # student's skill, persons

        # if user want to view profile of student
        if (profile.category
                == tuples.CATEGORY.STUDENT) and models.Student.objects.filter(
                    user=profile.id).exists():
            student = models.Student.objects.get(user=profile.id)
            args['student'] = student
            args['student_english'] = tuples.ENGLISH().value(student.english)

            # show skills
            skills = []
            for i in models.StudentSkill.objects.filter(
                    student=student.user.id):
                skills.append(view_forms.Skill(skill=i))

            skills.sort(key=lambda instance: instance.value)
            args['skills'] = skills

        if new_args:
            for i in new_args:
                args[i] = new_args[i]
        return render(request, self.template_name, args)
Exemplo n.º 4
0
	def get(self, request, page = 1):
		self.init(request=request, page=page)
		args = {'validation_permission': validation_permission(user=request.user), }

		# add filters
		kwargs_filter = {
			'english__gte': self.english,
		}

		if self.validated == 'True':
			kwargs_filter['user__validated_by__isnull'] = False

		kwargs_filter2 = {}
		kwargs_annotate = {}

		# filter by skills - begin 
		initial_skill = []
		if self.skills and self.skills != 'None':
			for i in self.skills.split(","):
				initial_skill.append(int (i))
			kwargs_filter['studentskill__skill__in'] = initial_skill
			kwargs_annotate['skill_count'] = Count('studentskill__skill_id')
			kwargs_filter2['skill_count'] = len(initial_skill)
		# filter by skills - end 

		# which data need to get from database
		args_only = {
			'user',
			'english',
			'user__id',
			'user__first_name',
			'user__last_name',
			'user__username'
		}

		# last parameter is primary in sorting
		args_order_by = {
			'user__first_name',	# second
			'user__last_name',	# first
		}


		# take number of all suitable students
		students_count = models.Student.objects.filter(**kwargs_filter
			).select_related('user'
			).only(*args_only
			).annotate(**kwargs_annotate
			).filter(**kwargs_filter2
			).order_by(*args_order_by
			).count()

		# take queryset (rows depends on 'page' and 'rows' - number of lines per page)
		students = models.Student.objects.filter(**kwargs_filter
			).select_related('user'
			).only(*args_only
			).annotate(**kwargs_annotate
			).filter(**kwargs_filter2
			).order_by(*args_order_by
			)[
				(self.page-1)*self.rows : self.page*self.rows
			]

		# build list of student which include:
		# name, username, skills[], english
		students_form = []
		for student in students:
			students_form.append(forms.Student(student = student))
		args['students'] = students_form


		url_data = '?skills={0}&english={1}'.format(self.skills, self.english)
		args['url_data'] = url_data


		args['skill_form'] = forms.Skill(initial={'skill': initial_skill})
		args['english_form'] = forms.English(initial={'value': self.english})

		if self.validated == 'True':
			args['validated_form'] = forms.Validated(initial={'validated': True})
		else:
			args['validated_form'] = forms.Validated()

		args['page'] = self.page


		# count of pages
		count_pages = math.ceil(students_count/self.rows)
		if count_pages > 1:
			if self.page > 1:
				args['first_page'] = reverse('core:search_page', kwargs={'page': 1}) + url_data
				args['prev_page'] = reverse('core:search_page', kwargs={'page': self.page - 1}) + url_data
			
			if self.page < count_pages:
				args['next_page'] = reverse('core:search_page', kwargs={'page': self.page + 1}) + url_data
				args['last_page'] = reverse('core:search_page', kwargs={'page': count_pages}) + url_data

		return render(request, self.template_name, args)
Exemplo n.º 5
0
def home(request):
    args = {
        'validation_permission': validation_permission(user=request.user),
    }
    return render(request, "home.html", args)