def getTextSearch(sFilter, model , JsonField):

    #   Busqueda Textual ( no viene con ningun tipo de formato solo el texto a buscar
    #   Si no trae nada deja el Qs con el filtro de base
    #   Si trae algo y comienza por  "{" trae la estructura del filtro

    # Si solo viene el texto, se podria tomar la "lista" de campos "mostrados"
    # ya los campos q veo deben coincidir con el criterio, q pasa con los __str__ ??
    # Se busca sobre los campos del combo ( filtrables  )

    QStmt = None

    try:
        pSearchFields = model.protoMeta['gridConfig']['searchFields']
        fieldsDict = list2dict(model.protoMeta[ 'fields' ], 'name')
    except:
        pSearchFields = getSearcheableFields(model)
        fieldsDict = {}


    for fName in pSearchFields:
        fAux = fieldsDict.get(fName, {})
        if fAux.get('type', '')  not in [ 'string', 'text', 'jsonfield' ]: 
            continue

        QTmp = addQbeFilterStmt({'property': fName, 'filterStmt': sFilter['filterStmt'] } , model, JsonField)

        if QStmt is None:  
            QStmt = QTmp
        else: 
            QStmt = QStmt | QTmp

    return QStmt
Beispiel #2
0
def getTextSearch(sFilter, model, JsonField):

    #   Busqueda Textual ( no viene con ningun tipo de formato solo el texto a buscar
    #   Si no trae nada deja el Qs con el filtro de base
    #   Si trae algo y comienza por  "{" trae la estructura del filtro

    # Si solo viene el texto, se podria tomar la "lista" de campos "mostrados"
    # ya los campos q veo deben coincidir con el criterio, q pasa con los __str__ ??
    # Se busca sobre los campos del combo ( filtrables  )

    QStmt = None

    try:
        pSearchFields = model.protoMeta['gridConfig']['searchFields']
        fieldsDict = list2dict(model.protoMeta['fields'], 'name')
    except:
        pSearchFields = getSearcheableFields(model)
        fieldsDict = {}

    for fName in pSearchFields:
        fAux = fieldsDict.get(fName, {})
        if fAux.get('type', '') not in ['string', 'text', 'jsonfield']:
            continue

        QTmp = addQbeFilterStmt(
            {
                'property': fName,
                'filterStmt': sFilter['filterStmt']
            }, model, JsonField)

        if QStmt is None:
            QStmt = QTmp
        else:
            QStmt = QStmt | QTmp

    return QStmt
def createProtoMeta(model, grid, viewEntity , viewCode):

    # Los criterios de busqueda ni los ordenamientos son heredados del admin, 
    pSearchFields = grid.gridConfig.get('searchFields', []) 
    if len(pSearchFields) == 0:
        pSearchFields = getSearcheableFields(model)

    pSortFields = grid.gridConfig.get('sortFields', []) 
    if len(pSortFields) == 0:
        pSortFields = getSearcheableFields(model)

    # Lista de campos precedidos con '-' para order desc  ( 'campo1' , '-campo2' )
    # * o [{ "property": "code", "direction": "ASC" }, {  
    initialSort = grid.gridConfig.get('initialSort', ())
    sortInfo = []
    for sField in initialSort:
        # Si es un string lo convierte en objeto 
        if type(sField).__name__ == type('').__name__ :  
            sortOrder = 'ASC'
            if sField[0] == '-':
                sortOrder = 'DESC'
                sField = sField[1:]
            sField = { 'property': sField, 'direction' : sortOrder }
            
        sortInfo.append(sField)


    # ----------- Completa las propiedades del gridConfig 
    gridConfig = { 
             'searchFields': pSearchFields,
             'sortFields': pSortFields,
             'initialSort': sortInfo,

             # Si no es autoload  -  '{"pk" : 0,}'            
             'baseFilter': grid.gridConfig.get('baseFilter', []),
             'initialFilter': grid.gridConfig.get('initialFilter', []),

             # Toma las definidas en la grilla 
             'listDisplay' : grid.gridConfig.get('listDisplay', []),
             'readOnlyFields' : grid.gridConfig.get('readOnlyFields', []),
             
             # Garantiza q existan en la definicion 
             'hideRowNumbers' : grid.gridConfig.get('hideRowNumbers', False),
             'filterSetABC': grid.gridConfig.get('filterSetABC', ''),

             'hiddenFields': grid.protoMeta.get('hiddenFields', ['id', ]),
         } 

    #---------- Ahora las propiedades generales de la PCI 
    viewIcon = grid.protoMeta.get('viewIcon', 'icon-1') 

    pDescription = grid.protoMeta.get('description', '')
    if len(pDescription) == 0:
        pDescription = grid.protoMeta.get('title', grid.title)
    
    # FIX: busca el id en la META  ( id_field = model._meta.pk.name ) 
    id_field = u'id'
    shortTitle = grid.protoMeta.get('shortTitle', grid.title),

    # Manejo de documentos rai          
    if getattr(model, '_uddObject', False ):
        dBase = getattr(model, '_jDefValueDoc', False )    
        idType = ''

        try: 
            idType =  viewCode.split('.')[2] 
        except: pass 
            # return False 


        # TODO : Los hijos deben ser del mismo tipo, o deben eliminarse 

        if len( dBase ) > 0 and len( idType ) > 0:

            docFields, shortTitle  = model.getJfields( idType )

            gridConfig['baseFilter'].append( { 'property':'docType', 'filterStmt' : '=' + idType  } )

            grid.fieldsDict['docType_id']['prpDefault'] = idType 

            grid.fieldsDict['docType']['prpDefault'] = shortTitle 
            grid.fieldsDict['docType']['readOnly'] = True
            grid.fieldsDict['docType']['hidden'] = True

            grid.fieldsDict.update( docFields )

            pDescription = '{0}: {1}'.format( dBase, shortTitle ).lower()
            grid.fields = []
            for lField in grid.fieldsDict.itervalues():
                grid.fields.append( lField )


    protoTmp = { 
         'metaVersion' : PROTOVERSION ,
         'viewCode' : viewCode,
         'viewEntity' : viewEntity,
         'idProperty': grid.protoMeta.get('idProperty', id_field),
         'shortTitle': shortTitle,
         'description': pDescription ,
         'viewIcon': viewIcon,

         'fields': grid.fields,
         'gridConfig' : gridConfig,
         'gridSets': grid.protoMeta.get('gridSets', {}),

         'detailsConfig': grid.get_details() ,
         'formConfig': grid.getFieldSets(),

#        El resto  no las carga pues ya estan en la meta ... 
         }
    

    grid.protoMeta.update( protoTmp ) 
    return True 
Beispiel #4
0
def createProtoMeta(model, grid, viewEntity , viewCode):


    # Los criterios de busqueda ni los ordenamientos son heredados del admin, 
    pSearchFields = grid.gridConfig.get('searchFields', []) 
    if len(pSearchFields) == 0:
        pSearchFields = getSearcheableFields(model)

    pSortFields = grid.gridConfig.get('sortFields', []) 
    if len(pSortFields) == 0:
        pSortFields = getSearcheableFields(model)

    # Lista de campos precedidos con '-' para order desc  ( 'campo1' , '-campo2' )
    # * o [{ "property": "code", "direction": "ASC" }, {  
    initialSort = grid.gridConfig.get('initialSort', ())
    sortInfo = []
    for sField in initialSort:
        # Si es un string lo convierte en objeto 
        if type(sField).__name__ == type('').__name__ :  
            sortOrder = 'ASC'
            if sField[0] == '-':
                sortOrder = 'DESC'
                sField = sField[1:]
            sField = { 'property': sField, 'direction' : sortOrder }
            
        sortInfo.append(sField)


    # ----------- Completa las propiedades del gridConfig 
    gridConfig = { 
             'searchFields': pSearchFields,
             'sortFields': pSortFields,
             'initialSort': sortInfo,

             # Si no es autoload  -  '{"pk" : 0,}'            
             'baseFilter': grid.gridConfig.get('baseFilter', []),
             'initialFilter': grid.gridConfig.get('initialFilter', []),

             # Toma las definidas en la grilla 
             'listDisplay' : grid.gridConfig.get('listDisplay', []),
             'readOnlyFields' : grid.gridConfig.get('readOnlyFields', []),
             
             # Garantiza q existan en la definicion 
             'hideRowNumbers' : grid.gridConfig.get('hideRowNumbers', False),
             'filterSetABC': grid.gridConfig.get('filterSetABC', ''),

             'hiddenFields': grid.protoMeta.get('hiddenFields', ['id', ]),
         } 


    #---------- Ahora las propiedades generales de la PCI 
    viewIcon = grid.protoMeta.get('viewIcon', 'icon-1') 

    pDescription = grid.protoMeta.get('description', '')
    if len(pDescription) == 0:
        pDescription = grid.protoMeta.get('title', grid.title)
    
    # FIX: busca el id en la META  ( id_field = model._meta.pk.name ) 
    id_field = u'id'

    protoTmp = { 
         'metaVersion' : PROTOVERSION ,
         'viewCode' : viewCode,
         'viewEntity' : viewEntity,
         'idProperty': grid.protoMeta.get('idProperty', id_field),
         'shortTitle': grid.protoMeta.get('shortTitle', grid.title),
         'description': pDescription ,
         'viewIcon': viewIcon,

         'fields': grid.fields,
         'gridConfig' : gridConfig,
         'gridSets': grid.protoMeta.get('gridSets', {}),

         'detailsConfig': grid.get_details() ,
         'formConfig': grid.getFieldSets(),

#        El resto  no las carga pues ya estan en la meta ... 
         }
    

    return copyProps(grid.protoMeta, protoTmp)