def watch_registry_harvest_task(): """Check each WATCH_REGISTRY_HARVEST_RATE seconds if new registries need to be harvested.""" from core_oaipmh_harvester_app.components.oai_registry import ( api as oai_registry_api, ) try: logger.info("START watching registries.") registries = oai_registry_api.get_all_activated_registry() # We launch the background task for each registry for registry in registries: # If we need to harvest and a task doesn't already exist for this # registry. if registry.harvest and not registry.is_queued: harvest_task.apply_async((str(registry.id), )) registry.is_queued = True oai_registry_api.upsert(registry) logger.info( f"Registry {registry.name} has been queued and will be " f"harvested.") logger.info("FINISH watching registries.") except Exception as e: logger.error( f"ERROR : Error while watching new registries to harvest: {str(e)}" ) finally: # Periodic call every WATCH_REGISTRY_HARVEST_RATE seconds watch_registry_harvest_task.apply_async( countdown=WATCH_REGISTRY_HARVEST_RATE)
def patch(self, request, registry_id): """Deactivate a given registry (Data provider) Args: request: HTTP request registry_id: ObjectId Returns: - code: 200 content: Success message - code: 404 content: Object was not found - code: 500 content: Internal server error """ try: registry = oai_registry_api.get_by_id(registry_id) registry.is_activated = False oai_registry_api.upsert(registry) content = OaiPmhMessage.get_message_labelled( "Registry {0} deactivated with success.".format(registry.name)) return Response(content, status=status.HTTP_200_OK) except exceptions.DoesNotExist: content = OaiPmhMessage.get_message_labelled( "No registry found with the given id.") return Response(content, status=status.HTTP_404_NOT_FOUND) except exceptions_oai.OAIAPIException as e: return e.response() except Exception as e: content = OaiPmhMessage.get_message_labelled(str(e)) return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def watch_registry_harvest_task(): """ Check each WATCH_REGISTRY_HARVEST_RATE seconds if new registries need to be harvested. """ try: logger.info('START watching registries.') registries = oai_registry_api.get_all_activated_registry() # We launch the background task for each registry for registry in registries: # If we need to harvest and a task doesn't already exist for this registry. if registry.harvest and not registry.is_queued: harvest_task.apply_async((str(registry.id), )) registry.is_queued = True oai_registry_api.upsert(registry) logger.info( 'Registry {0} has been queued and will be harvested.'. format(registry.name.encode("utf-8"))) logger.info('FINISH watching registries.') except Exception as e: logger.error( 'ERROR : Error while watching new registries to harvest: {0}'. format(e.message)) finally: # Periodic call every WATCH_REGISTRY_HARVEST_RATE seconds watch_registry_harvest_task.apply_async( countdown=WATCH_REGISTRY_HARVEST_RATE)
def _stop_harvest_registry(registry): """ Stop the harvest process for the given registry. Args: registry: Registry to stop harvest process. """ try: registry.is_queued = False oai_registry_api.upsert(registry) logger.info('Harvesting for Registry {0} has been deactivated.'.format(registry.name)) except Exception as e: logger.error('ERROR : Error while stopping the harvest process for the registry {0}: ' '{1}.'.format(registry.name, str(e)))
def init_harvest(): """ Init harvest process. """ # Revoke all scheduled tasks _revoke_all_scheduled_tasks() # Init all registry is_queued to False in case of a server reboot after an issue. registries = oai_registry_api.get_all_activated_registry() for registry in registries: registry.is_queued = False oai_registry_api.upsert(registry) # Watch Registries watch_registry_harvest_task.apply_async()
def activate_registry(request): """ Activate a registry. Args: request: Returns: """ try: registry = oai_registry_api.get_by_id(request.GET['id']) registry.is_activated = True oai_registry_api.upsert(registry) except Exception, e: return HttpResponseBadRequest(e.message, content_type='application/javascript')
def test_upsert_oai_registry_raises_exception_if_save_failed( self, mock_save): """ Args: mock_save: Returns: """ # Arrange mock_save.side_effect = Exception() # Act + Assert with self.assertRaises(Exception): registry_api.upsert(self.oai_registry)
def deactivate_registry(request): """ Deactivate a registry. Args: request: Returns: """ try: registry = oai_registry_api.get_by_id(request.GET['id']) registry.is_activated = False oai_registry_api.upsert(registry) except Exception as e: return HttpResponseBadRequest(str(e), content_type='application/javascript') return HttpResponse(json.dumps({}), content_type='application/javascript')
def activate_registry(request): """Activate a registry. Args: request: Returns: """ try: registry = oai_registry_api.get_by_id(request.GET["id"]) registry.is_activated = True oai_registry_api.upsert(registry) except Exception as e: return HttpResponseBadRequest(escape(str(e)), content_type="application/javascript") return HttpResponse(json.dumps({}), content_type="application/javascript")
def _stop_harvest_registry(registry): """Stop the harvest process for the given registry. Args: registry: Registry to stop harvest process. """ from core_oaipmh_harvester_app.components.oai_registry import ( api as oai_registry_api, ) try: registry.is_queued = False oai_registry_api.upsert(registry) logger.info( f"Harvesting for Registry {registry.name} has been deactivated.") except Exception as e: logger.error( f"ERROR : Error while stopping the harvest process for the registry " f"{registry.name}: {str(e)}.")
def _save(self, form): # Save treatment. try: oai_registry_api.upsert(self.object) except Exception, e: form.add_error(None, e.message)
def update(self, instance, validated_data): instance.harvest_rate = validated_data.get('harvest_rate', instance.harvest_rate) instance.harvest = validated_data.get('harvest', instance.harvest) return oai_registry_api.upsert(instance)