예제 #1
0
def GetDetailsConfigTree(protoEntityId):

    lDetails = []

    try:
        pEntity = Entity.objects.get(id=protoEntityId)
    except:
        return lDetails

    # Details
    for pDetail in pEntity.refEntity_set.all():

        detail = {
            "detailField": "info__" + slugify(pDetail.code) + "_id",
            "conceptDetail": PROTO_PREFIX + getViewCode(pDetail.entity),
            "detailName": slugify(pDetail.entity.code),
            "menuText": pDetail.entity.code,
            "masterField": "pk",
            "id": slugify(pDetail.entity.code),
            "leaf": True
        }

        lDetails.append(detail)

    return lDetails
예제 #2
0
def GetDetailsConfigTree( protoEntityId ):
    
    lDetails = []

    try:
        pEntity = Entity.objects.get( id = protoEntityId )
    except: 
        return lDetails 
    
    # Details
    for pDetail in pEntity.refEntity_set.all():
        
        detail =  {
            "detailField": "info__" + slugify( pDetail.code ) + "_id",
            "conceptDetail": PROTO_PREFIX + getViewCode( pDetail.entity  ),
            "detailName": slugify( pDetail.entity.code ),
            "menuText": pDetail.entity.code ,
            "masterField": "pk", 
            
            "id" : slugify( pDetail.entity.code ) ,  
            "leaf" : True 
        }


                    
        lDetails.append( detail ) 
                
    return lDetails 
예제 #3
0
def getEntities( queryset , request, viewTitle  ):
    """ Recorre las entidades para generar las vistas en bache por modelo """

    userProfile = getUserProfile( request.user, 'prototype', '' ) 
    returnMsg = '' 

#   Recorre los registros selccionados   
    for pEntity in queryset:
        returnMsg += pEntity.code  + ','    
        createView(  pEntity , getViewCode( pEntity, viewTitle ) , userProfile )

    return returnMsg
예제 #4
0
def getEntities(queryset, request, viewTitle):
    """ Recorre las entidades para generar las vistas en bache por modelo """

    userProfile = getUserProfile(request.user, 'prototype', '')
    returnMsg = ''

    #   Recorre los registros selccionados
    for pEntity in queryset:
        returnMsg += pEntity.code + ','
        createView(pEntity, getViewCode(pEntity, viewTitle), userProfile)

    return returnMsg
예제 #5
0
def addProtoFiedToList(fieldList, pEntity, fieldBase, zoomName):
    """ Recorre los campos e itera con los fk ( solo un nivel 'fieldBase' )
    """

    for pProperty in pEntity.property_set.all():

        fName = 'info__' + slugify(pProperty.code)

        field = property2Field(fName, pProperty.__dict__, True, fieldBase)

        # Si es un campo heredado ( Se maneja ahora en la pci generada
        if len(fieldBase) > 0:
            field["cpFromZoom"] = fieldBase
            field["cpFromField"] = fName
            field["required"] = False
            field["readOnly"] = True
            field["leaf"] = True

        elif pProperty.isForeign:
            # Agrega el Id
            fieldList.append(getFkId(fName, True, fieldBase))

            # Agrega los parametros del zoom
            zoomEntity = pProperty.relationship.refEntity

            field["zoomModel"] = PROTO_PREFIX + getViewCode(zoomEntity)
            field["fkId"] = fName + "_id"
            field["type"] = "foreigntext"

            fkFieldList = []
            addProtoFiedToList(fkFieldList, zoomEntity, fName,
                               slugify(zoomEntity.code))

            field["leaf"] = False
            field["children"] = fkFieldList

        fieldList.append(field)

    # agrega las props de seguridad
    if len(fieldBase) == 0:
        for fName in [
                'smOwningUser', 'smOwningTeam', 'smCreatedBy', 'smModifiedBy',
                'smWflowStatus', 'smRegStatus', 'smCreatedOn', 'smModifiedOn',
                'smUUID'
        ]:
            propDict = {"name": fName, "readOnly": True}
            field = property2Field(fName, propDict, True)
            fieldList.append(field)
예제 #6
0
def addProtoFiedToList( fieldList,  pEntity , fieldBase, zoomName   ): 
    """ Recorre los campos e itera con los fk ( solo un nivel 'fieldBase' )
    """    

    for pProperty in pEntity.property_set.all():

        fName  = 'info__' + slugify( pProperty.code ) 

        field = property2Field( fName, pProperty.__dict__ , True,  fieldBase  )

        # Si es un campo heredado ( Se maneja ahora en la pci generada 
        if len( fieldBase ) > 0 :  
            field["cpFromZoom"] = fieldBase   
            field["cpFromField"] = fName 
            field["required"] = False 
            field["readOnly"] = True 
            field["leaf"] = True

        elif pProperty.isForeign:
            # Agrega el Id  
            fieldList.append( getFkId( fName , True, fieldBase ))
            
            # Agrega los parametros del zoom 
            zoomEntity = pProperty.relationship.refEntity
            
            field["zoomModel"]= PROTO_PREFIX + getViewCode( zoomEntity  ) 
            field["fkId"]     = fName + "_id"
            field["type"]     = "foreigntext"

            fkFieldList= []
            addProtoFiedToList( fkFieldList, zoomEntity, fName, slugify( zoomEntity.code ) )

            field["leaf"] = False 
            field["children"] = fkFieldList
      
        fieldList.append( field )
        
    # agrega las props de seguridad         
    if len( fieldBase ) == 0 :  
        for fName in ['smOwningUser','smOwningTeam','smCreatedBy','smModifiedBy','smWflowStatus','smRegStatus','smCreatedOn','smModifiedOn', 'smUUID']: 
            propDict = { "name" : fName, "readOnly": True }
            field = property2Field( fName, propDict, True  )
            fieldList.append( field )
예제 #7
0
def getViewDefinition( pEntity, viewTitle  ):

    entityName = getViewCode( pEntity  )

    infoEntity = baseDefinition( pEntity, entityName, viewTitle  )
    infoEntity['gridConfig']['baseFilter'] = [ { 'property':'entity', 'filterStmt' : '=' + str( pEntity.id )  } ]

    #para crear el campo __str__:  se arma con las llaves definidas como primarias o unicas 
    __str__Base = []
    #infoEntity['gridConfig']['listDisplay'].append( '__str__' )

    for pProperty in pEntity.property_set.order_by('id'):

        fName  = 'info__' + slugify( pProperty.code ) 
        field = property2Field( fName, pProperty.__dict__ )

        if pProperty.isForeign: 
            field["zoomModel"]= PROTO_PREFIX + getViewCode( pProperty.relationship.refEntity ) 
            field["fkId"]     = fName + "_id"
            field["type"]     = "foreigntext"

            infoEntity['fields'].append( getFkId( fName ) )
        
        infoEntity['fields'].append( field )

        # hace las veces de __str__   
        if pProperty.isPrimary or pProperty.isLookUpResult:
            __str__Base.append( fName )

        # DP solicito se generaran todos los campos en la grilla 130308 )
        if  pProperty.isEssential or len( infoEntity['gridConfig']['listDisplay'] ) <= 7 : 
            infoEntity['gridConfig']['listDisplay'].append( fName )


        # forma y ordenamiento    
        infoEntity['gridConfig']['sortFields'].append( fName )
        infoEntity['formConfig']['items'][0]['items'].append( { "name": fName, "__ptType": "formField" } )

    # Al menos incluye el str
    if len (  infoEntity['gridConfig']['listDisplay'] ) ==  0: 
        infoEntity['gridConfig']['listDisplay'].append( '__str__' )

    #  __str__, __unicode__
    field = {
        "flex": 1,
        "sortable": True,
        "name": "__str__",
        "fkId": "id",
        "zoomModel": PROTO_PREFIX + slugify( viewTitle  ),
        "cellLink": True,
        "header": viewTitle,
        "readOnly": True,
        "type": "string",
        "physicalName" : '@myStr("' + '","'.join(__str__Base) + '")'
    }
    fName = '__str__'
    infoEntity['fields'].append( field )
    infoEntity['gridConfig']['sortFields'].append( fName )
            
    # Details
    for pDetail in pEntity.refEntity_set.all():
        detail =  {
            "detailField": "info__" + slugify( pDetail.code ) + "_id",
            "conceptDetail": PROTO_PREFIX + getViewCode( pDetail.entity  ),
            "detailName": slugify( pDetail.entity.code ),
            "menuText": pDetail.entity.code ,
            "masterField": "pk"
        }
                    
        infoEntity['detailsConfig'].append( detail )             
            
    return infoEntity
예제 #8
0
def getViewDefinition(pEntity, viewTitle):

    entityName = getViewCode(pEntity)

    infoEntity = baseDefinition(pEntity, entityName, viewTitle)
    infoEntity['gridConfig']['baseFilter'] = [{
        'property':
        'entity',
        'filterStmt':
        '=' + str(pEntity.id)
    }]

    #para crear el campo __str__:  se arma con las llaves definidas como primarias o unicas
    __str__Base = []
    #infoEntity['gridConfig']['listDisplay'].append( '__str__' )

    for pProperty in pEntity.property_set.order_by('id'):

        fName = 'info__' + slugify(pProperty.code)
        field = property2Field(fName, pProperty.__dict__)

        if pProperty.isForeign:
            field["zoomModel"] = PROTO_PREFIX + getViewCode(
                pProperty.relationship.refEntity)
            field["fkId"] = fName + "_id"
            field["type"] = "foreigntext"

            infoEntity['fields'].append(getFkId(fName))

        infoEntity['fields'].append(field)

        # hace las veces de __str__
        if pProperty.isPrimary or pProperty.isLookUpResult:
            __str__Base.append(fName)

        # DP solicito se generaran todos los campos en la grilla 130308 )
        if pProperty.isEssential or len(
                infoEntity['gridConfig']['listDisplay']) <= 7:
            infoEntity['gridConfig']['listDisplay'].append(fName)

        # forma y ordenamiento
        infoEntity['gridConfig']['sortFields'].append(fName)
        infoEntity['formConfig']['items'][0]['items'].append({
            "name":
            fName,
            "__ptType":
            "formField"
        })

    # Al menos incluye el str
    if len(infoEntity['gridConfig']['listDisplay']) == 0:
        infoEntity['gridConfig']['listDisplay'].append('__str__')

    #  __str__, __unicode__
    field = {
        "flex": 1,
        "sortable": True,
        "name": "__str__",
        "fkId": "id",
        "zoomModel": PROTO_PREFIX + slugify(viewTitle),
        "cellLink": True,
        "header": viewTitle,
        "readOnly": True,
        "type": "string",
        "physicalName": '@myStr("' + '","'.join(__str__Base) + '")'
    }
    fName = '__str__'
    infoEntity['fields'].append(field)
    infoEntity['gridConfig']['sortFields'].append(fName)

    # Details
    for pDetail in pEntity.refEntity_set.all():
        detail = {
            "detailField": "info__" + slugify(pDetail.code) + "_id",
            "conceptDetail": PROTO_PREFIX + getViewCode(pDetail.entity),
            "detailName": slugify(pDetail.entity.code),
            "menuText": pDetail.entity.code,
            "masterField": "pk"
        }

        infoEntity['detailsConfig'].append(detail)

    return infoEntity