Fixes #3934: Error on OAI-PMH list request.
[wolnelektury.git] / src / oai / handlers.py
index 6d0a9b2..16d7609 100644 (file)
@@ -56,7 +56,6 @@ def nsdcterms(name):
     return '{%s}%s' % (NS_DCTERMS, name)
 
 
-# WTF
 class Catalogue(common.ResumptionOAIPMH):
     TAG_CATEGORIES = ['author', 'epoch', 'kind', 'genre']
 
@@ -70,7 +69,7 @@ class Catalogue(common.ResumptionOAIPMH):
         year_zero = timezone.make_aware(datetime(1990, 1, 1, 0, 0, 0), timezone.utc)
 
         try:
-            earliest_change = Book.objects.order_by('changed_at')[0].changed_at
+            earliest_change = Book.objects.filter(preview=False).order_by('changed_at')[0].changed_at
         except IndexError:
             earliest_change = year_zero
 
@@ -99,14 +98,14 @@ class Catalogue(common.ResumptionOAIPMH):
         identifier = self.slug_to_identifier(book.slug)
         if isinstance(book, Book):
             # setSpec = map(self.tag_to_setspec, book.tags.filter(category__in=self.TAG_CATEGORIES))
-            header = common.Header(identifier, make_time_naive(book.changed_at), [], False)
+            header = common.Header(None, identifier, make_time_naive(book.changed_at), [], False)
             if not headers_only:
-                meta = common.Metadata(self.metadata(book))
+                meta = common.Metadata(None, self.metadata(book))
             about = None
         elif isinstance(book, Deleted):
-            header = common.Header(identifier, make_time_naive(book.deleted_at), [], True)
+            header = common.Header(None, identifier, make_time_naive(book.deleted_at), [], True)
             if not headers_only:
-                meta = common.Metadata({})
+                meta = common.Metadata(None, {})
             about = None
         else:
             raise TypeError('Unknown book class')
@@ -117,7 +116,7 @@ class Catalogue(common.ResumptionOAIPMH):
     def identify(self, **kw):
         ident = common.Identify(
             'Wolne Lektury',  # generate
-            '%s/oaipmh' % unicode(WL_BASE),  # generate
+            '%s/oaipmh' % str(WL_BASE),  # generate
             '2.0',  # version
             [m[1] for m in settings.MANAGERS],  # adminEmails
             make_time_naive(self.earliest_datestamp),  # earliest datestamp of any change
@@ -134,7 +133,7 @@ class Catalogue(common.ResumptionOAIPMH):
             raise error.NoSetHierarchyError("Wolne Lektury does not support sets.")
             # books = Book.tagged.with_all([tag])
         else:
-            books = Book.objects.all()
+            books = Book.objects.filter(preview=False)
         deleted = Deleted.objects.exclude(slug__exact=u'')
 
         books = books.order_by('changed_at')