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.

Reply via email to