On Thu, 21 Jul 2011 10:23:33 +0300 Burak Arslan <[email protected]> wrote:
> ----- Original message ----- > > To self reference a a complex type, you hace to use something like : > > > > class Foo(ComplexModel): > > bar = None > > > > Foo.bar = Foo It's not working (wrong wsdl and meaningless attribute when used) > class Foo(ComplexModel): > class Attributes(ComplexModel.Attributes) > attr = String > > Foo._type_info['bar'] = Foo > > if i'm not mistaken. check with the source code. Ok that's working, but it's not very straightforward (and undocumented) so yesterday i was messing around with the src code and forked soaplib on github. I came with this (so far, it's working) : https://github.com/tzelen/soaplib/commit/eb9f910458d6d1df3f4b54c2c84a82cb63e4171a Example : class Object(ClassModel): value = AutoRef # value will be Object in the wsdl generation and in the xml objects. With _type_info explained here I looked to patch ClassModelMeta.__new__() to add an exception in the "populate soap member" section to accept something like 'self' (django model style) to do the self referencing. I think it would be simple and easy, but since the type is only created at the end of __new__(), it need a 2-pass algorithm and would probably be ugly. Any thought on adding a mechanism for the self referencing vs editing _type_info by hand? Best regards, T. _______________________________________________ Soap mailing list [email protected] http://mail.python.org/mailman/listinfo/soap
