Source code for chrysalio.modules.cioskeleton.models.populate

"""Function to import and export database from and into XML files."""

from lxml import etree

from ....models.populate import element2db
from ..relaxng import RELAXNG_CIOSKELETON
from .dbbone import DBBone


# =============================================================================
[docs]def xml2db(dbsession, root_elt, only=None, error_if_exists=True, modules=None): """Load an XML configuration file for an included module. :type dbsession: sqlalchemy.orm.session.Session :param dbsession: SQLAlchemy session. :type root_elt: lxml.etree.Element :param root_elt: XML element with the namespace of the module. :param str only: (optional) If not ``None``, only the items of type ``only`` are loaded. :param bool error_if_exists: (default=True) It returns an error if an item already exists. :type modules: collections.OrderedDict :param modules: (optional) Dictionary of modules to use to complete the loading. :rtype: list :return: A list of error messages. """ # pylint: disable = unused-argument return element2db( dbsession, root_elt, only, error_if_exists, { 'tag': 'bone', 'class': DBBone, 'relaxng': RELAXNG_CIOSKELETON})
# =============================================================================
[docs]def db2xml(dbsession, root_elt): """Return a list of XML elements. :type dbsession: sqlalchemy.orm.session.Session :param dbsession: SQLAlchemy session. :type root_elt: lxml.etree._Element :param root_elt: XML element with the namespace of the module. """ dbbones = dbsession.query(DBBone).order_by('bone_id').all() if dbbones: bones_elt = etree.SubElement(root_elt, 'bones') for dbbone in dbbones: bones_elt.append(dbbone.db2xml())