So in this example request_precinct would equal harvard.anyschool.org?

Matt

On May 25, 9:47 pm, Massimo Di Pierro <massimo.dipie...@gmail.com>
wrote:
> 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 urlhttp://harvard.anyschool.organd 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