My application manages debits of hardware to personnel

Here is my model:

## table that holds firms providing hardware
db.define_table('providers',
                Field('eponymia', 'string', label='Name'),
                Field('address', 'string', label='Address'),
                Field('perioxi', 'string', label='Area'),
                Field('zip', 'string', label='ZIP'),
                Field('phone', 'string', label='Telephone'),
                Field('created_on', 'datetime',
                      default=request.now,
                      update=request.now,
                      writable=False,
                      readable=False),
                Field('created_by',
                      'reference auth_user',
                      default=auth.user_id,
                      update=auth.user_id,
                      writable=False,
                      readable=False),
                format='%(eponymia)s'
                )

## table that holds types of hardware, i.e. PC, monitor, rack, Flash etc.
db.define_table('type_of_hardware',
                Field('hwType', 'string', length=100, label='Hardware 
Type'),
                format='%(hwType)s'
                )

## table that holds personnel names
db.define_table('personnel',
                Field('pers_code', type='id', label='Employee Code'),
                Field('pers_surname', 'string', label='Surname'),
                Field('klados', 'string', label='Code of Sector'),
                Field('un_code', 'integer', label='Code of Branch'),
                Field('date_occupation', 'date', label='Date Hired'),
                Field('ergsxesi', 'string', label='Kind of Job'),
                Field('pers_indpause', 'integer', label='Active?'),
                Field('apox', 'date', label='Date Retired'),
                format='%(pers_surname)s, %(pers_code)s'
                )

## table that holds the hardware
db.define_table('hardware',
                Field('typeOfItem', 'reference type_of_hardware', 
label='Type'),
                Field('provider', 'reference providers', label='Provider'),
                Field('manufacturer', 'string', length=15, 
label='Manufacturer'),
                Field('productSeries', 'string', length=30, label='Series', 
default=""),
                Field('model', 'string', length=30, label='Model', 
default=""),
                Field('serialNo', 'string', length=50, label='Serial 
Number', default=""),
                Field('partNo', 'string', length=50, label='Part Number', 
default=""),
                Field('notes', 'text', label='Notes'),
                Field('dt_buy', 'date', label='Date Bought', 
requires=IS_EMPTY_OR(IS_DATE("%d-%m-%Y"))),
                Field('cost', 'decimal(12, 2)', label='Costed'),
                Field('FPA', 'decimal(4, 2)', label='VAT', default=0.23),
                Field('available', 'boolean', label='Available?', 
default=True),
                Field('destroyed', 'date', label='Date Destroyed', 
requires=IS_EMPTY_OR(IS_DATE("%d-%m-%Y"))),
                Field('ODDY', 'date', label='Date ODDY', 
requires=IS_EMPTY_OR(IS_DATE("%d-%m-%Y"))),
                Field('registerPage', 'integer', label='Registration Page'),
                Field('created_on',
                      'datetime',
                      default=request.now,
                      update=request.now,
                      writable=False,
                      readable=False),
                Field('created_by',
                      'reference auth_user',
                      default=auth.user_id,
                      update=auth.user_id,
                      writable=False,
                      readable=False),
                format='%(typeOfItem.hwType)s, %(manufacturer)s, 
%(productSeries)s, %(model)s, %(serialNo)s'
                )
db.hardware.id.readable = False
db.hardware.available.writable = db.hardware.available.readable = False

## table that holds debits of hardware to personnel (many-to-many)
db.define_table('debit',
                Field('id_personnel', 'reference personnel', 
label='Employee'),
                Field('id_hardware', 'reference hardware', 
label='Hardware'),
                Field('dtstrt_of_debit', 'date', label='Start Debit', 
requires=IS_DATE("%d-%m-%Y")),
                Field('dtend_of_debit', 'date', label='End Debit', 
requires=IS_EMPTY_OR(IS_DATE("%d-%m-%Y"))),
                Field('notes', 'text', label='Notes'),
                Field('created_on',
                      'datetime',
                      default=request.now,
                      update=request.now,
                      writable=False,
                      readable=False),
                Field('created_by',
                      'reference auth_user',
                      default=auth.user_id,
                      update=auth.user_id,
                      writable=False,
                      readable=False),
                plural='Debits',
                singular='Debit'
                )

Now in my controller I have:
def test():
    formUpdateDebit = SQLFORM(db.debit,
                                            record=db.debit[8],
                                            fields=['id_personnel',
                                                      'id_hardware',
                                                      'dtstrt_of_debit',
                                                      'dtend_of_debit',
                                                      'notes'
                                                     ]
                                            )
    return dict(formUpdateDebit=formUpdateDebit)

But this throws the error: <type 'exceptions.AttributeError'> 'Table' 
object has no attribute 'typeOfItem.hwType'


I think this has to do with the 

format='%(typeOfItem.hwType)s, %(manufacturer)s, %(productSeries)s, 
%(model)s, %(serialNo)s'

line in the definition of the hardware table above, but I am not sure.

I want my forms to show the corresponding type of hardware (not the id). Is 
this format wrong?

Thanks in advance!

Tom

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to