Well, the week was less-than-productive on the automated TG admin pages front. I did manage to extract the CRUD code from the model class, however. Here is the (new) code to create an admin page for a given SQLObject model:
import model
from crud import crudbase, fields
class DistributionCenterView(crudbase):
modelClass=model.DistributionCenter
displayName='Distribution Center'
fields=fields('name', 'note',
'address.street1', 'address.street2',
'address.city', 'address.state', 'address.zip',
'stores', 'trucks')
key='name'
this is for the following SQLObject model:
class DistributionCenter(SQLObject):
def destroySelf(self):
self.address.destroySelf()
SQLObject.destroySelf(self)
name=StringCol(default=uniqueValue('DistributionCenter', 'name', 'ctr'),
alternateID=True)
note=StringCol(default='')
address=ForeignKey('Address', default=newAddressID, cascade=False)
stores=MultipleJoin('Store')
trucks=MultipleJoin('Truck')
The resulting list view looks a little like this (simplified a bit for blogger):
Name
Note
Street1
Street2
City
State
Zip
Stores
Trucks
Edit
Delete
Dist Ctr A
A note on dca
123 Main Street
Marietta
GA
30062
Home Dep 3
SXG 456,ABC 123
Edit
Delete
Center 2
Another Center
456 Beechwood Ave.
Marietta
GA
30067
Store Num 1,store_2
333 HFF
As you can see, foreign keys and multiple joins are handled, as well as columns from foreign tables (via the "address.street1..." stuff). I'm still working on cleaning things up, but if this code would be a useful starting point for you, drop me a comment and I'll email you a copy. Alternatively, if there are several people interested, we'll set up a project on SourceForge.
Monday, March 06, 2006
TG Admin Interface (part II)
Posted by
Rick Copeland
at
9:58 AM
Subscribe to:
Post Comments (Atom)

0 comments:
Post a Comment