=========== CameraGroup =========== .. py:class:: CameraGroup .. py:method:: id :property: The id of the group. :type: str, read-only .. py:method:: name :property: The name of the group. :type: str :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: parent_group :property: The parent group of this group or :py:obj:`None` if the group is at the root of the hierarchy. :type: CameraGroup or None :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: list_cameras(recursive = True) List the cameras of the group. :param recursive: If :py:obj:`True`, list all cameras in this group and child groups, otherwise only cameras of this group are returned. :type recursive: bool :returns: The list of cameras in the group. :rtype: list(Camera) .. py:method:: list_child_groups(recursive = True) List the child camera groups of this group. :param recursive: If :py:obj:`True`, list camera groups of this group recursively, otherwise only the direct child groups are returned. :type recursive: bool :returns: The list of child groups. :rtype: list(CameraGroup) .. py:method:: remove(force = False) Delete a camera group .. note:: By default, only empty groups can be deleted (:py:obj:`NotEmptyError` is raised otherwise), use ``force`` to force deletion of non empty groups. :param force: Force the deletion of the group even if it contains cameras and/or groups. :type force: bool :raises NotEmptyError: If ``force`` is :py:obj:`False` and the group contains cameras and/or groups. :raises ReadOnlyError: If :py:obj:`Database` is in read only mode.