diff --git a/pelican/contents.py b/pelican/contents.py index 4655d4cc..bd257ad8 100644 --- a/pelican/contents.py +++ b/pelican/contents.py @@ -243,7 +243,9 @@ class Article(Page): class Quote(Page): base_properties = ('author', 'date') + @python_2_unicode_compatible +@functools.total_ordering class URLWrapper(object): def __init__(self, name, settings): self.name = name @@ -256,8 +258,20 @@ class URLWrapper(object): def __hash__(self): return hash(self.name) + def _key(self): + return self.name + + def _normalize_key(self, key): + return six.text_type(key) + def __eq__(self, other): - return self.name == other + return self._key() == self._normalize_key(other) + + def __ne__(self, other): + return self._key() != self._normalize_key(other) + + def __lt__(self, other): + return self._key() < self._normalize_key(other) def __str__(self): return self.name diff --git a/pelican/generators.py b/pelican/generators.py index ce102a31..49b6bc1d 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -416,11 +416,10 @@ class ArticlesGenerator(Generator): # order the categories per name self.categories = list(self.categories.items()) self.categories.sort( - key=lambda item: item[0].name, reverse=self.settings['REVERSE_CATEGORY_ORDER']) self.authors = list(self.authors.items()) - self.authors.sort(key=lambda item: item[0].name) + self.authors.sort() self._update_context(('articles', 'dates', 'tags', 'categories', 'tag_cloud', 'authors', 'related_posts'))