fnp
/
librarian.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
set language
[librarian.git]
/
librarian
/
__init__.py
diff --git
a/librarian/__init__.py
b/librarian/__init__.py
index
52234fe
..
42bc518
100644
(file)
--- 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/'
example = 'http://wolnelektury.pl/katalog/lektura/template/'
_re_wl_uri = re.compile('http://wolnelektury.pl/katalog/lektura/'
- '(?P<slug>[-a-z
]+)(/(?P<lang>[a-z]{3})/?)?
')
+ '(?P<slug>[-a-z
0-9]+)(/(?P<lang>[a-z]{3}))?/?$
')
def __init__(self, uri=None):
if uri is not None:
def __init__(self, uri=None):
if uri is not None:
+ uri = unicode(uri)
self.uri = uri
match = self._re_wl_uri.match(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
self.slug = match.group('slug')
self.language = match.group('lang') or self.DEFAULT_LANGUAGE
@@
-89,25
+92,24
@@
class WLURI(object):
"""Contructs an URI from slug and language code.
>>> WLURI.from_slug_and_lang('a-slug', WLURI.DEFAULT_LANGUAGE).uri
"""Contructs an URI from slug and language code.
>>> WLURI.from_slug_and_lang('a-slug', WLURI.DEFAULT_LANGUAGE).uri
- 'http://wolnelektury.pl/katalog/lektura/a-slug/'
+
u
'http://wolnelektury.pl/katalog/lektura/a-slug/'
>>> WLURI.from_slug_and_lang('a-slug', 'deu').uri
>>> WLURI.from_slug_and_lang('a-slug', 'deu').uri
- 'http://wolnelektury.pl/katalog/lektura/a-slug/deu/'
+
u
'http://wolnelektury.pl/katalog/lektura/a-slug/deu/'
"""
if lang is None:
"""
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 + '/'
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 __unicode__(self):
return self.uri
+ def __str__(self):
+ return self.uri
+
def __eq__(self, other):
return self.slug, self.language == other.slug, other.language
def __eq__(self, other):
return self.slug, self.language == other.slug, other.language
@@
-136,9
+138,9
@@
class DocProvider(object):
"""Should return a file-like object with a WL document XML."""
return self.by_slug_and_lang(slug)
"""Should return a file-like object with a WL document XML."""
return self.by_slug_and_lang(slug)
- def by_uri(self, uri):
+ def by_uri(self, uri
, wluri=WLURI
):
"""Should return a file-like object with a WL document XML."""
"""Should return a file-like object with a WL document XML."""
- wluri =
WLURI
(uri)
+ wluri =
wluri
(uri)
return self.by_slug_and_lang(wluri.slug, wluri.language)
return self.by_slug_and_lang(wluri.slug, wluri.language)