Source code for ocrd_models.ocrd_agent

"""
API to ``mets:agent``
"""
#  import os
from .constants import NAMESPACES as NS, TAG_METS_AGENT, TAG_METS_NAME
from .ocrd_xml_base import ET

[docs]class OcrdAgent(): """ Represents a <mets:agent> """ # @staticmethod # from_el(el): # role = el_agent.get('ROLE') # _type = el_agent.get('TYPE') # otherrole = el_agent.get('OTHERROLE') # name_parts = string.split(el.find('mets:name', NS).text, ' ', 2) # # name = name_parts[0] # # version = name_parts[1][1:] # v0.0.1 => 0.0.1 # return OcrdAgent(el, name, role, _type, otherrole) def __init__(self, el=None, name=None, _type=None, othertype=None, role=None, otherrole=None): """ Args: el (LxmlElement): name (string): _type (string): othertype (string): role (string): otherrole (string): """ if el is None: el = ET.Element(TAG_METS_AGENT) self._el = el self.name = name self.type = _type self.othertype = othertype self.role = role self.otherrole = otherrole def __str__(self): """ String representation """ props = ', '.join([ '='.join([k, getattr(self, k) if getattr(self, k) else '---']) for k in ['type', 'othertype', 'role', 'otherrole', 'name'] ]) return '<OcrdAgent [' + props + ']/>' @property def type(self): """ Get the ``TYPE`` attribute value. """ return self._el.get('TYPE') @type.setter def type(self, _type): """ Set the ``TYPE`` attribute value. """ if _type is not None: self._el.set('TYPE', _type) @property def othertype(self): """ Get the ``OTHERTYPE`` attribute value. """ return self._el.get('OTHERTYPE') @othertype.setter def othertype(self, othertype): """ Set the ``OTHERTYPE`` attribute value. """ if othertype is not None: self._el.set('TYPE', 'OTHER') self._el.set('OTHERTYPE', othertype) @property def role(self): """ Get the ``ROLE`` attribute value. """ return self._el.get('ROLE') @role.setter def role(self, role): """ Set the ``ROLE`` attribute value. """ if role is not None: self._el.set('ROLE', role) @property def otherrole(self): """ Get the ``OTHERROLE`` attribute value. """ return self._el.get('OTHERROLE') @otherrole.setter def otherrole(self, otherrole): """ Get the ``OTHERROLE`` attribute value. """ if otherrole is not None: self._el.set('ROLE', 'OTHER') self._el.set('OTHERROLE', otherrole) @property def name(self): """ Get the ``mets:name`` element value. """ el_name = self._el.find('mets:name', NS) if el_name is not None: return el_name.text @name.setter def name(self, name): """ Get the ``mets:name`` element value. """ if name is not None: el_name = self._el.find('mets:name', NS) if el_name is None: el_name = ET.SubElement(self._el, TAG_METS_NAME) el_name.text = name