>
> 1st question: i want to use auth_user table to store my internal staffs 
> and external customers info, so that I can leverage all the built-in 
> authentication and authorisation functions provided by web2py out of the 
> box (please let me know if I should not do that). I added some fields in 
> auth_user as below, and got this error - 'Cannot resolve reference 
> customer in auth_user definition'if I didn't use lazy_tables=True in DAL. 
> Is lazy_tables=True the solution for this case?
> auth.settings.extra_fields['auth_user']= [
>   Field('customer', 'reference customer'),
>   Field('mobile', requires=IS_NOT_EMPTY()),
>   Field('title', requires=IS_NOT_EMPTY()),
>   ]
>

This can be corrected by defining the db.customer table before defining the 
Auth tables. Note, it used to be possible to create a reference to table 
that was not yet defined (even with lazy=False), and according to this 
thread 
<https://groups.google.com/forum/#!msg/web2py-developers/cU_ZpBAOXAU/6Hx2OPxEDuIJ>,
 
it still should be possible, but apparently that is broken. An issue was 
opened in the pydal repository about this a while back but was closed with 
wontfix. I have added a comment suggesting it be re-opened: 
https://github.com/web2py/pydal/issues/258#issuecomment-290439396
 

> Or i should leverage CAS to store all the user/group/membership info in 
> 'provider', and let accounting & ticketing 'consumer' applications to 
> access them (my test didn't work with auth_user referencing customer table 
> using CAS)?
>

Please show you code (though CAS might not be what you want if you also 
need to share groups/memberships across apps, as CAS only handles 
login/authentication).
 

> Or should I create an auth_db = DAL(..) having these 2 web2py applications 
> using this auth_db connection for authentication/authorization, and create 
> accounting_db=DAL(..) and ticketing_db=DAL(..) for application specific 
> databases?
>

You will not be able to create reference fields in the other DBs that 
reference records in auth_db.auth_user (which I assume you would need to 
do), so this approach likely won't work for you. Alternatively, you could 
keep everything in a single database and simply share the database between 
the two apps.
 

> Or I should put everything in a single web2py application folder, create 2 
> controllers for accounting and ticketing respectively (what if I want to 
> sell the accounting application to a client but not the ticketing 
> application)?
>

Well, if you might want to sell just one app at some point, this approach 
won't work well.
 

> 3rd question: i have a customer table, an invoice table, an item table in 
> my accounting application, below is the simplified version. When I created 
> a view_customer() action with customer_grid = 
> SQLFORM.smartgrid(db.customer,linked_tables=['auth_user','invoice'],user_signature=False),
>  
> it only showed 'Auth users' link but not 'Invoice', why? 
> Now I tried to create invoice_grid=SQLFORM.smartgrid(db.invoice, 
> linked_tables=['item'], 
> constraints=dict(invoice=db.invoice.customer==request.args(0))), the 
> 'Items' link (when I clicked) on the grid raised error - Query Not 
> Supported: invalid literal for long() with base 10: 'item' and 'no records 
> found. when i didn't have constraints set, the 'Items' link worked 
> correctly. Any ideas?
>

Answered here 
<https://groups.google.com/d/msg/web2py/hf_olaWbIBE/M_mrLJRYAgAJ>.

Anthony

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to