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.

Reply via email to