Beispiel #1
0
    def get_queryset(self):
        """ List one course run
        ---
        parameters:
            - name: include_deleted_programs
              description: Will include deleted programs in the associated programs array
              required: false
              type: integer
              paramType: query
              multiple: false
        """
        q = self.request.query_params.get('q')
        partner = self.request.site.partner
        edit_mode = get_query_param(self.request, 'editable') or self.request.method not in SAFE_METHODS

        if edit_mode and q:
            raise EditableAndQUnsupported()

        if edit_mode and (not self.request.user.is_staff and not is_publisher_user(self.request.user)):
            raise PermissionDenied

        if edit_mode:
            queryset = CourseRun.objects.filter_drafts()
            queryset = CourseEditor.editable_course_runs(self.request.user, queryset)
        else:
            queryset = self.queryset

        if q:
            qs = SearchQuerySetWrapper(CourseRun.search(q).filter(partner=partner.short_code))
            # This is necessary to avoid issues with the filter backend.
            qs.model = self.queryset.model
            return qs

        queryset = queryset.filter(course__partner=partner)
        return self.get_serializer_class().prefetch_queryset(queryset=queryset)
Beispiel #2
0
    def get_queryset(self):
        """ List one course run
        ---
        parameters:
            - name: include_deleted_programs
              description: Will include deleted programs in the associated programs array
              required: false
              type: integer
              paramType: query
              multiple: false
        """
        q = self.request.query_params.get('q')
        partner = self.request.site.partner

        if q:
            qs = SearchQuerySetWrapper(
                CourseRun.search(q).filter(partner=partner.short_code))
            # This is necessary to avoid issues with the filter backend.
            qs.model = self.queryset.model
            return qs
        else:
            queryset = super(
                CourseRunViewSet,
                self).get_queryset().filter(course__partner=partner)
            return self.get_serializer_class().prefetch_queryset(
                queryset=queryset)
Beispiel #3
0
    def get_queryset(self):
        """ List one course run
        ---
        parameters:
            - name: include_deleted_programs
              description: Will include deleted programs in the associated programs array
              required: false
              type: integer
              paramType: query
              multiple: false
        """
        q = self.request.query_params.get('q')
        include_all_partners = get_query_param(self.request,
                                               'include_all_partners')
        partners = Partner.objects.all(
        ) if include_all_partners else Partner.objects.filter(
            site=self.request.site)
        edx_org_short_name = self.request.query_params.get('org')

        if q:
            qs = SearchQuerySetWrapper(
                CourseRun.search(q).filter(
                    partner__in=partners.values_list('short_code', flat=True)))
            # This is necessary to avoid issues with the filter backend.
            qs.model = self.queryset.model
            return qs
        else:
            queryset = super(
                CourseRunViewSet,
                self).get_queryset().filter(course__partner__in=partners)
            return self.get_serializer_class().prefetch_queryset(
                queryset=queryset, edx_org_short_name=edx_org_short_name)
Beispiel #4
0
    def get_queryset(self):
        """ List one course run
        ---
        parameters:
            - name: include_deleted_programs
              description: Will include deleted programs in the associated programs array
              required: false
              type: integer
              paramType: query
              multiple: false
        """
        q = self.request.query_params.get('q', None)
        partner = self.get_partner()

        if q:
            qs = SearchQuerySetWrapper(
                CourseRun.search(q).filter(partner=partner.short_code))
            # This is necessary to avoid issues with the filter backend.
            qs.model = self.queryset.model
            return qs
        else:
            queryset = super(
                CourseRunViewSet,
                self).get_queryset().filter(course__partner=partner)
            queryset = queryset.select_related(
                *serializers.SELECT_RELATED_FIELDS['course_run'])
            queryset = queryset.prefetch_related(
                *serializers.PREFETCH_FIELDS['course_run'])
            return queryset
 def get_queryset(self):
     q = self.request.query_params.get('q', None)
     if q:
         qs = SearchQuerySetWrapper(CourseRun.search(q))
         # This is necessary to avoid issues with the filter backend.
         qs.model = self.queryset.model
         return qs
     else:
         return super(CourseRunViewSet, self).get_queryset()
Beispiel #6
0
    def get_queryset(self):
        """ List one course run
        ---
        parameters:
            - name: include_deleted_programs
              description: Will include deleted programs in the associated programs array
              required: false
              type: integer
              paramType: query
              multiple: false
        """
        q = self.request.query_params.get("q", None)
        partner = self.get_partner()

        if q:
            qs = SearchQuerySetWrapper(CourseRun.search(q).filter(partner=partner.short_code))
            # This is necessary to avoid issues with the filter backend.
            qs.model = self.queryset.model
            return qs
        else:
            queryset = super(CourseRunViewSet, self).get_queryset().filter(course__partner=partner)
            queryset = queryset.select_related(*serializers.SELECT_RELATED_FIELDS["course_run"])
            queryset = queryset.prefetch_related(*serializers.PREFETCH_FIELDS["course_run"])
            return queryset