I removed wizard from extra filed.

At least there is only one record inserted into organization table (before 
that it inserted two), but wizzard still returns 0

On Thursday, February 12, 2015 at 11:28:20 AM UTC+1, mcamel wrote:
>
> Hi,
>
> It seems wizard is returning id=0 instead of the actual organization id. 
> Try removing the wizard from extra fields to guess more.
>
> Just in case, you can try this other syntax:
>    
>  auth.settings.register_onvalidation.append(lambda form: add_organization(
> form))
>
>
> Regards.
>
>
> El jueves, 12 de febrero de 2015, 10:18:46 (UTC+1), Yebach escribió:
>>
>> Hello
>>
>> I have a question regarding adding extra fields to auth_user table 
>>
>> now I saw a couple of posts but none answers my question
>>
>> I have a table organization. On user registration user adds organization 
>> name in form. this value should be inserted into table organization and id 
>> of the record into auth_user.organization field. 
>>
>> Also some other default values should be inserted into another config 
>> table.
>> I had this working now I am getting an error 
>> <class 'psycopg2.IntegrityError'> insert or update on table "auth_user" 
>> violates foreign key constraint "auth_user_organization_fkey" DETAIL: Key 
>> (organization)=(0) is not present in table "organizations".
>>
>> my db.py code
>>
>> db.define_table('organizations',
>>     Field('id',type='id'),
>>     Field('o_daten', type='datetime',default=request.now),
>>     Field('o_dateu', type='datetime',default=request.now),
>>     Field('o_status',type='integer' ),
>>     Field('o_code',type='string', length = 64 ),
>>     Field('o_name',type='string', label= T('Organization name'), length = 
>> 256),
>>     Field('o_telnumber',type='string',label= T('Telephone number'), 
>> length = 64 ),
>>     Field('o_faxnumber',type='string',label= T('Fax Nb.'), length = 64 ),
>>     Field('o_street',type='string',label= T('Street'), length = 64 ),
>>     Field('o_post',type='string',label= T('Post'), length = 64 ),
>>     Field('o_city',type='string',label= T('City'), length = 64 ),
>>     Field('o_state',type='string',label= T('State'), length = 64 ),
>>     Field('o_country',type='string',label= T('Country'), length = 64 ),
>>     Field('o_TaxNumber',type='string',label= T('Tax number'), length = 64 
>> ),
>>     Field('o_rootid',type='integer' ),
>>     Field('o_parentid',type='integer' ),
>>     Field('o_levelid',type='integer'), 
>>     Field('o_positionx',type='string', length = 64 ),
>>     Field('o_positiony',type='string', length = 64 ),
>>     Field('o_note',label= 'Note',type = 'text'),
>>     migrate=settings.migrate
>> )
>>
>>
>>
>> then extra field, autocomplete is not really necessary
>>
>> auth.settings.extra_fields['auth_user'] = [ Field('organization', 
>> 'reference organizations', 
>>                                                   
>> widget=SQLFORM.widgets.autocomplete(request, db.organizations.o_name, 
>> id_field=db.organizations.id),
>>                                                    label = 
>> T('Organization'))]   
>>
>>
>> my function to add organization and rows in config table
>>
>> def add_organization(form):
>>     """
>>     Always adds new organization
>>    
>>     """
>>
>> #    if not form.vars.organization:
>>    # print "form.vars ",form.vars
>>     ret = 
>> db.organizations.validate_and_insert(o_name=form.vars._autocomplete_organization_o_name_aux)
>>     
>>  
>>     if ret.errors:
>>         form.errors.organizations = ret.errors['name']
>>     else:
>>        
>>         org = ret.id
>>         """
>>         Dodamo podatke v config tabelo ko se kreira nova organizacija
>>         holiday_duration    1    480    portal    Default trajanje 
>> praznika
>>         vacation_duration    1    480    portal    Default trajanje 
>> dopusta
>>         holiday_color    1    008000    portal    temno zelena
>>         vacation_color    1    00ff00    portal    svetlo zelena
>>         """
>>         db.config.insert(co_code = "holiday_duration", co_value = '420', 
>> co_organisation = org, co_note = 'Default trajanje praznika')
>>         db.config.insert(co_code = "vacation_duration", co_value = '480', 
>> co_organisation = org , co_note = 'Default trajanje dopusta')               
>>  
>>         db.config.insert(co_code = "holiday_color", co_value = '008000 ', 
>> co_organisation = org, co_note = 'Default barva holiday temno zelena')     
>>         db.config.insert(co_code = "vacation_color", co_value = '00ff00 
>> ', co_organisation = org, co_note = 'Default barva vacation svetlo zelena')
>>         db.config.insert(co_code = "minimum_time_period", co_value = '15 
>> ', co_organisation = org, co_note = 'Default vrednost časovne periode')
>>         
>>         
>>     #if not form.vars.organizations:
>> #        print form.vars._autocomplete_organizations_o_name_aux
>>         org_name = form.vars._autocomplete_organizations_o_name_aux
>>         ret = db.organizations.insert(o_name = org_name)
>>
>>
>> and at the end 
>>
>> auth.settings.register_onvalidation = add_organization
>>
>> ## create all tables needed by auth if not custom tables
>> auth.define_tables(username=False, signature=False)
>>
>>
>>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to