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 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
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)