Okay, I did it this way now, but the strange setting of args and kw persists... But I'll work around that :D
Thanks! Am Dienstag, 17. April 2012 10:35:42 UTC+2 schrieb Alessandro Molina: > > Sorry, my fault. > I forgot that Pylons based versions of TG reallocate the controller on > each request, as you are hooking the before_validate inside the > __init__ this has the side effect of registering the validate hook > each time you get a request. > > Change it to something like: > > class MyGroupRestController(EasyCrudRestController): > model = model.Group > > def before_put(self, *args, **kw): > print args, kw > > > before_validate(MyGroupRestController.before_put)(MyGroupRestController.put) > > This is one of the things that are going to change on in 2.3+ which > allocates the controllers only on application startup, in the mean > time you must avoid doing anything that changes the controller class > inside the init itself. > > On Tue, Apr 17, 2012 at 10:07 AM, Moritz Schlarb <[email protected]> > wrote: > > Alessandro, a few additional questions came up ;): > > > > I got: > > > > class LessonsCrudController(FilteredCrudRestController): > > model = Lesson > > __table_options__ = {...} > > __form_options__ = {...} > > > > def inject_event(self, *args, **kw): > > log.debug('inject_event') > > for a in args: > > log.debug(a) > > for k in kw: > > log.debug('%s: %s' % (k,kw[k])) > > > > def __init__(self, *args, **kw): > > super(LessonsCrudController, self).__init__(*args, **kw) > > before_validate(self.inject_event)(self.post) > > > > And that is what I got on the logs: > > > > 09:54:46,751 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,751 DEBUG [sauce.controllers.crc] [] > > 09:54:46,751 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,751 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,751 DEBUG [sauce.controllers.crc] [] > > 09:54:46,751 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,751 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,752 DEBUG [sauce.controllers.crc] [] > > 09:54:46,752 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,752 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,752 DEBUG [sauce.controllers.crc] [] > > 09:54:46,752 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,752 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,752 DEBUG [sauce.controllers.crc] [] > > 09:54:46,752 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,752 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,752 DEBUG [sauce.controllers.crc] [] > > 09:54:46,752 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,753 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,753 DEBUG [sauce.controllers.crc] [] > > 09:54:46,753 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,753 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,753 DEBUG [sauce.controllers.crc] [] > > 09:54:46,753 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,753 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,753 DEBUG [sauce.controllers.crc] [] > > 09:54:46,753 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,753 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,753 DEBUG [sauce.controllers.crc] [] > > 09:54:46,754 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,754 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,754 DEBUG [sauce.controllers.crc] [] > > 09:54:46,754 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > 09:54:46,754 DEBUG [sauce.controllers.crc] inject_event > > 09:54:46,754 DEBUG [sauce.controllers.crc] [] > > 09:54:46,754 DEBUG [sauce.controllers.crc] {'event': u'', 'name': > u'text', > > 'teacher': u'3', 'lesson_id': u'text', 'sprox > > _id': u'', 'id': u''} > > > > So you see, the hook gets called very often! It's not event a constant > > number, at first I counted 6 calls, now its more than 10. > > And the arguments are (not merely wrong but) unexected both packed in > args > > like args = [[], {}]. > > > > What am I doing wrong NOW? :D > > > > Thanks a lot, > > best wishes, > > Moritz > > > > Am Dienstag, 17. April 2012 01:28:36 UTC+2 schrieb Moritz Schlarb: > >> > >> Ooooh noo.... > >> I think I was doing something incredibily stupid... > >> > >> I'm not sure what I coded yesterday, I don't seem to have saved it, but > I > >> think I was using the decorator wrongly. > >> > >> I think it was something like: > >> > >> @before_validate() > >> def before_put(...): > >> > >> Thanks a lot! > >> > >> Am Montag, 16. April 2012 10:36:07 UTC+2 schrieb Alessandro Molina: > >>> > >>> How are you registering the decorator? It should work correctly. > >>> I tested it on the fly and it seems to correctly work as expected. > >>> > >>> class MyGroupRestController(EasyCrudRestController): > >>> model = model.Group > >>> > >>> def before_put(self, *args, **kw): > >>> print args, kw > >>> > >>> def __init__(self, *args, **kw): > >>> super(MyGroupRestController, self).__init__(*args, **kw) > >>> before_validate(self.before_put)(self.put) > >>> > >>> There are other ways to register the hook, but they should all work > >>> correctly. > >>> > >>> On Sun, Apr 15, 2012 at 11:54 PM, Moritz Schlarb < > [email protected]> > >>> wrote: > >>> > Hi there! > >>> > > >>> > I'm subclassing EasyCrudRestController and now I have an attribute > >>> > self.event, that I don't want to be changed in the add and edit > forms, > >>> > but > >>> > that needs to be present when writing the form to the database. > >>> > I thought about using a @before_validate hook to simply insert it > into > >>> > kwargs, but that doesn't work since @before_validate doesn't seem to > >>> > get > >>> > called (no logging). > >>> > Another alternative would be using a HiddenField, but then I would > have > >>> > to > >>> > insert the value into the AddForm, which I don't know how to do. > >>> > > >>> > Any help would be nice! ;) > >>> > > >>> > Thanks and good night, > >>> > Moritz > >>> > > >>> > -- > >>> > You received this message because you are subscribed to the Google > >>> > Groups > >>> > "TurboGears" group. > >>> > To view this discussion on the web visit > >>> > https://groups.google.com/d/msg/turbogears/-/qTqkd_d9t0gJ. > >>> > To post to this group, send email to [email protected]. > >>> > To unsubscribe from this group, send email to > >>> > [email protected]. > >>> > For more options, visit this group at > >>> > http://groups.google.com/group/turbogears?hl=en. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "TurboGears" group. > > To view this discussion on the web visit > > https://groups.google.com/d/msg/turbogears/-/LUazTYzarrcJ. > > > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > > http://groups.google.com/group/turbogears?hl=en. > > -- You received this message because you are subscribed to the Google Groups "TurboGears" group. To view this discussion on the web visit https://groups.google.com/d/msg/turbogears/-/poAUjJxzTZEJ. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/turbogears?hl=en.

