From: Radek Czajka Date: Wed, 7 Dec 2011 15:38:01 +0000 (+0100) Subject: some WLURI related fixes X-Git-Tag: 1.7~185 X-Git-Url: https://git.mdrn.pl/librarian.git/commitdiff_plain/edbda465ca1fceabe219d5caea95d513d61c6976?ds=inline some WLURI related fixes --- diff --git a/librarian/__init__.py b/librarian/__init__.py index 52234fe..9fe0c52 100644 --- a/librarian/__init__.py +++ b/librarian/__init__.py @@ -74,13 +74,16 @@ class WLURI(object): example = 'http://wolnelektury.pl/katalog/lektura/template/' _re_wl_uri = re.compile('http://wolnelektury.pl/katalog/lektura/' - '(?P[-a-z]+)(/(?P[a-z]{3})/?)?') + '(?P[-a-z0-9]+)(/(?P[a-z]{3}))?/?$') def __init__(self, uri=None): if uri is not None: + uri = unicode(uri) self.uri = uri match = self._re_wl_uri.match(uri) - assert match + if not match: + raise ValueError('Supplied URI (%s) does not match ' + 'the WL document URI template.' % uri) self.slug = match.group('slug') self.language = match.group('lang') or self.DEFAULT_LANGUAGE @@ -95,19 +98,18 @@ class WLURI(object): """ if lang is None: - lang = self.DEFAULT_LANGUAGE + lang = cls.DEFAULT_LANGUAGE uri = 'http://wolnelektury.pl/katalog/lektura/%s/' % slug if lang is not None and lang != cls.DEFAULT_LANGUAGE: uri += lang + '/' - instance = cls() - instance.slug = slug - instance.language = lang - instance.uri = uri - return instance + return cls(uri) def __unicode__(self): return self.uri + def __str__(self): + return self.uri + def __eq__(self, other): return self.slug, self.language == other.slug, other.language diff --git a/librarian/dcparser.py b/librarian/dcparser.py index ae8466c..992029e 100644 --- a/librarian/dcparser.py +++ b/librarian/dcparser.py @@ -142,7 +142,7 @@ class BookInfo(object): Field( DCNS('source'), 'source_name', required=False), Field( DCNS('source.URL'), 'source_url', required=False), Field( DCNS('identifier.url'), 'url', WLURI), - Field( DCNS('relation.hasPart'), 'parts', multiple=True, required=False), + Field( DCNS('relation.hasPart'), 'parts', WLURI, multiple=True, required=False), Field( DCNS('rights.license'), 'license', required=False), Field( DCNS('rights'), 'license_description'), Field( DCNS('language'), 'language'),