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)
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)
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))