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

Reply via email to