def getFieldValue(fName, fType, rowData, JsonField):

    # Es una funcion
    if (fName == '__str__'):
        try:
            val = eval('rowData.__str__()')
            val = verifyStr(val , '')
        except:
            val = 'Id#' + verifyStr(rowData.pk, '?')

    elif fName.startswith('@'):
        val = evalueFuncion(fName, rowData)

    elif (fName == JsonField):
        # Master JSonField ( se carga texto )
        try:
            val = rowData.__getattribute__(fName)
        except: 
            val = {}
        if isinstance(val, dict):
            val = json.dumps(val , cls=JSONEncoder)

    elif fName.startswith(JsonField + '__'):
        # JSon fields
        try:
            val = rowData.__getattribute__(JsonField)
            val = val.get(fName[ len(JsonField + '__'):])
            val = getTypedValue(val, fType)

        except: 
            val = ''


    elif ('__' in fName):
        # Campo Absorbido modo objeto
        try:
            val = eval('rowData.' + fName.replace('__', '.'))
            val = verifyStr(val , '')
        except: 
            val = '__?'


    # Campo del modelo
    else:
        try:
            val = getattr(rowData, fName)
            # Si es una referencia ( fk ) es del tipo model
            if isinstance(val, models.Model):
                val = verifyStr(val , '')
        except: 
            val = 'vr?'

        # Evita el valor null en el el frontEnd
        if val is None: 
            val = ''


    return val
Exemple #2
0
def getFieldValue(fName, fType, rowData, JsonField):

    # Es una funcion
    if (fName == '__str__'):
        try:
            val = eval('rowData.__str__()')
            val = verifyStr(val, '')
        except:
            val = 'Id#' + verifyStr(rowData.pk, '?')

    elif fName.startswith('@'):
        val = evalueFuncion(fName, rowData)

    elif (fName == JsonField):
        # Master JSonField ( se carga texto )
        try:
            val = rowData.__getattribute__(fName)
        except:
            val = {}
        if isinstance(val, dict):
            val = json.dumps(val, cls=JSONEncoder)

    elif fName.startswith(JsonField + '__'):
        # JSon fields
        try:
            val = rowData.__getattribute__(JsonField)
            val = val.get(fName[len(JsonField + '__'):])
            val = getTypedValue(val, fType)

        except:
            val = ''

    elif ('__' in fName):
        # Campo Absorbido modo objeto
        try:
            val = eval('rowData.' + fName.replace('__', '.'))
            val = verifyStr(val, '')
        except:
            val = '__?'

    # Campo del modelo
    else:
        try:
            val = getattr(rowData, fName)
            # Si es una referencia ( fk ) es del tipo model
            if isinstance(val, models.Model):
                val = verifyStr(val, '')
        except:
            val = 'vr?'

        # Evita el valor null en el el frontEnd
        if val is None:
            val = ''

    return val
def readUdps(rowdict, regBase, cUDP, udpList, udpTypes):

    if cUDP.keyField:
        # si la creacion del detalle no es relacional,
        # se requiere hacer un verdadero Query sobre udpTable
        UdpModel = getDjangoModel(cUDP.udpTable)
        keyValue = rowdict.get(cUDP.keyField, '')
        if not keyValue:
            raise Exception('UdpError: Key not found ' + cUDP.keyField +
                            ' in masterReg')

        keyValue = smart_str(keyValue)
        bAux = True
        Qs = UdpModel.objects
        Qs = addFilter(Qs, {cUDP.propertyRef: keyValue})
        cllUDP = Qs.all()

    else:
        # Si no hay keyField, hace el query basado en el registro maestro
        try:
            bAux = eval('regBase.' + cUDP.udpTable.lower() + '_set.exists()')
            cllUDP = eval('regBase.' + cUDP.udpTable.lower() + '_set.all()')
        except:
            raise Exception('UdpError:  related_name  set not found ' +
                            cUDP.udpTable.lower())

    if bAux:

        for lUDP in cllUDP:
            udpName = cUDP.propertyPrefix + '__' + getattr(
                lUDP, cUDP.propertyName, '')
            if udpName in udpList:
                sAux = getattr(lUDP, cUDP.propertyValue, '')
                sAux = getTypedValue(sAux, udpTypes[udpName])
                sAux = smart_str(sAux)

                if udpTypes[udpName] == 'html' and type(
                        sAux).__name__ == 'string':
                    sAux = sAux.replace('\n', '<br>').replace('\r', '<br>')
                    sAux = sAux.replace('<br><br>', '<br>')
                    sAux = sAux.replace('<td><br>',
                                        '<td>').replace('</td><br>', '</td>')
                    sAux = sAux.replace('<th><br>',
                                        '<th>').replace('</th><br>', '</th>')
                    sAux = sAux.replace('<tr><br>',
                                        '<tr>').replace('</tr><br>', '</tr>')
                    sAux = sAux.replace('<br><td>',
                                        '<td>').replace('<br></td>', '</td>')
                    sAux = sAux.replace('<br><th>',
                                        '<th>').replace('<br></th>', '</th>')
                    sAux = sAux.replace('<br><tr>',
                                        '<tr>').replace('<br></tr>', '</tr>')

                rowdict[udpName] = sAux
Exemple #4
0
def readUdps( rowdict, regBase , cUDP, udpList,  udpTypes ):

    if cUDP.keyField: 
        # si la creacion del detalle no es relacional, 
        # se requiere hacer un verdadero Query sobre udpTable                    
        UdpModel = getDjangoModel( cUDP.udpTable )
        keyValue = rowdict.get( cUDP.keyField , '' )
        if not keyValue: 
            raise Exception( 'UdpError: Key not found ' + cUDP.keyField  + ' in masterReg') 
    
        keyValue = smart_str( keyValue )
        bAux = True
        Qs = UdpModel.objects
        Qs = addFilter( Qs, { cUDP.propertyRef  : keyValue  } )
        cllUDP = Qs.all()


    else:
        # Si no hay keyField, hace el query basado en el registro maestro
        try:  
            bAux = eval ( 'regBase.' + cUDP.udpTable.lower() + '_set.exists()' )
            cllUDP = eval ( 'regBase.' + cUDP.udpTable.lower() + '_set.all()' ) 
        except:  
            raise Exception( 'UdpError:  related_name  set not found ' + cUDP.udpTable.lower() ) 

    if bAux: 
        
        for lUDP in cllUDP:
            udpName = cUDP.propertyPrefix + '__' + getattr( lUDP, cUDP.propertyName  , '') 
            if udpName in udpList:
                sAux = getattr( lUDP, cUDP.propertyValue, '' )
                sAux = getTypedValue ( sAux , udpTypes[ udpName ])
                sAux = smart_str( sAux )
                
                if udpTypes[ udpName ] == 'html' and type( sAux ).__name__=='string'  : 
                    sAux = sAux.replace( '\n', '<br>').replace( '\r', '<br>')  
                    sAux = sAux.replace( '<br><br>', '<br>')
                    sAux = sAux.replace( '<td><br>', '<td>').replace( '</td><br>', '</td>')
                    sAux = sAux.replace( '<th><br>', '<th>').replace( '</th><br>', '</th>')
                    sAux = sAux.replace( '<tr><br>', '<tr>').replace( '</tr><br>', '</tr>')
                    sAux = sAux.replace( '<br><td>', '<td>').replace( '<br></td>', '</td>')
                    sAux = sAux.replace( '<br><th>', '<th>').replace( '<br></th>', '</th>')
                    sAux = sAux.replace( '<br><tr>', '<tr>').replace( '<br></tr>', '</tr>')
    
                rowdict[ udpName ] =  sAux 
def readUdps(rowdict, regBase, cUDP, udpList, udpTypes):

    if cUDP.keyField:
        # si la creacion del detalle no es relacional,
        # se requiere hacer un verdadero Query sobre udpTable
        UdpModel = getDjangoModel(cUDP.udpTable)
        keyValue = rowdict.get(cUDP.keyField, "")
        if not keyValue:
            raise Exception("UdpError: Key not found " + cUDP.keyField + " in masterReg")

        keyValue = smart_str(keyValue)
        bAux = True
        Qs = UdpModel.objects
        Qs = addFilter(Qs, {cUDP.propertyRef: keyValue})
        cllUDP = Qs.all()

    else:
        # Si no hay keyField, hace el query basado en el registro maestro
        try:
            bAux = eval("regBase." + cUDP.udpTable.lower() + "_set.exists()")
            cllUDP = eval("regBase." + cUDP.udpTable.lower() + "_set.all()")
        except:
            raise Exception("UdpError:  related_name  set not found " + cUDP.udpTable.lower())

    if bAux:

        for lUDP in cllUDP:
            udpName = cUDP.propertyPrefix + "__" + getattr(lUDP, cUDP.propertyName, "")
            if udpName in udpList:
                sAux = getattr(lUDP, cUDP.propertyValue, "")
                sAux = getTypedValue(sAux, udpTypes[udpName])
                sAux = smart_str(sAux)

                if udpTypes[udpName] == "html" and type(sAux).__name__ == "string":
                    sAux = sAux.replace("\n", "<br>").replace("\r", "<br>")
                    sAux = sAux.replace("<br><br>", "<br>")
                    sAux = sAux.replace("<td><br>", "<td>").replace("</td><br>", "</td>")
                    sAux = sAux.replace("<th><br>", "<th>").replace("</th><br>", "</th>")
                    sAux = sAux.replace("<tr><br>", "<tr>").replace("</tr><br>", "</tr>")
                    sAux = sAux.replace("<br><td>", "<td>").replace("<br></td>", "</td>")
                    sAux = sAux.replace("<br><th>", "<th>").replace("<br></th>", "</th>")
                    sAux = sAux.replace("<br><tr>", "<tr>").replace("<br></tr>", "</tr>")

                rowdict[udpName] = sAux