def clearRaceConditions(cls, georefObj, dbsession):
     """ Function clears race condition for a given process process
     
     :type cls: georeference.models.vkdb.georeferenzierungsprozess.Georeferenzierungsprozess
     :type georefObj: georeference.models.vkdb.georeferenzierungsprozess.Georeferenzierungsprozess
     :type dbsession: sqlalchemy.orm.session.Session
     :return: georeference.models.vkdb.georeferenzierungsprozess.Georeferenzierungsprozess """
     concurrentObjs = dbsession.query(Georeferenzierungsprozess).filter(Georeferenzierungsprozess.mapid == georefObj.mapid)\
         .filter(Georeferenzierungsprozess.type == georefObj.type)\
         .filter(Georeferenzierungsprozess.overwrites == georefObj.overwrites)\
         .order_by(desc(Georeferenzierungsprozess.timestamp)).all()
         
     # there are no race conflicts
     if len(concurrentObjs) == 1:
         return georefObj
     
     # there are race conflicts
     for i in range(1, len(concurrentObjs)):
         # check if there is a adminjob for this process and delete it first
         adminjobs = AdminJobs.allForGeoreferenceid(concurrentObjs[i].id, dbsession)
         for adminjob in adminjobs:
             dbsession.delete(adminjob)
         dbsession.flush()
         dbsession.delete(concurrentObjs[i])
     return concurrentObjs[0]
def createNewAdminJob(georeferenceprocess, setto, userid, comment):
    return AdminJobs(georefid=georeferenceprocess.id,
                     processed=False,
                     setto=setto,
                     timestamp=convertTimestampToPostgisString(datetime.now()),
                     comment=comment,
                     userid=userid)
def runningAdminJobs(dbsession, logger):
    """ Runs new admin jobs

    :type sqlalchemy.orm.session.Session: dbsession
    :type logging.Logger: logger
    """
    logger.info('Check for admin jobs')
    jobs = AdminJobs.getUnprocessedJobs(dbsession)

    # process jobs
    for job in jobs:
        if job.setto == 'isvalide':
            setIsValide(job, dbsession, logger)
            job.processed = True
        elif job.setto == 'invalide':
            setInValide(job, dbsession, logger)
            job.processed = True
def runningAdminJobs(dbsession, logger):
    """ Runs new admin jobs

    :type sqlalchemy.orm.session.Session: dbsession
    :type logging.Logger: logger
    """
    logger.info('Check for admin jobs')
    jobs = AdminJobs.getUnprocessedJobs(dbsession)

    # process jobs
    for job in jobs:
        if job.setto == 'isvalide':
            setIsValide(job, dbsession, logger)
            job.processed = True
        elif job.setto == 'invalide':
            setInValide(job, dbsession, logger)
            job.processed = True