Can you show all of your code?

On Tue, Dec 6, 2011 at 2:17 PM, lyn2py <[email protected]> wrote:

> Thank you Anthony! That works well!
>
> Just a small question, I am trying to understand web2py better:
> I am using 2 other tables to enable the above scenario:
> (1) auth_account table to hold the account information
> (2) auth_many table for many to many relationship
>
> And when joining both tables and returning the session.account,
> myset = db(
>    (db.auth_account.id==db.auth_many.account_id) &
>    (db.auth_many.user_id==auth.user_id)
> )
> session.account = myset.select(db.auth_account.ALL).first()
>
> I get an extra entry called "auth_many" in the session like:
> account : auth_many : <gluon.dal.Set object at 0x109f76b10>
>
> Why does this happen (I didn't "select" auth_many table), and how can
> it be removed?
> session is blind to users right?
>
>
> On Dec 6, 11:06 pm, Anthony <[email protected]> wrote:
> > Presumably session.account is not always defined -- first you have to
> > save 'account' to the session, so any request before that happens
> > won't include 'account' in the session.
> >
> > session is a Storage() object, so when you attempt to access keys that
> > are not defined, it simply returns None. That's why session.account
> > doesn't produce an error, even if 'account' hasn't been defined.
> > However, session.account.id produces an error because session.account
> > is None, and None does not have an attribute named 'id'.
> >
> > What do you want the default to be in case there is no 'account' in
> > session? Maybe something like:
> >
> > default=session.account and session.account.id or None
> >
> > Anthony
> >
> > On Dec 6, 2:06 am, lyn2py <[email protected]> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Reference post:
> > > Scope authenticated users in accountshttps://
> groups.google.com/group/web2py/browse_thread/thread/4e2bfa3f4...
> >
> > > I used fishwebby's method to scope authenticated users. The code used
> > > is:
> >
> > > >> db._request_tenant = 'account_id'
> > > >> db._common_fields=[Field('account_id',default=session.account.id,
> writable=False, readable=False)]
> >
> > > But I get this error:
> > > AttributeError: 'NoneType' object has no attribute 'id'
> >
> > > When I change default to session.account,>>
> db._common_fields=[Field('account_id',default=session.account,
> writable=False, readable=False)]
> >
> > > It doesn't give error, but when I use session.account.id or
> > > session.account['id'] the error comes back.
> >
> > > Because session.account holds all the account info, it is better than
> > > just to have the id in session.account.
> > > Is this a bug or must I use session.account to hold only the account
> > > id?
> >
> > > Or to solve this another way:
> > > How can I create an accessible "account" variable like "auth", so that
> > > I can use default=account.id or default=auth.account_id?
> >
> > > Thanks.
>

Reply via email to