Beispiel #1
0
    def get(self, request, *args, **kwargs):
        query_params = self.request.query_params
        self.fields = split_query_argument(query_params.get('fields'))
        exclude = split_query_argument(query_params.get('exclude'))
        self.exclude = self.always_exclude + (exclude if exclude else [])
        self.ids = split_query_argument(query_params.get('ids'))

        return super(APIListView, self).get(request, *args, **kwargs)
Beispiel #2
0
    def get(self, request, *args, **kwargs):
        query_params = self.request.query_params
        self.fields = split_query_argument(query_params.get('fields'))
        exclude = split_query_argument(query_params.get('exclude'))
        self.exclude = self.always_exclude + (exclude if exclude else [])
        self.ids = split_query_argument(query_params.get(self.ids_param))
        self.verify_ids()

        return super(APIListView, self).get(request, *args, **kwargs)
    def get(self, request, *args, **kwargs):
        query_params = self.request.query_params
        self.fields = split_query_argument(query_params.get('fields'))
        exclude = split_query_argument(query_params.get('exclude'))
        self.exclude = self.always_exclude + (exclude if exclude else [])
        self.ids = split_query_argument(query_params.get(self.ids_param))
        self.verify_ids()

        return super().get(request, *args, **kwargs)
Beispiel #4
0
 def get(self, request, *args, **kwargs):
     query_params = self.request.query_params
     programs = split_query_argument(query_params.get('programs'))
     if not programs:
         self.always_exclude = self.always_exclude + ['programs']
     self.ids = split_query_argument(query_params.get('ids'))
     self.verify_ids()
     response = super(CourseSummariesView,
                      self).get(request, *args, **kwargs)
     return response
    def get_queryset(self):
        """
        Fetches the user list and last updated from elasticsearch returned returned
        as a an array of dicts with fields "learner" and "last_updated".
        """
        self._validate_query_params()
        query_params = self.request.QUERY_PARAMS

        order_by = query_params.get('order_by')
        sort_order = query_params.get('sort_order')
        sort_policies = [{'order_by': order_by, 'sort_order': sort_order}]

        # Ordering by problem_attempts_per_completed can be ambiguous because
        # values could be infinite (e.g. divide by zero) if no problems were completed.
        # Instead, secondary sorting by attempt_ratio_order will produce a sensible ordering.
        if order_by == 'problem_attempts_per_completed':
            sort_policies.append({
                'order_by':
                'attempt_ratio_order',
                'sort_order':
                'asc' if sort_order == 'desc' else 'desc'
            })

        params = {
            'segments':
            split_query_argument(query_params.get('segments')),
            'ignore_segments':
            split_query_argument(query_params.get('ignore_segments')),
            'cohort':
            query_params.get('cohort'),
            'enrollment_mode':
            query_params.get('enrollment_mode'),
            'text_search':
            query_params.get('text_search'),
            'sort_policies':
            sort_policies,
        }
        # Remove None values from `params` so that we don't overwrite default
        # parameter values in `get_users_in_course`.
        params = {key: val for key, val in params.items() if val is not None}
        try:
            return RosterEntry.get_users_in_course(self.course_id, **params)
        except ValueError as e:
            raise ParameterValueError(e.message)
    def get_queryset(self):
        """
        Fetches the user list and last updated from elasticsearch returned returned
        as a an array of dicts with fields "learner" and "last_updated".
        """
        self._validate_query_params()
        query_params = self.request.QUERY_PARAMS

        order_by = query_params.get('order_by')
        sort_order = query_params.get('sort_order')
        sort_policies = [{
            'order_by': order_by,
            'sort_order': sort_order
        }]

        # Ordering by problem_attempts_per_completed can be ambiguous because
        # values could be infinite (e.g. divide by zero) if no problems were completed.
        # Instead, secondary sorting by attempt_ratio_order will produce a sensible ordering.
        if order_by == 'problem_attempts_per_completed':
            sort_policies.append({
                'order_by': 'attempt_ratio_order',
                'sort_order': 'asc' if sort_order == 'desc' else 'desc'
            })

        params = {
            'segments': split_query_argument(query_params.get('segments')),
            'ignore_segments': split_query_argument(query_params.get('ignore_segments')),
            'cohort': query_params.get('cohort'),
            'enrollment_mode': query_params.get('enrollment_mode'),
            'text_search': query_params.get('text_search'),
            'sort_policies': sort_policies,
        }
        # Remove None values from `params` so that we don't overwrite default
        # parameter values in `get_users_in_course`.
        params = {key: val for key, val in params.items() if val is not None}
        try:
            return RosterEntry.get_users_in_course(self.course_id, **params)
        except ValueError as e:
            raise ParameterValueError(e.message)
    def get(self, request, *args, **kwargs):
        query_params = self.request.query_params
        programs = split_query_argument(query_params.get('programs'))
        if not programs:
            self.always_exclude = self.always_exclude + ['programs']

        recent = query_params.get('recent_date')
        try:
            self.verify_recent_date(recent)
        except ValueError as err:
            return HttpResponseBadRequest(content='Error in recent_date: {}\n'.format(str(err)))

        response = super().get(request, *args, **kwargs)
        return response
    def get(self, request, *args, **kwargs):
        query_params = self.request.query_params
        programs = split_query_argument(query_params.get('programs'))
        if not programs:
            self.always_exclude = self.always_exclude + ['programs']

        recent = query_params.get('recent_date')
        try:
            self.verify_recent_date(recent)
        except ValueError as err:
            return HttpResponseBadRequest(content='Error in recent_date: {}\n'.format(err.message))

        response = super(CourseSummariesView, self).get(request, *args, **kwargs)
        return response
 def test_split_query_argument(self, query_args, expected):
     self.assertListEqual(utils.split_query_argument(query_args), expected)
 def test_split_query_argument_none(self):
     self.assertIsNone(utils.split_query_argument(None))
 def test_split_query_argument(self, query_args, expected):
     self.assertListEqual(utils.split_query_argument(query_args), expected)
 def test_split_query_argument_none(self):
     self.assertIsNone(utils.split_query_argument(None))