I agree. This is the app flow: A user defines on the site a generic data he will use in the tests. Each data is in a separate table, and then on the test he can combine different combinations: -test name. combinations: - project: (tablet pdf reader, on line editor, etc") -platform: (android, ios, browser, desktop, etc). - device: (nexus, ipad x, toshiba, etc".) -test number of steps. -test number passed. -test number failed. So the table where posting to is the -tests_results: -project reference -platform reference -device reference passed integer failed integer.
Then I was able to display graphs for tests results with the ability to filter by test name, project, platform, or device. Without the ability to post data to reference fields it's a problem to achieve it. If I was able to post to reference fields, I was able to achive it. On Saturday, February 1, 2014 5:27:22 PM UTC+2, Anthony wrote: > > Not sure that's the right approach. A reference field is not a string, it > is an integer storing the id of the record in another table. It does not > refer to a string value in another table but rather to an entire record in > another table. If you API receives some parameters that are not fields in > the table getting the insert, then you can't just directly insert the > parameters in the table. Rather, you'll need to use the parameters to fetch > the values you need to insert and then do the insert. It's hard to say how > it should look without knowing your data model and what you're trying to > achieve with the API. > > Anthony > > On Saturday, February 1, 2014 9:16:09 AM UTC-5, Avi A wrote: >> >> 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.