I implemented something similar using PHP years ago.

The only advantage to using request_tenant is you don't have to type two 
lines in every query:

(db.mytable.identifier==session.auth.user.identifier) &
(db.mytable.is_active==True)

But since we have snippets, it's not too hard :)

On Saturday, June 30, 2012 7:45:02 AM UTC-4, Ovidio Marinho wrote:
>
> Yes, I would like to Usai Id and not the host / ip. 
>
> We know that multi-tentant came to automating a service saas in 
> web2py, but as literature, and we lack a bit of a hurry to create one 
> field in the table auth.user.hospital and popular with the same 
> content of created_by, so we have a function in the controller 
>
> def testegrupo (): 
>      rows = db (db.t_medico.f_hospital == auth.user.hospital). select () 
>      return dict (rows = rows) 
>
> we know this is a hack of the tenant for web2py but it works. But I 
> will implement the changes proposed in this DISCUSSION for the tenant 
> to operate as a service saas. 
>
>
>
>        Ovidio Marinho Falcao Neto 
>                 Web Developer 
>              [email protected] 
>           [email protected] 
>                  ITJP - itjp.net.br 
>                83   8826 9088 - Oi 
>                83   9334 0266 - Claro 
>                         Brasil 
>
>
>
> 2012/6/29 Michele Comitini <[email protected]>: 
> > Ovidio, 
> > 
> > I wonder if you could use auth.user.id or auth.membership.id as key 
> > instead of host/ip? 
> > 
> > If the above is not viable, Massimo suggestion to have separate 
> > databases is very good IMHO and you can build a Data Warehouse 
> > http://en.wikipedia.org/wiki/Data_warehouse by using postgresql 
> > clustering capabilities or one of many postgresql synchronization 
> > tools. 
> > 
> > mic 
> > 
> > 
> > 2012/6/29 Ovidio Marinho <[email protected]>: 
> >> Well now after my DAL I have Instructions 
> >> db = DAL ('postgres :/ / postgres: passwd @ localhost: 5432/mybd') 
> >> 
> db._common_fields=Field('request_tenant',default=request.env.http_host,writable=False,readable=False)]
>  
>
> >> 
> >> What happened? in all my tables I have request_tenant the field, and 
> >> when I do a drive automatically writes the localhost: 8000. But now 
> >> how is that several users with different hosts with dhcp changing its 
> >> access each time with a different ip that can work? 
> >> 
> >> this post from Massimo does exactly what I want with the school he has 
> >> provided for various and simultaneous access, I could spend the 
> >> Massimo setting this app? 
> >> 
> >> http://www.mail-archive.com/[email protected]/msg64351.html 
> >> 
> >>        Ovidio Marinho Falcao Neto 
> >>                 Web Developer 
> >>              [email protected] 
> >>           [email protected] 
> >>                  ITJP - itjp.net.br 
> >>                83   8826 9088 - Oi 
> >>                83   9334 0266 - Claro 
> >>                         Brasil 
> >> 
> >> 
> >> 
> >> 2012/6/28 Massimo Di Pierro <[email protected]>: 
> >>> Do me the issue is, should all data always be filtered by hospital. 
> >>> If there should only be filtered in some cases and not in other, use 
> >>> explicit queries 
> >>> If some tables are always filtered and some are not, you may want to 
> use the 
> >>> tenant feature. 
> >>> 
> >>> 
> >>> On Thursday, 28 June 2012 05:45:13 UTC-5, Ovidio Marinho wrote: 
> >>>> 
> >>>> I can not split into separate database, as the management reports 
> need 
> >>>> to filter all information. What I need is that the data are shown to 
> >>>> hosptal (1) is only seen by him. No problem if all hospitals being in 
> >>>> the same database, so is the question of security in view. When the 
> >>>> login Hospital (1) is made only data related to hospital (1) should 
> >>>> appear on the screen. 
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>>        Ovidio Marinho Falcao Neto 
> >>>>                 Web Developer 
> >>>>              [email protected] 
> >>>>           [email protected] 
> >>>>                  ITJP - itjp.net.br 
> >>>>                83   8826 9088 - Oi 
> >>>>                83   9334 0266 - Claro 
> >>>>                         Brasil 
> >>>> 
> >>>> 
> >>>> 
> >>>> 2012/6/27 Massimo Di Pierro <[email protected]>: 
> >>>> > I would suggest you use a different database (a different 
> connection 
> >>>> > string) 
> >>>> > for each hospital depending on the hostname. 
> >>>> > 
> >>>> > <hospital>.domain.com 
> >>>> > import re; regex = re.compile('.*\://(.*?)/.* 
> >>>> > db = DAL('postgresq://..../%s' % 
> >>>> > regex.match(request.env.http_host).group(1)) 
> >>>> > 
> >>>> > In this way you keep your data separate (which is better for 
> security) 
> >>>> > and 
> >>>> > will allow you scale horizontally by setting up multiple db server 
> >>>> > instances. 
> >>>> > 
> >>>> > 
> >>>> > 
> >>>> > On Wednesday, 27 June 2012 18:07:44 UTC-5, Ovidio Marinho wrote: 
> >>>> >> 
> >>>> >> I am making an application to control government medical 
> appointments 
> >>>> >> in more than fifty hospitals all use a single postgres database, 
> but 
> >>>> >> each hospital must have administrator access, Operator and User, 
> and 
> >>>> >> each access must be made with the view of their unique data . 
> >>>> >> 
> >>>> >> is this. 
> >>>> >> 
> >>>> >> 
> >>>> > 
>

Reply via email to