fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Test for parenthood by looking for children instead of HTML.
[wolnelektury.git]
/
apps
/
oai
/
handlers.py
diff --git
a/apps/oai/handlers.py
b/apps/oai/handlers.py
index
59e599c
..
142b81f
100644
(file)
--- a/
apps/oai/handlers.py
+++ b/
apps/oai/handlers.py
@@
-1,3
+1,7
@@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
from oaipmh import server, common, metadata, error
from catalogue.models import Book, Tag
from api.models import Deleted
from oaipmh import server, common, metadata, error
from catalogue.models import Book, Tag
from api.models import Deleted
@@
-12,8
+16,11
@@
from lxml.etree import ElementTree
from django.db.models import Q
from django.conf import settings
from django.contrib.sites.models import Site
from django.db.models import Q
from django.conf import settings
from django.contrib.sites.models import Site
+from django.utils import timezone
+make_time_naive = lambda d: timezone.localtime(d).replace(tzinfo=None)
+
WL_DC_READER_XPATH = '(.|*)/rdf:RDF/rdf:Description/%s/text()'
wl_dc_reader = metadata.MetadataReader(
fields={
WL_DC_READER_XPATH = '(.|*)/rdf:RDF/rdf:Description/%s/text()'
wl_dc_reader = metadata.MetadataReader(
fields={
@@
-60,7
+67,7
@@
class Catalogue(common.ResumptionOAIPMH):
self.oai_id = "oai:" + Site.objects.get_current().domain + ":%s"
# earliest change
self.oai_id = "oai:" + Site.objects.get_current().domain + ":%s"
# earliest change
- year_zero =
datetime(1990, 1, 1, 0, 0, 0
)
+ year_zero =
timezone.make_aware(datetime(1990, 1, 1, 0, 0, 0), timezone.utc
)
try:
earliest_change = \
try:
earliest_change = \
@@
-91,12
+98,12
@@
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))
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,
book.changed_at
, [], False)
+ header = common.Header(identifier,
make_time_naive(book.changed_at)
, [], False)
if not headers_only:
meta = common.Metadata(self.metadata(book))
about = None
elif isinstance(book, Deleted):
if not headers_only:
meta = common.Metadata(self.metadata(book))
about = None
elif isinstance(book, Deleted):
- header = common.Header(identifier,
book.deleted_at
, [], True)
+ header = common.Header(identifier,
make_time_naive(book.deleted_at)
, [], True)
if not headers_only:
meta = common.Metadata({})
about = None
if not headers_only:
meta = common.Metadata({})
about = None
@@
-110,7
+117,7
@@
class Catalogue(common.ResumptionOAIPMH):
'%s/oaipmh' % WL_BASE, # generate
'2.0', # version
[m[1] for m in settings.MANAGERS], # adminEmails
'%s/oaipmh' % WL_BASE, # generate
'2.0', # version
[m[1] for m in settings.MANAGERS], # adminEmails
-
self.earliest_datestamp
, # earliest datestamp of any change
+
make_time_naive(self.earliest_datestamp)
, # earliest datestamp of any change
'persistent', # deletedRecord
'YYYY-MM-DDThh:mm:ssZ', # granularity
['identity'], # compression
'persistent', # deletedRecord
'YYYY-MM-DDThh:mm:ssZ', # granularity
['identity'], # compression