>
> 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.