Source code for opc.types

from .base import Base, XmlBase
from .uri import Uri


[docs] class Types(XmlBase, Base): """Class representing the "[Content_Types].xml" file in the |package|. Inherits XmlBase and Base classes """ zipname = '[Content_Types].xml' def __init__(self, parent): Base.__init__(self, parent) XmlBase.__init__(self)
[docs] def remove_type(self, uri_str): """Removes the type for given uri_str. If uri_str presents in Override elements of xml, that Override element would be removed. Otherwise Default element would be removed having the same extension as uri_str. :param uri_str: string value of the part's uri """ for e in self.e.findall('{*}Override'): if e.get('PartName') == uri_str: e.getparent().remove(e) return extension = Uri(uri_str).ext for e in self.e.findall('{*}Default'): if e.get('Extension').lower() == extension.lower(): e.getparent().remove(e) return
[docs] def get_type(self, uri_str): """Returns the type of given uri_str. First Override elements in xml are checked for match then Default elements are checked :param uri_str: string value of the part's uri :returns: string value of the type of the given uri_str """ for e in self.e.findall('{*}Override'): if e.get('PartName') == uri_str: return e.get('ContentType') extension = Uri(uri_str).ext for e in self.e.findall('{*}Default'): if e.get('Extension').lower() == extension.lower(): return e.get('ContentType')
[docs] def add_default(self, part): """Adds the content type and extension of the part to the xml :param part: |part| object """ attrib = {'Extension': part.uri.ext, 'ContentType': part.type} for e in self.e.findall('{*}Default'): if e.attrib == attrib: return self.e.insert(0, self.parser.makeelement(self.e.qn('Default'), **attrib))
[docs] def add_override(self, part): """Add the uri_str and type of the part to the xml :param part: part object """ attrib = {'PartName': part.uri.str, 'ContentType': part.type} for e in self.e.findall('{*}Override'): if e.attrib == attrib: return self.e.append(self.parser.makeelement(self.e.qn('Override'), **attrib))