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