Hi Anthony, thanks again for taking time out to explain and answered below
questions. I did define the customer table before auth tables were created
and used lazy_tables=False, it works this time when I put all the tables in
a single database without using CAS (i do need to share group/membership
across app). One last point I want to raise for potentially other readers
is it works only when i took out the auth.signature in customer table (as
customer table needs to be defined before auth tables are created. Since I
watched massimo's tutorial videos having this auth.signature in most / all
cases, I thought it should always include it as best practice. Many thanks!
On Thursday, March 30, 2017 at 11:31:22 PM UTC+8, Anthony wrote:
>
> 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 your 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.