def getObjectId(request):
     """ Parse the object id from the request.
     
     :type request: pyramid.request
     :return: int """
     objectid = None
     if request.method == 'POST' and 'objectid' in request.json_body:
         objectid = request.json_body['objectid']
     if request.method == 'GET' and 'objectid' in request.params:
         objectid = request.params['objectid']
         
     if objectid is None:
         return None
     else:
         namespace, id = objectid.rsplit('-', 1)
         
         # check if it is the correct namespace
         if namespace == OAI_ID_PATTERN.rsplit('-', 1)[0]:
             return int(id)
     return None
Пример #2
0
def adminEvaluationGeoreferenceProcess(request):
    try:
        LOGGER.info('Request - Get georeference processes.')

        if 'mapid' in request.params:
            LOGGER.debug('Get processes for mapid %s ...'%request.params['mapid'])
            # parse the id
            mapid = None
            if '-' in request.params['mapid']:
                namespace, mapid = request.params['mapid'].rsplit('-', 1)
                # check if it is the correct namespace
                if namespace != OAI_ID_PATTERN.rsplit('-', 1)[0]:
                    return []
            queryData = request.db.query(Georeferenzierungsprozess, Metadata).join(Metadata, Georeferenzierungsprozess.mapid == Metadata.mapid)\
                .filter(Georeferenzierungsprozess.mapid == mapid)\
                .order_by(desc(Georeferenzierungsprozess.id))
        elif 'userid' in request.params:
            LOGGER.debug('Get processes for userid %s ...'%request.params['userid'])
            queryData = request.db.query(Georeferenzierungsprozess, Metadata).join(Metadata, Georeferenzierungsprozess.mapid == Metadata.mapid)\
                .filter(Georeferenzierungsprozess.nutzerid == request.params['userid'])\
                .order_by(desc(Georeferenzierungsprozess.id))
        elif 'validation' in request.params:
            LOGGER.debug('Get processes for adminvalidation %s ...'%request.params['validation'])
            queryData = request.db.query(Georeferenzierungsprozess, Metadata).join(Metadata, Georeferenzierungsprozess.mapid == Metadata.mapid)\
                .filter(Georeferenzierungsprozess.adminvalidation == request.params['validation'])\
                .order_by(desc(Georeferenzierungsprozess.id))
        else:
            LOGGER.debug('Get all pending processes ...')
            queryData = request.db.query(Georeferenzierungsprozess, Metadata).join(Metadata, Georeferenzierungsprozess.mapid == Metadata.mapid)\
                .filter(or_(Georeferenzierungsprozess.adminvalidation == '', Georeferenzierungsprozess.adminvalidation == None))\
                .order_by(desc(Georeferenzierungsprozess.id))

        response = []
        for record in queryData:
            georef = record[0]
            metadata = record[1]
            dict = {
                    'georef_id':georef.id,
                    'mapid':georef.mapid,
                    'georef_params': georef.georefparams,
                    'time': str(metadata.timepublish),
                    'processed': georef.processed,
                    'adminvalidation': georef.adminvalidation,
                    'title': metadata.title,
                    'apsobjectid': georef.messtischblattid,
                    'georef_time':str(georef.timestamp),
                    'type':georef.type,
                    'userid': georef.nutzerid,
                    'georef_isactive':georef.isactive
                }

            if georef.clip is not None:
                dict['clippolygon'] = {
                    'source': 'EPSG:%s' % georef.getSRIDClip(request.db),
                    'polygon': convertPostgisStringToList(georef.clip)
                }

            response.append(dict)
        return response
    except Exception as e:
        LOGGER.error(e)
        LOGGER.error(traceback.format_exc())
        return HTTPInternalServerError(GENERAL_ERROR_MESSAGE)