X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/e870e40d5fb975ba9ec0ec327014b3d16eea51e4..261a3308d235fc252f30ae03603d0e964bb60223:/src/librarian/document.py diff --git a/src/librarian/document.py b/src/librarian/document.py index 1c8f223..0dbb14f 100644 --- a/src/librarian/document.py +++ b/src/librarian/document.py @@ -1,16 +1,16 @@ import gettext import os import re -from urllib.request import urlopen from lxml import etree +import six from .parser import parser -from . import dcparser, DCNS +from . import dcparser, DCNS, DirDocProvider from .functions import lang_code_3to2 class WLDocument: - def __init__(self, filename=None, url=None): - source = filename or urlopen(url) + def __init__(self, filename=None, url=None, provider=None): + source = filename or six.moves.urllib.request.urlopen(url) tree = etree.parse(source, parser=parser) self.tree = tree tree.getroot().document = self @@ -18,6 +18,8 @@ class WLDocument: DCNS('language'): ["pol"], }, validate_required=False) + self.provider = provider if provider is not None else DirDocProvider('.') + @property def meta(self): # Allow metadata of the master element as document meta. @@ -25,6 +27,15 @@ class WLDocument: return self.tree.getroot().meta return master.meta + @property + def children(self): + for part_uri in self.meta.parts or []: + yield type(self)( + filename=self.provider.by_uri(part_uri), + provider=self.provider + ) + + def build(self, builder, **kwargs): return builder().build(self, **kwargs) @@ -66,3 +77,13 @@ class WLDocument: _compat_assigns_section_ids_in_elem(child, idfier + '-') _compat_assigns_section_ids_in_elem(self.tree.getroot().master) + + def editors(self): + persons = set(self.meta.editors + + self.meta.technical_editors) + #for child in self.parts(): + # persons.update(child.editors()) + #if None in persons: + # persons.remove(None) + return persons +