Perhaps I misunderstand the workflow. The solution cannot be to change an 
Auth function to handle a specific custom field.

The proper signature for the function is 

  get_or_create_user(self, keys, update_fields=['email'])

so if you want to pass employee_id to keys and expect it to update the 
record in case it is found you need to pass

  get_or_create_user(self, keys, update_fields=['email', 'employee_id'])

There are two options here:
1) allow some auth.settings.update_fields to be specified so the function 
is called with right parameters
2) change it so that update_fields defaults to keys.keys()

2) would solve the problem automatically but it may break something. Not 
sure.

Please open a ticket: http://code.google.com/p/web2py/issues/list
but let's discuss it some more.

Massimo




On Tuesday, 8 January 2013 12:09:09 UTC-6, Ignacio Ocampo wrote:
>
> Yes,
>
> I only uses:
>
> auth.settings.login_form=MyAuth(
>    param1="value1",
>    param2="value"
> )
>
> It's all, I never call and writes/update in the auth_user anywhere.
>
> In gluon/tools.py login function, web2py check if they would use their 
> login form or from a central source (line 1955)
>
> At line 2068 web2py determined that central authentication would be used.
>
> At line 2075 web2py call: user = 
> self.get_or_create_user(table_user._filter_fields(cas_user))
>
> At line 1724, within get_or_create_user function, after that web2py 
> determine that the user exists:
>
> *update_keys = dict(registration_id=keys['registration_id']) #here is the 
> BUG*
>
> I solved it with:
>
> *update_keys = dict(registration_id=keys['registration_id'], 
> employee_id=keys['employee_id'])*
>
> So, I think that we need to update the gluon/tools.py file, to improve the 
> update of external fields.
>
> On Tuesday, January 8, 2013 11:43:44 AM UTC-6, Anthony wrote:
>>
>> On Tuesday, January 8, 2013 12:08:34 PM UTC-5, Ignacio Ocampo wrote:
>>
>>> I only return a dict in the get_user, web2py does all the work.
>>>
>>> web2py call the get_user method, and web2py update the auth_user table 
>>> with the dict values.
>>>
>>
>>
>> Yes, but where are you telling web2py to update the auth_user table? Can 
>> you show the code?
>>
>> Anthony
>>
>

-- 



Reply via email to