> Your returned object does not conform to your schema. See how I got it to
> work here:
>
> https://gist.github.com/3104432
Excellent, thanks!
> Next time, just use Array(InvalidValue), its job is to create a wrapper
> object just exactly as you did.
Didn't quite get this. Do you mean that instead of:
iv1 = InvalidValue(Attr='Basal area', Value=100.)
ivs1 = [iv1]
f1 = FailedValidation(id='10', Rule='Some validation rule',
InvalidValues=InvalidValues(InvalidValue=ivs1))
It would be:
iv1 = InvalidValue(Attr='Basal area', Value=100.)
ivs1 = Array(InvalidValue)
...something...
f1 = FailedValidation(id='10', Rule='Some validation rule',
InvalidValues=ivs1)
?
But how do I add the InvalidValue-objects to Array(InvalidValue)
object? Didn't see any obvious class methods for that?
Kind regards,
Jussi
>
>
> Best,
> Burak
>
> On 07/13/12 14:20, Jussi Rasinmäki wrote:
>>
>> Hi,
>>
>> I've got the following test setup defined:
>>
>>
>> ###############################################################################
>> # TestResponse
>>
>> ###############################################################################
>>
>> class InvalidValue(ComplexModel):
>> __namespace__ = 'http://xml.test.org/TestResponse/2012/07/13'
>>
>> Attr = String
>> Value = Double
>>
>> class InvalidValues(ComplexModel):
>> __namespace__ = 'http://xml.test.org/TestResponse/2012/07/13'
>>
>> InvalidValue = InvalidValue.customize(min_occurs='1',
>> max_occurs='unbounded')
>>
>> class FailedValidation(ComplexModel):
>> __namespace__ = 'http://xml.test.org/TestResponse/2012/07/13'
>>
>> id = XmlAttribute(String)
>>
>> InvalidValues = InvalidValues
>> Rule = String
>>
>>
>> class TestResponse(ComplexModel):
>> __namespace__ = 'http://xml.test.org/TestResponse/2012/07/13'
>>
>> TaskId = XmlAttribute(String)
>>
>> FailedValidation = FailedValidation.customize(max_occurs='unbounded')
>>
>>
>>
>> ###############################################################################
>> # Service classes
>>
>> ###############################################################################
>>
>> class TestService(ServiceBase):
>>
>> @rpc(String, _returns=TestResponse)
>> def TestService(data):
>> iv1 = InvalidValue(Attr='Basal area', Value=100.)
>> ivs1 = [iv1]
>> f1 = FailedValidation(id='10', Rule='Some validation rule',
>> InvalidValues=ivs1)
>> iv2 = InvalidValue(Attr='Basal area', Value=100.)
>> ivs2 = [iv2]
>> f2 = FailedValidation(id='11', Rule='Some other validation rule',
>> InvalidValues=ivs2)
>> fv = [f1, f2]
>> res = TestResponse(TaskId='1', FailedValidation=fv)
>> from celery.contrib import rdb;rdb.set_trace()
>> return res
>>
>> application = Application([TestService],
>> 'http://ws.test.org/testws/',
>> interface=Wsdl11(),
>> in_protocol=Soap11(),
>> out_protocol=Soap11())
>>
>> Running it, and dropping to the remote debugger yields:
>>
>> (Pdb++) res
>>
>> TestResponse(FailedValidation=[FailedValidation(InvalidValues=[InvalidValue(Attr='Basal
>> area', Value=100.0)], Rule='Some validation rule', id='10'),
>> FailedValidation(InvalidValues=[InvalidValue(Attr='Basal area',
>> Value=100.0)], Rule='Some other validation rule', id='11')],
>> TaskId='1')
>>
>> But the returned xml is:
>> <senv:Body>
>> <tns:TestServiceResponse>
>> <tns:TestServiceResult TaskId="1">
>> <s0:FailedValidation id="10">
>> <s0:InvalidValues>
>> <s0:InvalidValue/>
>> <s0:InvalidValue/>
>> </s0:InvalidValues>
>> <s0:Rule>Some validation rule</s0:Rule>
>> </s0:FailedValidation>
>> <s0:FailedValidation id="11">
>> <s0:InvalidValues>
>> <s0:InvalidValue/>
>> <s0:InvalidValue/>
>> </s0:InvalidValues>
>> <s0:Rule>Some other validation rule</s0:Rule>
>> </s0:FailedValidation>
>> </tns:TestServiceResult>
>> </tns:TestServiceResponse>
>> </senv:Body>
>>
>> I.e., no content in the InvalidValue elements although the Python
>> objects were there.
>>
>> Doing something wrong here obviously, but what?
>>
>> Kind regards,
>> Jussi
>> _______________________________________________
>> Soap mailing list
>> [email protected]
>> http://mail.python.org/mailman/listinfo/soap
>
>
_______________________________________________
Soap mailing list
[email protected]
http://mail.python.org/mailman/listinfo/soap