Alright, I turned those fields to be strings, also had to modify the DAL and added (no idea why): ", adapter_args=dict(foreign_keys=False), And now it's working. Thanks a lot of the support, the teaching and the patient.
On Saturday, February 1, 2014 11:19:36 AM UTC+2, Avi A wrote: > > Yes, some of the params are reference type fields. > Each test I want to post the results of, has it's metadata, (the reference > type fields, which are all strings at their root table.) and the results > themselves. (integers). > > On Friday, January 31, 2014 11:44:01 PM UTC+2, Anthony wrote: >> >> The string field you showed was for f_platform_name, but in your >> test_params, you have f_platform, which I assume must be an integer or >> reference field (the str(long(obj)) code is only called for id, integer, >> and reference type fields in the DAL). >> >> On Friday, January 31, 2014 4:18:53 PM UTC-5, Avi A wrote: >>> >>> Well, not sure what to check. >>> You saw the tables definitions and this is the call: >>> test_params = {'api_key': 'e5dcc229-906d-47f8-b6ab-d184509f4f0b', >>> 'f_test': 'test', 'f_project': 'Reader', 'f_platform': 'Android', >>> 'f_device': 'Toshiba', 'f_steps': '10', 'f_matches':'7', 'f_missmatches': >>> '3'} >>> >>> >>> >>> >>> >>> >>> On Friday, January 31, 2014 10:58:11 PM UTC+2, Anthony wrote: >>>> >>>> Doesn't look like that's going into a string field. Maybe check the >>>> call being made. >>>> >>>> On Friday, January 31, 2014 3:20:51 PM UTC-5, Avi A wrote: >>>>> >>>>> return str(long(obj)) >>>>> ValueError: invalid literal for long() with base 10: 'Android' >>>>> >>>>> and that's where Android goes to: >>>>> >>>>> db.define_table('t_types', >>>>> Field('f_platform_name', type='string', >>>>> label=T('Platform Name')), >>>>> auth.signature, >>>>> format='%(f_platform_name)s', >>>>> migrate=settings.migrate) >>>>> >>>>> >>>>> >>>>> >>>>> On Friday, January 31, 2014 10:04:05 PM UTC+2, Anthony wrote: >>>>>> >>>>>> Oops, this: >>>>>> >>>>>> t.validate_and_insert(t._filter_fields(**post_params)) >>>>>> >>>>>> should be: >>>>>> >>>>>> t.validate_and_insert(**t._filter_fields(post_params)) >>>>>> >>>>>> Anthony >>>>>> >>>>>> On Friday, January 31, 2014 2:46:23 PM UTC-5, Avi A wrote: >>>>>>> >>>>>>> Almost there... >>>>>>> >>>>>>> TypeError: _filter_fields() got an unexpected keyword argument 'f_steps' >>>>>>> >>>>>>> and I do have it on the model: >>>>>>> >>>>>>> db.define_table('t_tests_results', >>>>>>> Field('f_test', type='reference t_tests', >>>>>>> label=T('Test')), >>>>>>> Field('f_project', type='reference t_projects', >>>>>>> label=T('Project')), >>>>>>> Field('f_platform', type='reference t_types', >>>>>>> label=T('Platform')), >>>>>>> Field('f_device', type='reference t_devices', >>>>>>> label=T('Device')), >>>>>>> Field('f_steps', type='integer', >>>>>>> label=T('Steps')), >>>>>>> Field('f_matches', type='integer', >>>>>>> label=T('Matches')), >>>>>>> Field('f_missmatches', type='integer', >>>>>>> label=T('Missmatches')), >>>>>>> auth.signature, >>>>>>> format='%(f_test)s', >>>>>>> migrate=settings.migrate) >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Friday, January 31, 2014 9:32:06 PM UTC+2, Anthony wrote: >>>>>>>> >>>>>>>> Sorry, it should be post_params['api_key'] rather than >>>>>>>> post_params.api_key. >>>>>>>> >>>>>>>> Anthony >>>>>>>> >>>>>>>> On Friday, January 31, 2014 2:20:57 PM UTC-5, Avi A wrote: >>>>>>>>> >>>>>>>>> I did, but now I see that i didn't put it left enough. >>>>>>>>> Now the error I get: >>>>>>>>> >>>>>>>>> if db(db.auth_user.api_key == post_params.api_key).count(): >>>>>>>>> >>>>>>>>> AttributeError: 'dict' object has no attribute 'api_key' >>>>>>>>> >>>>>>>>> Maybe I should pop it out of the URL params like you suggested >>>>>>>>> above? >>>>>>>>> >>>>>>>>> On Friday, January 31, 2014 9:09:21 PM UTC+2, Anthony wrote: >>>>>>>>>> >>>>>>>>>> Is that what's in r.content? If so, looks like you didn't add the >>>>>>>>>> return locals() line at the bottom of your api() function. >>>>>>>>>> >>>>>>>>>> Anthony >>>>>>>>>> >>>>>>>>>> On Friday, January 31, 2014 1:23:53 PM UTC-5, Avi A wrote: >>>>>>>>>>> >>>>>>>>>>> rest_action = _action().get(method, None) >>>>>>>>>>> AttributeError: 'NoneType' object has no attribute 'get' >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Friday, January 31, 2014 2:12:44 PM UTC+2, Anthony wrote: >>>>>>>>>>>> >>>>>>>>>>>> Yes, now check what is in r.content. >>>>>>>>>>> >>>>>>>>>>> -- 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/groups/opt_out.