def addDetailToList(detailList, detail, detailPath): """ return parcial detail tree ( Called from protoGetFieldTree ) detailList : Lista con los detalles detail : registro del detalle detailField : jerarquia vista desde el campo detailPath : jerarquia inversa vista desde el maestro """ if len(detailPath) > 0: detailPath += '/' detailPath += detail['menuText'] # Agrega el campo solicitado menuDetail = { "id": detailPath, "conceptDetail": detail['conceptDetail'], "detailField": detail['detailField'], "masterField": 'pk', "leaf": True } detailList.append(menuDetail) # Evita demasiada recursividad ( 5 niveles debe ser mas q suficiente ) # Si el mismo campo ya aparece en el camino seguramente es una autoreferencia detailField = detail['detailField'] if detailField.count('__') > 5 or detailField.count('__' + detail['detailName'] + '__') > 0: return else: detailChild = [] model = getDjangoModel(detail['conceptDetail']) modelDetails = getModelDetails(model) for sDetail in modelDetails: sDetail['detailField'] = sDetail['detailName'] + '__' + detail[ 'detailField'] addDetailToList(detailChild, sDetail, detailPath) # Si el modelo de base es el modelo de trabajo, no entro al loop if len(detailChild) > 0: menuDetail['leaf'] = False menuDetail['children'] = detailChild
def addDetailToList( detailList , detail, detailPath ): """ return parcial detail tree ( Called from protoGetFieldTree ) detailList : Lista con los detalles detail : registro del detalle detailField : jerarquia vista desde el campo detailPath : jerarquia inversa vista desde el maestro """ if len( detailPath ) > 0: detailPath += '/' detailPath += detail[ 'menuText' ] # Agrega el campo solicitado menuDetail = { "id" : detailPath , "conceptDetail" : detail[ 'conceptDetail' ] , "detailField" : detail[ 'detailField' ] , "masterField" : 'pk', "leaf" : True } detailList.append( menuDetail ) # Evita demasiada recursividad ( 5 niveles debe ser mas q suficiente ) # Si el mismo campo ya aparece en el camino seguramente es una autoreferencia detailField = detail[ 'detailField' ] if detailField.count( '__') > 5 or detailField.count( '__' + detail[ 'detailName' ] + '__' ) > 0: return else: detailChild= [] model = getDjangoModel( detail[ 'conceptDetail' ] ) modelDetails = getModelDetails( model ) for sDetail in modelDetails: sDetail[ 'detailField' ] = sDetail[ 'detailName' ] + '__' + detail[ 'detailField' ] addDetailToList( detailChild, sDetail , detailPath ) # Si el modelo de base es el modelo de trabajo, no entro al loop if len( detailChild ) > 0: menuDetail['leaf'] = False menuDetail['children'] = detailChild
detailList = [] if viewCode.startswith(PROTO_PREFIX) and viewCode != viewEntity: # ------------------------------------------------------------------------- Prototipos protoEntityId = request.POST.get('protoEntityId') if not protoEntityId >= 0: return JsonError('invalid idEntity') try: from prototype.actions.viewDefinition import GetDetailsConfigTree detailList = GetDetailsConfigTree(protoEntityId) except: return JsonError('invalid idEntity') else: modelDetails = getModelDetails(model) for detail in modelDetails: addDetailToList(detailList, detail, '') # Codifica el mssage json context = json.dumps(detailList) return HttpResponse(context, content_type="application/json") def addDetailToList(detailList, detail, detailPath): """ return parcial detail tree ( Called from protoGetFieldTree ) detailList : Lista con los detalles detail : registro del detalle detailField : jerarquia vista desde el campo detailPath : jerarquia inversa vista desde el maestro
detailList = [] if viewCode.startswith( PROTO_PREFIX ) and viewCode != viewEntity : # ------------------------------------------------------------------------- Prototipos protoEntityId = request.POST.get( 'protoEntityId' ) if not protoEntityId >= 0: return JsonError('invalid idEntity') try: from prototype.actions.viewDefinition import GetDetailsConfigTree detailList = GetDetailsConfigTree( protoEntityId ) except: return JsonError( 'invalid idEntity') else: modelDetails = getModelDetails( model ) for detail in modelDetails: addDetailToList( detailList, detail , '' ) # Codifica el mssage json context = json.dumps( detailList ) return HttpResponse(context, content_type="application/json") def addDetailToList( detailList , detail, detailPath ): """ return parcial detail tree ( Called from protoGetFieldTree ) detailList : Lista con los detalles detail : registro del detalle