youll notice theres a comment saying exactly why the order of these
methods cannot be switched.  the solution might be to add a try/except
around oldinit that deregeisters the object.

can you please add a ticket and fully working SQLite example for this ? 
it would help me very much.

- mike


Michael Carter wrote:
> Hello,
> I was having an issue that I've since worked around for my app, but I
> think
> it should be reworked in the code. I'm using revision 1222, specifically
> mapper.py lines 250-263. In my project I used __init__ as a place to check
> kwargs and see if they are valid. If not I raise an Exception.
>
> According to the docs in Advanced Data Mapper oldinit is called before
> register_new.
>
>     oldinit(self, *args, **kwargs)
>     if not nohist:
>         # register_new with Unit Of Work
>         objectstore.uow().register_new(self)
>
> But in the actual code you can see that register_new is called before
> oldinit
>
>                 nohist = kwargs.pop('_mapper_nohistory', False)
>                 session = kwargs.pop('_sa_session',
> objectstore.get_session
> ())
>                 if not nohist:
>                     # register new with the correct session, before the
> object's
>                     # constructor is called, since further assignments
> within the
>                     # constructor would otherwise bind it to whatever
> get_session() is.
>                     session.register_new(self)
>                 if oldinit is not None:
>                     oldinit(self, *args, **kwargs)
>
> So, is there a reason for oldinit to be called after register_new? When I
> raise an error in my __init__, the row still gets committed when
> objectstore.commit() is called, even though the exception is called. This
> is
> obviously not desirable, so if there isn't a reason for register_new to be
> called first then order should be switched.
>
> -Michael
>



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to