There are two more features in trunk that I could use some testing
with (common fields and precints)

Imagine you have created an app "school" designed to manage one
school. It has one database and many tables. You wrote it with one
school in mind. Now you want to turn it into a service so that
multiple schools can register and use it. You want to identify the
school for example by the url http://harvard.anyschool.org and each
school should ONLY see its own users, groups, records, etc. etc.

Before today to do this you would have to rewrite all your tables and
queries.

Today you can do it without changing your code at all. You just have
to add this line after db=DAL(...)

 
db._common_fields=[Field('request_precinct',default=request.env.http_host,writable=False,readable=False)]

Yes. That is it!

How does it work?

1) db._common_fields is a list of fields that you want to add to all
tables.
2) The field called 'request_precinct' is special. Every query
involving a table having this field is automatically filtered byfield
value == field default. In our example the default is
request.env.http_host, i.e. the hostname in the http request which
identifies the school.
3) The field is hidden (writable=False,readable=False) but has a
default therefore it is automatically set for all inserts.

There is nothing special about schools here. You can use it with any
other app.

Give it a try and let me know.

I could use some help in writing some documentation about the new
features added today. ;-)

Massimo



Reply via email to