def list(self, request, *args, **kwargs): self.paginator.init_from_request(request) params = { 'offset': self.paginator.offset, 'limit': self.paginator.limit, } for key, value in self.request.query_params.lists(): if key == 'keywords': key = 'q' if isinstance(value, list): params[key] = ','.join(value) else: params[key] = value api = galaxy_pulp.PulpCollectionsApi(pulp.get_client()) response = api.list( is_highest=True, exclude_fields='docs_blob', **params ) namespaces = set(collection['namespace'] for collection in response.results) namespaces = self._query_namespaces(namespaces) data = serializers.CollectionListSerializer( response.results, many=True, context={'namespaces': namespaces} ).data return self.paginator.paginate_proxy_response(data, response.count)
def retrieve(self, request, *args, **kwargs): namespace, name = self.kwargs['collection'].split('/') namespace_obj = get_object_or_404(models.Namespace, name=namespace) params_dict = self.request.query_params.dict() version = params_dict.get('version', '') api = galaxy_pulp.PulpCollectionsApi(pulp.get_client()) params = { 'namespace': namespace, 'name': name, } if version == '': params['is_highest'] = True params[ 'certification'] = constants.CertificationStatus.CERTIFIED.value else: params['version'] = version response = api.list(**params) if not response.results: raise NotFound() all_versions = api.list( namespace=namespace, name=name, fields='version,id,pulp_created,artifact', certification=constants.CertificationStatus.CERTIFIED.value) all_versions = [{ 'version': collection['version'], 'id': collection['id'], 'created': collection['pulp_created'] } for collection in all_versions.results] collection = response.results[0] data = serializers.CollectionDetailSerializer(collection, context={ 'namespace': namespace_obj, 'all_versions': all_versions }).data return Response(data)
def retrieve(self, request, *args, **kwargs): namespace, name, version = self.kwargs['version'].split('/') api = galaxy_pulp.PulpCollectionsApi(pulp.get_client()) response = api.list(namespace=namespace, name=name, version=version, limit=1) if not response.results: raise NotFound() data = serializers.CollectionVersionDetailSerializer( response.results[0]).data return Response(data)
def retrieve(self, request, *args, **kwargs): namespace, name = self.kwargs['collection'].split('/') namespace_obj = get_object_or_404(models.Namespace, name=namespace) params_dict = self.request.query_params.dict() version = params_dict.get('version', '') api = galaxy_pulp.PulpCollectionsApi(pulp.get_client()) response = api.list(namespace=namespace, name=name) if not response.results: raise NotFound() all_versions = [{ 'version': collection['version'], 'id': collection['id'], 'created': collection['_created'] } for collection in response.results] if version != '': matching_collections = [ collection for collection in response.results if collection['version'] == version ] else: matching_collections = response.results if not matching_collections: raise NotFound() highest_matching_collection = matching_collections[-1] data = serializers.CollectionDetailSerializer( highest_matching_collection, context={ 'namespace': namespace_obj, 'all_versions': all_versions }).data return Response(data)
def list(self, request, *args, **kwargs): self.paginator.init_from_request(request) params = self.request.query_params.dict() params.update({ 'offset': self.paginator.offset, 'limit': self.paginator.limit, }) # pulp uses ordering, but the UI is standardized around sort if params.get('sort'): params['ordering'] = params.get('sort') del params['sort'] api = galaxy_pulp.PulpCollectionsApi(pulp.get_client()) response = api.list(exclude_fields='docs_blob', **params) data = serializers.CollectionVersionSerializer(response.results, many=True).data return self.paginator.paginate_proxy_response(data, response.count)
def list(self, request, *args, **kwargs): namespace, name = self.kwargs['collection'].split('/') self.paginator.init_from_request(request) params = self.request.query_params.dict() params.update({ 'offset': self.paginator.offset, 'limit': self.paginator.limit, }) api = galaxy_pulp.PulpCollectionsApi(pulp.get_client()) response = api.list(namespace=namespace, name=name, **params) if response.count == 0: raise NotFound() data = serializers.CollectionVersionBaseSerializer(response.results, many=True).data return self.paginator.paginate_proxy_response(data, response.count)