def runningNewJobs(dbsession, logger): """ Runs the persistent georeference job for new georeference jobs :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :return: int Number of processed jobs """ logger.info('Check for unprocessed new georeference jobs ...') unprocessedJobs = Georeferenzierungsprozess.getUnprocessedObjectsOfTypeNew( dbsession) counter = 0 for job in unprocessedJobs: logger.info( 'Start processing of a "new" georeference process with id - %s' % job.id) georefObj = Georeferenzierungsprozess.clearRaceConditions( job, dbsession) mapObj = Map.by_id(georefObj.mapid, dbsession) activate(georefObj, mapObj, dbsession, logger) logger.info( 'Finish processing of a "new" georeference process with id - %s' % job.id) counter += 1 return counter
def runningUpdateJobs(dbsession, logger): """ Runs the persistent georeference job for update georeference jobs :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :return: int Number of processed jobs """ logger.info('Check for unprocessed update georeference jobs ...') unprocessedJobs = Georeferenzierungsprozess.getUnprocessedObjectsOfTypeUpdate(dbsession) counter = 0 for job in unprocessedJobs: logger.info('Start processing of a "update" georeference process with id - %s'%job.id) georefObj = Georeferenzierungsprozess.clearRaceConditions(job, dbsession) # get active georeference process and deactive him, if exist activeGeorefProcess = Georeferenzierungsprozess.getActualGeoreferenceProcessForMapId(georefObj.mapid, dbsession) mapObj = Map.by_id(georefObj.mapid, dbsession) if activeGeorefProcess: logger.info('Deactivate georeference processes with id %s ...'%activeGeorefProcess.id) deactivate(activeGeorefProcess, mapObj, dbsession, logger) logger.info('Activate georeference processes with id %s ...'%georefObj.id) activate(georefObj, mapObj, dbsession, logger) logger.info('Finish processing of a "update" georeference process with id - %s'%job.id) counter += 1 return counter
def setIsValide(job, dbsession, logger, testing = False): """ This function sets a georeference process as 'isvalide' and if there is no other newer georeference process for this map its activate this georeference process for this map. :type georeference.models.vkdb.adminjobs.AdminJobs: job :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :type boolean: testing (Default: False) """ logger.debug('Set georeference process for id %s to isvalide ...'%(job.georefid)) # set georeferenceprocess to isvalide georefProcess = Georeferenzierungsprozess.by_id(job.georefid, dbsession) # check if there is an other process which is newer and more up to date activeGeorefProcess = Georeferenzierungsprozess.getActualGeoreferenceProcessForMapId(georefProcess.mapid, dbsession) mapObj = Map.by_id(georefProcess.mapid, dbsession) if activeGeorefProcess and activeGeorefProcess.id >= georefProcess.id: logger.info('The georeference process with the id %s or younger process is already active for this map object.'%georefProcess.id) pass elif activeGeorefProcess and activeGeorefProcess.id < georefProcess.id: logger.info('Activate the is valide georeference process and deactive old one ...') deactivate(activeGeorefProcess, mapObj, dbsession, logger) activate(georefProcess, mapObj, dbsession, logger) else: logger.info('Activate georeference process %s for the map object %s ...'%(georefProcess.id, georefProcess.mapid)) activate(georefProcess, mapObj, dbsession, logger) if georefProcess.adminvalidation == 'invalide': mapObj.hasgeorefparams = mapObj.hasgeorefparams + 1 georefProcess.adminvalidation = 'isvalide'
def setInValide(job, dbsession, logger, testing=False): """ This function sets a georeference process as 'isvalide' and if there is no other newer georeference process for this map its activate this georeference process for this map. :type georeference.models.vkdb.adminjobs.AdminJobs: job :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :type boolean: testing (Default: False) """ logger.debug('Set georeference process for id %s to isvalide ...' % (job.georefid)) # set georeferenceprocess to isvalide georefProcess = Georeferenzierungsprozess.by_id(job.georefid, dbsession) # update map object and datasource mapObj = Map.by_id(georefProcess.mapid, dbsession) if georefProcess.isactive == True and georefProcess.overwrites > 0: logger.info( 'Deactive georeference process and activate georeference process with id %s ...' % georefProcess.overwrites) # deactive the georeference process deactivate(georefProcess, mapObj, dbsession, logger) # look if there is a valid overwrite id and if yes activate the matching # process newGeorefProcess = getLastValidGeoreferenceProcess( georefProcess.overwrites, dbsession, logger) if newGeorefProcess: activate(newGeorefProcess, mapObj, dbsession, logger) elif georefProcess.isactive == True and georefProcess.overwrites == 0: logger.info('Deactive georeference process %s ...' % georefProcess.overwrites) # deactive the georeference process deactivate(georefProcess, mapObj, dbsession, logger) logger.debug('Set georeference process with id %s to inactive ...' % georefProcess.overwrites) if georefProcess.adminvalidation != 'invalide': georefProcess.adminvalidation = 'invalide' mapObj.hasgeorefparams = 0 if mapObj.hasgeorefparams - 1 < 0 else mapObj.hasgeorefparams - 1
def runningNewJobs(dbsession, logger): """ Runs the persistent georeference job for new georeference jobs :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :return: int Number of processed jobs """ logger.info('Check for unprocessed new georeference jobs ...') unprocessedJobs = Georeferenzierungsprozess.getUnprocessedObjectsOfTypeNew(dbsession) counter = 0 for job in unprocessedJobs: logger.info('Start processing of a "new" georeference process with id - %s'%job.id) georefObj = Georeferenzierungsprozess.clearRaceConditions(job, dbsession) mapObj = Map.by_id(georefObj.mapid, dbsession) activate(georefObj, mapObj, dbsession, logger) logger.info('Finish processing of a "new" georeference process with id - %s'%job.id) counter += 1 return counter
def setIsValide(job, dbsession, logger, testing=False): """ This function sets a georeference process as 'isvalide' and if there is no other newer georeference process for this map its activate this georeference process for this map. :type georeference.models.vkdb.adminjobs.AdminJobs: job :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :type boolean: testing (Default: False) """ logger.debug('Set georeference process for id %s to isvalide ...' % (job.georefid)) # set georeferenceprocess to isvalide georefProcess = Georeferenzierungsprozess.by_id(job.georefid, dbsession) # check if there is an other process which is newer and more up to date activeGeorefProcess = Georeferenzierungsprozess.getActualGeoreferenceProcessForMapId( georefProcess.mapid, dbsession) mapObj = Map.by_id(georefProcess.mapid, dbsession) if activeGeorefProcess and activeGeorefProcess.id >= georefProcess.id: logger.info( 'The georeference process with the id %s or younger process is already active for this map object.' % georefProcess.id) pass elif activeGeorefProcess and activeGeorefProcess.id < georefProcess.id: logger.info( 'Activate the is valide georeference process and deactive old one ...' ) deactivate(activeGeorefProcess, mapObj, dbsession, logger) activate(georefProcess, mapObj, dbsession, logger) else: logger.info( 'Activate georeference process %s for the map object %s ...' % (georefProcess.id, georefProcess.mapid)) activate(georefProcess, mapObj, dbsession, logger) if georefProcess.adminvalidation == 'invalide': mapObj.hasgeorefparams = mapObj.hasgeorefparams + 1 georefProcess.adminvalidation = 'isvalide'
def runningUpdateJobs(dbsession, logger): """ Runs the persistent georeference job for update georeference jobs :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :return: int Number of processed jobs """ logger.info('Check for unprocessed update georeference jobs ...') unprocessedJobs = Georeferenzierungsprozess.getUnprocessedObjectsOfTypeUpdate( dbsession) counter = 0 for job in unprocessedJobs: logger.info( 'Start processing of a "update" georeference process with id - %s' % job.id) georefObj = Georeferenzierungsprozess.clearRaceConditions( job, dbsession) # get active georeference process and deactive him, if exist activeGeorefProcess = Georeferenzierungsprozess.getActualGeoreferenceProcessForMapId( georefObj.mapid, dbsession) mapObj = Map.by_id(georefObj.mapid, dbsession) if activeGeorefProcess: logger.info('Deactivate georeference processes with id %s ...' % activeGeorefProcess.id) deactivate(activeGeorefProcess, mapObj, dbsession, logger) logger.info('Activate georeference processes with id %s ...' % georefObj.id) activate(georefObj, mapObj, dbsession, logger) logger.info( 'Finish processing of a "update" georeference process with id - %s' % job.id) counter += 1 return counter
def setInValide(job, dbsession, logger, testing = False): """ This function sets a georeference process as 'isvalide' and if there is no other newer georeference process for this map its activate this georeference process for this map. :type georeference.models.vkdb.adminjobs.AdminJobs: job :type sqlalchemy.orm.session.Session: dbsession :type logging.Logger: logger :type boolean: testing (Default: False) """ logger.debug('Set georeference process for id %s to isvalide ...'%(job.georefid)) # set georeferenceprocess to isvalide georefProcess = Georeferenzierungsprozess.by_id(job.georefid, dbsession) # update map object and datasource mapObj = Map.by_id(georefProcess.mapid, dbsession) if georefProcess.isactive == True and georefProcess.overwrites > 0: logger.info('Deactive georeference process and activate georeference process with id %s ...'%georefProcess.overwrites) # deactive the georeference process deactivate(georefProcess, mapObj, dbsession, logger) # look if there is a valid overwrite id and if yes activate the matching # process newGeorefProcess = getLastValidGeoreferenceProcess(georefProcess.overwrites, dbsession, logger) if newGeorefProcess: activate(newGeorefProcess, mapObj, dbsession, logger) elif georefProcess.isactive == True and georefProcess.overwrites == 0: logger.info('Deactive georeference process %s ...'%georefProcess.overwrites) # deactive the georeference process deactivate(georefProcess, mapObj, dbsession, logger) logger.debug('Set georeference process with id %s to inactive ...'%georefProcess.overwrites) if georefProcess.adminvalidation != 'invalide': georefProcess.adminvalidation = 'invalide' mapObj.hasgeorefparams = 0 if mapObj.hasgeorefparams - 1 < 0 else mapObj.hasgeorefparams - 1
def testActivate(self): print "--------------------------------------------------------------------------------------------" print "\n" print "Test if testProcessGeorefImage runs correctly ..." key = activate(self.process, self.map, self.dbsession, self.logger) self.assertTrue(self.process.processed) self.assertTrue(self.map.isttransformiert) self.assertTrue(len(self.map.georefimage) > 10) # check if the record was added to elasticsearch and remove it when necessary response = getRecordFromEsById(key, ELASTICSEARCH_INDEX) self.assertEqual(response['found'], True, 'Could not find expected record') self.assertEqual(response['_id'], key, 'Key is not like expected') # clear up response = deleteRecordFromEsById(key, ELASTICSEARCH_INDEX) if response['found'] is not True: raise Exception( "Problems while trying to clean up elasticsearch test index")