From 60280c39249062017de4cc5fc34371c0880f0bc7 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Wed, 13 Mar 2019 15:56:49 -0300 Subject: [PATCH] Conserta request com range de datas --- sapl/lexml/OAIServer.py | 33 +++++++++++++++++---------------- sapl/lexml/views.py | 2 +- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/sapl/lexml/OAIServer.py b/sapl/lexml/OAIServer.py index 2e9366391..2a5745d67 100644 --- a/sapl/lexml/OAIServer.py +++ b/sapl/lexml/OAIServer.py @@ -26,8 +26,9 @@ class OAILEXML: def __call__(self, element, metadata): data = metadata.record - value = etree.XML(data['metadata']) - element.append(value) + if data['metadata']: + value = etree.XML(data['metadata']) + element.append(value) class OAIServer: @@ -64,22 +65,22 @@ class OAIServer: metadata.record = record return header, metadata - def list_query(self, from_date=None, until_date=None, offset=0, batch_size=10, identifier=None): + def list_query(self, from_=None, until=None, offset=0, batch_size=10, identifier=None): if identifier: identifier = int(identifier.split('/')[-1]) # Get internal id else: identifier = '' - until_date = datetime.now() if not until_date or until_date > datetime.now() else until_date - return self.oai_query(offset=offset, batch_size=batch_size, from_date=from_date, until_date=until_date, + until = datetime.now() if not until or until > datetime.now() else until + return self.oai_query(offset=offset, batch_size=batch_size, from_=from_, until=until, identifier=identifier) def check_metadata_prefix(self, metadata_prefix): if not metadata_prefix in self.config['metadata_prefixes']: raise oaipmh.error.CannotDisseminateFormatError - def listRecords(self, metadataPrefix, from_date=None, until_date=None, cursor=0, batch_size=10): + def listRecords(self, metadataPrefix, from_=None, until=None, cursor=0, batch_size=10): self.check_metadata_prefix(metadataPrefix) - for record in self.list_query(from_date, until_date, cursor, batch_size): + for record in self.list_query(from_, until, cursor, batch_size): header, metadata = self.create_header_and_metadata(record) yield header, metadata, None # None? @@ -98,10 +99,10 @@ class OAIServer: appconfig = AppConfig.objects.first() return appconfig.esfera_federacao - def recupera_norma(self, offset, batch_size, from_date, until_date, identifier, esfera): - kwargs = {'data__lte': until_date} - if from_date: - kwargs['data__gte'] = from_date + def recupera_norma(self, offset, batch_size, from_, until, identifier, esfera): + kwargs = {'data__lte': until} + if from_: + kwargs['data__gte'] = from_ if identifier: kwargs['numero'] = identifier if esfera: @@ -144,9 +145,9 @@ class OAIServer: else: urn += '{};'.format(norma.data.isoformat()) if norma.tipo.equivalente_lexml == 'lei.organica' or norma.tipo.equivalente_lexml == 'constituicao': - urn += norma.ano + urn += str(norma.ano) else: - urn += norma.numero + urn += str(norma.numero) if norma.data_vigencia and norma.data_publicacao: urn += '@{};publicacao;{}'.format(norma.data_vigencia.isoformat(), norma.data_publicacao.isoformat()) elif norma.data_publicacao: @@ -213,12 +214,12 @@ class OAIServer: else: return None - def oai_query(self, offset=0, batch_size=10, from_date=None, until_date=None, identifier=None): + def oai_query(self, offset=0, batch_size=10, from_=None, until=None, identifier=None): esfera = self.get_esfera_federacao() offset = 0 if offset < 0 else offset batch_size = 10 if batch_size < 0 else batch_size - until_date = datetime.now() if not until_date or until_date > datetime.now() else until_date - normas = self.recupera_norma(offset, batch_size, from_date, until_date, identifier, esfera) + until = datetime.now() if not until or until > datetime.now() else until + normas = self.recupera_norma(offset, batch_size, from_, until, identifier, esfera) for norma in normas: resultado = {} identificador = self.monta_id(norma) diff --git a/sapl/lexml/views.py b/sapl/lexml/views.py index 200460bbc..46945aa2c 100644 --- a/sapl/lexml/views.py +++ b/sapl/lexml/views.py @@ -27,4 +27,4 @@ def lexml_request(request): def request_search(request, keyword): - return render(request, "lexml/resultado-pesquisa.html", {"keyword":keyword}) + return render(request, "lexml/resultado-pesquisa.html", {"keyword": keyword})