You may see below a Bizobj I've just coded.
It works ok, but I would like a heads up upon how it is coded, or any
suggestion that might prevent future glitches.
This is "Movimiento" table with various lookup tables. Among them
"Tarjeta" and "Grupo" which is referenced in "Tarjeta" (is it ok how I
accomplished this?).
I use a DataStructure, the field "Tarjeta.Foto" is a BLOB field
containing a jpg picture. What data type should I put for this field in
the DataStructure?
"FullName" is a virtual field which is derived from two fields in
"Tarjeta".
i) Is it ok to put None in the table field of the DataStructure?
ii) Is the VirtualFields way of doing it the best? Or might I have
done it some other way?
iii) Do I need to addField() "Tarjeta.Nombre" and
"Tarjeta.Apellido" in order to reference them in getFullName(), or is
there some other way?
-----------------------------------------------------------------------------------------------------------
class MovimientoBizobj(dabo.biz.dBizobj):
def initProperties(self):
self.Caption = 'Movimiento'
self.DataSource = 'Movimiento'
self.KeyField = 'Id'
# (field_alias, field_type, pk, table_name, field_name,
field_scale)
self.DataStructure = (
('Id', 'I', True, 'Movimiento', 'Id'),
('FechaHora', 'C', False, 'Movimiento', 'FechaHora'),
('TarjetaId', 'I', False, 'Movimiento', 'TarjetaId'),
('LectoraId', 'I', False, 'Movimiento', 'LectoraId'),
('EventoId', 'I', False, 'Movimiento', 'EventoId'),
('NroTarjeta', 'C', False, 'Tarjeta', 'NroTarjeta'),
('Nombre', 'C', False, 'Tarjeta', 'Nombre'),
('Apellido', 'C', False, 'Tarjeta', 'Apellido'),
('FullName', 'C', False, None, 'FullName'),
('Puerta', 'C', False, 'Lectora', 'Nombre'),
('Evento', 'C', False, 'Evento', 'Descripcion'),
('Grupo', 'C', False, 'Grupo', 'Nombre'),
)
ahora = datetime.datetime.now().strftime('%d/%m/%Y %H:%M:%S')
self.DefaultValues['FechaHora'] = ahora
self.DefaultValues['TarjetaId'] = None
self.DefaultValues['LectoraId'] = None
self.DefaultValues['EventoId'] = None
self.Encoding = 'utf-8'
def afterInit(self):
self.setLimitClause(None)
self.addFrom('Movimiento')
self.addJoin('Tarjeta',
'Tarjeta.Id = Movimiento.TarjetaId',
'left')
self.addJoin('Lectora',
'Lectora.Id = Movimiento.LectoraId',
'left')
self.addJoin('Evento',
'Evento.Id = Movimiento.EventoId',
'left')
self.addJoin('Grupo',
'Grupo.Id = Tarjeta.GrupoId',
'left')
for field in self.DataStructure:
alias = field[0]
tabla = field[3]
campo = field[4]
if tabla:
self.addField('{}.{}'.format(tabla, campo), alias)
self.addField('Tarjeta.NroTarjeta', 'NroTarjeta')
self.addField('Tarjeta.Nombre', 'Nombre')
self.addField('Tarjeta.Apellido', 'Apellido')
self.addField('Tarjeta.Foto', 'Foto')
self.addField('Lectora.Nombre', 'Puerta')
self.addField('Evento.Descripcion', 'Evento')
self.addField('Grupo.Nombre', 'Grupo')
self.VirtualFields = {'FullName': self.getFullName}
def getFullName(self):
return '{}, {}'.format(self.Record.Apellido, self.Record.Nombre)
-----------------------------------------------------------------------------------------------------------
_______________________________________________
Post Messages to: Dabo-users@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: http://leafe.com/archives/byMID/5232160e.4080...@gmail.com