Exemple #1
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Add the paginator on favourite courses of the user where he is student.
        # Prefix is “favourite”: so object are “favourite_has_obj…”
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Course.objects.student_favourites_for(self.request.user),
                self.request.GET,
                prefix="favourite",
                nb_per_page=6))

        # Add the paginator on courses where user is student. Prefix is “follow”: so object are “follow_has_obj…”
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Course.objects.followed_by_without_favorites(
                    self.request.user),
                self.request.GET,
                prefix="follow",
                nb_per_page=6))

        # Execute the user query and add the paginator on query
        form = BasicSearchForm(data=self.request.GET)
        if form.is_valid() and form.cleaned_data.get("query", str()):
            context.update(
                PaginatorFactory.get_paginator_as_context(
                    Course.objects.followed_by(self.request.user,
                                               query=form.cleaned_data.get(
                                                   "query", str())).all(),
                    self.request.GET,
                    prefix="search"))

        # Add the query form in the view
        context["form"] = form
        return context
Exemple #2
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        reusable_resources = Resource.objects.exclude(activities=self.object).exclude(
            reuse=ResourceReuse.NON_REUSABLE.name).exclude(
            Q(reuse=ResourceReuse.ONLY_AUTHOR.name) & ~Q(author=self.request.user)
            # Resources that can be reused by their author
        )

        # Suggestion for new activities
        context.update(PaginatorFactory.get_paginator_as_context(
            reusable_resources.all(), self.request.GET, prefix="suggested", nb_per_page=9)
        )

        # User may query some words using the search filter
        form = BasicSearchForm(data=self.request.GET)
        if form.is_valid() and form.cleaned_data.get('query', str()):
            query = form.cleaned_data.get('query', str())
            context.update(PaginatorFactory.get_paginator_as_context(
                reusable_resources.filter(Q(name__icontains=query) | Q(description__icontains=query)).all(),
                self.request.GET, prefix="search")
            )

        # Add the query form to the view
        context['form'] = form
        return context
Exemple #3
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Add the paginator on courses where user is author
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Course.objects.written_by(self.request.user),
                self.request.GET,
                prefix="author",
                nb_per_page=6))

        # Add the paginator on courses where user is a collaborator
        context.update(
            PaginatorFactory.get_paginator_as_context(
                CourseCollaborator.objects.filter(
                    collaborator=self.request.user),
                self.request.GET,
                prefix="contributor",
                nb_per_page=6))

        # Execute the user query and add the paginator on query
        form = BasicSearchForm(data=self.request.GET)
        if form.is_valid() and form.cleaned_data.get('query', str()):
            context.update(
                PaginatorFactory.get_paginator_as_context(
                    Course.objects.taught_by(self.request.user,
                                             query=form.cleaned_data.get(
                                                 'query', str())).all(),
                    self.request.GET,
                    prefix="search"))

        # Add the query form in the view
        context['form'] = form
        return context
Exemple #4
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Show the user some recommended courses, based on its profile
        queryset = None
        if self.request.user.is_authenticated:
            queryset = Course.objects.recommendations_for(
                self.request.user).all()
        context.update(
            PaginatorFactory.get_paginator_as_context(queryset,
                                                      self.request.GET,
                                                      prefix="recommended",
                                                      nb_per_page=9))

        # Show the user all public courses
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Course.objects.public_without_followed_by_without_taught_by(
                    self.request.user, self.request.user).all(),
                self.request.GET,
                prefix="public",
                nb_per_page=33))

        # The search results
        context.update(
            SearchQuery.search_query_as_context(Course, self.request.GET))
        return context
Exemple #5
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # All available activities for new activities
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Activity.objects.reusable(self.object, self.request.user),
                self.request.GET,
                prefix="reusable",
                nb_per_page=6))

        # User may query some words using the search filter
        form = BasicSearchForm(data=self.request.GET)
        if form.is_valid() and form.cleaned_data.get("query", str()):
            query = form.cleaned_data.get("query", str())
            context.update(
                PaginatorFactory.get_paginator_as_context(
                    Activity.objects.reusable(self.object,
                                              self.request.user,
                                              query=query),
                    self.request.GET,
                    prefix="search",
                    nb_per_page=6))

        # Add the query form in the view
        context["form"] = form
        return context
Exemple #6
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data()
     if self.request.user.is_authenticated:
         context.update(
             PaginatorFactory.get_paginator_as_context(
                 Course.objects.followed_by(self.request.user).all(),
                 self.request.GET,
                 nb_per_page=6))
     else:
         context.update(
             PaginatorFactory.get_paginator_as_context(
                 Course.objects.public().all(),
                 self.request.GET,
                 nb_per_page=6))
     return context
Exemple #7
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     # Courses where this activity is used
     context.update(PaginatorFactory.get_paginator_as_context(
         self.object.course_activities.all(), self.request.GET, nb_per_page=10)
     )
     return context
Exemple #8
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Add the current course activity into the context
        if "activity_slug" in self.kwargs.keys():
            course_activity = get_object_or_404(
                CourseActivity,
                activity__slug=self.kwargs.get("activity_slug"),
                course=self.object)
        else:
            course_activity = self.object.course_activities.first()
        context["current_course_activity"] = course_activity
        context[
            "current_course_activity_objective"] = PaginatorFactory.get_paginator_as_context(
                ActivityObjective.objects.filter(
                    activity=course_activity.activity).order_by(
                        "created").reverse(),
                self.request.GET,
                nb_per_page=6)
        if self.request.user != self.object.author:
            context["auth_user"] = self.request.user

        # Add previous and next activities in the context
        context["next_course_activity"] = CourseActivity.objects.filter(
            course=self.object, rank=course_activity.rank + 1).first()
        context["previous_course_activity"] = CourseActivity.objects.filter(
            course=self.object, rank=course_activity.rank - 1).first()
        return context
Exemple #9
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context["objectives"] = PaginatorFactory.get_paginator_as_context(
            ResourceObjective.objects.filter(
                resource=self.object).order_by("created").reverse(),
            self.request.GET,
            nb_per_page=6)
        context[
            "user_is_teacher_non_editor"] = ResourceCollaborator.objects.filter(
                collaborator=self.request.user,
                resource=self.object,
                role=CollaboratorRole.NON_EDITOR_TEACHER.name).exists()

        context[
            "user_is_teacher_editor"] = ResourceCollaborator.objects.filter(
                collaborator=self.request.user,
                resource=self.object,
                role=CollaboratorRole.TEACHER.name).exists()
        context[
            "user_contribute"] = self.request.user in self.object.collaborators.all(
            )
        context[
            "user_is_author_of_object"] = self.request.user == self.object.author
        if self.request.user != self.object.author:
            context["auth_user"] = self.request.user
        return context
 def get_context_data(self, **kwargs):
     context = super().get_context_data()
     if self.request.user.is_authenticated:
         # here the objective that user gained first
         context.update(
             PaginatorFactory.get_paginator_as_context(
                 Objective.objects.all().order_by("created"),
                 self.request.GET,
                 nb_per_page=6))
     else:
         # here all the objectives
         context.update(
             PaginatorFactory.get_paginator_as_context(
                 Objective.objects.all().order_by("created"),
                 self.request.GET,
                 nb_per_page=6))
     return context
Exemple #11
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context.update(
         PaginatorFactory.get_paginator_as_context(
             self.object.course_collaborators.order_by("role"),
             self.request.GET,
             nb_per_page=10))
     return context
Exemple #12
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context.update(
         PaginatorFactory.get_paginator_as_context(
             self.object.registrations.order_by(
                 'student__last_login').all(),
             self.request.GET,
             nb_per_page=10))
     return context
Exemple #13
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data()
     context.update(
         PaginatorFactory.get_paginator_as_context(
             ResourceObjective.objects.filter(
                 resource=self.object).order_by("created").reverse(),
             self.request.GET,
             nb_per_page=6))
     return context
Exemple #14
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data()

        # Add the paginator on favourite resources of the user.
        # Prefix is “favourite”: so object are “favourite_has_obj…”
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Resource.objects.teacher_favourites_for(self.request.user),
                self.request.GET,
                prefix="favourite",
                nb_per_page=6))

        # Add the paginator on resources where user is author
        context.update(
            PaginatorFactory.get_paginator_as_context(
                Resource.objects.written_by(self.request.user),
                self.request.GET,
                prefix="author",
                nb_per_page=6))

        # Add the paginator on resources where user is a collaborator
        # FIXME: this should exclude favourite courses where the user contribute
        context.update(
            PaginatorFactory.get_paginator_as_context(
                ResourceCollaborator.objects.filter(
                    collaborator=self.request.user),
                self.request.GET,
                prefix="contributor",
                nb_per_page=6))

        # Execute the user query and add the paginator on query
        form = BasicSearchForm(data=self.request.GET)
        if form.is_valid() and form.cleaned_data.get("query", str()):
            context.update(
                PaginatorFactory.get_paginator_as_context(
                    Resource.objects.taught_by(self.request.user,
                                               query=form.cleaned_data.get(
                                                   "query", str())),
                    self.request.GET,
                    prefix="search"))

        # Add the query form in the view
        context["form"] = form
        return context
 def get_context_data(self, **kwargs):
     context = super().get_context_data()
     context.update(
         PaginatorFactory.get_paginator_as_context([
             course for course in Course.objects.all()
             if self.object in course.get_all_objectives()
         ],
                                                   self.request.GET,
                                                   nb_per_page=6))
     return context
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context.update(
            PaginatorFactory.get_paginator_as_context(
                self.object.object_collaborators.order_by(
                    'collaborator__first_name'),
                self.request.GET,
                nb_per_page=10))
        context[
            'number_collaborator'] = self.object.object_collaborators.count()

        return context
Exemple #17
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     # Activities by the logged-on user
     context.update(
         PaginatorFactory.get_paginator_as_context(
             Activity.objects.filter(author=self.request.user).all(),
             self.request.GET, prefix="activities", nb_per_page=9
         )
     )
     # Resources that match the query
     context.update(SearchQuery.search_query_as_context(Activity, self.request.GET))
     return context
Exemple #18
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data()
     context.update(
         PaginatorFactory.get_paginator_as_context(
             CourseObjective.objects.filter(
                 course=self.object).order_by("created").reverse(),
             self.request.GET,
             nb_per_page=6))
     if self.request.user.is_authenticated:
         if self.request.user != self.object.author:
             context["auth_user"] = self.request.user
     return context
Exemple #19
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data()
     context["activity"] = self.activity
     context["resource"] = self.resource
     context["activity"] = self.activity
     context["resource"] = self.resource
     context[
         "current_course_activity_resource_objective"] = PaginatorFactory.get_paginator_as_context(
             ResourceObjective.objects.filter(
                 resource=self.resource).order_by("created").reverse(),
             self.request.GET,
             nb_per_page=6)
     return context
Exemple #20
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        basic_queryset = Activity.objects.exclude(
            # activities already linked with the course
            course_activities__course=self.object
        ).exclude(
            # activities that are not reusable
            reuse=ActivityReuse.NON_REUSABLE.name,
        ).exclude(
            # activities that can only be reused by their respective authors
            Q(reuse=ActivityReuse.ONLY_AUTHOR.name)
            & ~Q(author=self.object.author))

        # Suggestion for new activities
        context.update(
            PaginatorFactory.get_paginator_as_context(basic_queryset.all(),
                                                      self.request.GET,
                                                      prefix="suggested",
                                                      nb_per_page=6))

        # User may query some words using the search filter
        form = BasicSearchForm(data=self.request.GET)
        if form.is_valid() and form.cleaned_data.get('query', str()):
            query = form.cleaned_data.get('query', str())
            context.update(
                PaginatorFactory.get_paginator_as_context(
                    basic_queryset.filter(
                        Q(name__icontains=query)
                        | Q(description__icontains=query)).all(),
                    self.request.GET,
                    prefix="search",
                    nb_per_page=6))

        # Add the query form in the view
        context['form'] = form
        return context
Exemple #21
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     # noinspection PyBroadException
     try:
         similar_list = [
             similar for similar in self.object.tags.similar_objects()
             if isinstance(similar, Activity) and similar.user_can_view(self.request.user)
         ]
         context.update(PaginatorFactory.get_paginator_as_context(similar_list, self.request.GET, nb_per_page=9))
     # django-taggit similar tags can have weird behaviour sometimes: https://github.com/jazzband/django-taggit/issues/80
     except Exception:
         messages.error(
             self.request,
             _("The component used to detect similar activities crashed. We try to fix this as soon as possible.")
         )
     return context
Exemple #22
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Show the user some recommended courses, based on its profile
        if self.request.user.is_anonymous:
            queryset = Course.objects.all()
        else:
            queryset = Course.objects.recommendations_for(
                self.request.user).all()

        context.update(
            PaginatorFactory.get_paginator_as_context(queryset,
                                                      self.request.GET,
                                                      prefix="recommended",
                                                      nb_per_page=9))

        context.update(
            SearchQuery.search_query_as_context(Course, self.request.GET))
        return context
Exemple #23
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["user_can_register"] = self.__user_can_register()

        # Add user specific elements in the context
        context["user_can_register"] = self.__user_can_register()
        context["objectives"] = PaginatorFactory.get_paginator_as_context(
            CourseObjective.objects.filter(
                course=self.object).order_by("created").reverse(),
            self.request.GET,
            nb_per_page=6)
        if self.request.user.is_authenticated:
            if self.request.user in self.object.collaborators.all():
                context["contribution"] = CourseCollaborator.objects \
                    .get(collaborator=self.request.user, course=self.object)
            registration = self.object.registrations.filter(
                student=self.request.user)
            context["user_is_student"] = registration.exists()
            if context.get("user_is_student", False):
                context["registration"] = registration.get()
            context["user_is_teacher"] = self.__user_is_teacher()
            context[
                "user_is_teacher_non_editor"] = CourseCollaborator.objects.filter(
                    collaborator=self.request.user,
                    course=self.object,
                    role=CollaboratorRole.NON_EDITOR_TEACHER.name).exists()
            context[
                "user_is_teacher_editor"] = CourseCollaborator.objects.filter(
                    collaborator=self.request.user,
                    course=self.object,
                    role=CollaboratorRole.TEACHER.name).exists()
            context[
                "user_contribute"] = self.request.user in self.object.collaborators.all(
                )
            context[
                "user_is_author_of_object"] = self.request.user == self.object.author
            if self.request.user != self.object.author:
                context["auth_user"] = self.request.user
        return context