Source code for kadi_apy.cli.lib.collections

# Copyright 2020 Karlsruhe Institute of Technology
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from kadi_apy.cli.commons import BasicCLIMixin
from kadi_apy.cli.commons import DeleteItemCLIMixin
from kadi_apy.cli.commons import ExportCLIMixin
from kadi_apy.cli.commons import GroupRoleCLIMixin
from kadi_apy.cli.commons import RaiseRequestErrorMixin
from kadi_apy.cli.commons import TagCLIMixin
from kadi_apy.cli.commons import UserCLIMixin
from kadi_apy.lib.resources.collections import Collection


[docs] class CLICollection( BasicCLIMixin, UserCLIMixin, GroupRoleCLIMixin, TagCLIMixin, DeleteItemCLIMixin, ExportCLIMixin, Collection, RaiseRequestErrorMixin, ): """Collection class to be used in a CLI. :param manager: See :class:`.Collection`. :param id: See :class:`.Collection`. :param identifier: See :class:`.Collection`. :param skip_request: See :class:`.Collection`. :param create: See :class:`.Collection`. :param pipe: Flag to indicate if only the id should be printed which can be used for piping. :type pipe: bool, optional :param title: Title of the new resource. :type title: str, optional :param exit_not_created: Flag to indicate if the function should exit with ``sys.exit(1)`` if the resource is not created. :type exit_not_created: bool, optional """ def __init__( self, pipe=False, title=None, create=False, exit_not_created=False, **kwargs ): super().__init__(title=title, create=create, **kwargs) self._print_item_created( title=title, pipe=pipe, create=create, exit_not_created=exit_not_created, )
[docs] def print_info(self, **kwargs): r"""Print infos of a collection using the CLI. :param \**kwargs: Specify additional infos to print. :raises: KadiAPYRequestError: If request was not successful """ super().print_info(**kwargs) if kwargs.get("records", False): response = self.get_records( page=kwargs.get("page"), per_page=kwargs.get("per_page") ) if response.status_code == 200: payload = response.json() self.info( f"Found {payload['_pagination']['total_items']} record(s) on " f"{payload['_pagination']['total_pages']} page(s).\n" f"Showing results of page {kwargs.get('page')}:" ) for results in payload["items"]: self.info( f"Found record '{results['title']}' with id" f" '{results['id']}' and identifier" f" '{results['identifier']}'." ) else: self.raise_request_error(response) if kwargs.get("subcollections", False): response = self.get_collections( page=kwargs.get("page"), per_page=kwargs.get("per_page") ) if response.status_code == 200: payload = response.json() self.info( f"Found {payload['_pagination']['total_items']} collection(s) on " f"{payload['_pagination']['total_pages']} page(s).\n" f"Showing results of page {kwargs.get('page')}:" ) for results in payload["items"]: self.info( f"Found collection '{results['title']}' with id" f" '{results['id']}' and identifier" f" '{results['identifier']}'." ) else: self.raise_request_error(response)