X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/918a554570309fdddb8158b963fef3b3ae3c2c2b..edbda465ca1fceabe219d5caea95d513d61c6976:/librarian/__init__.py?ds=inline 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