On 14 avr, 09:32, alecs <alecs....@gmail.com> wrote:
> How can I send a parameter to a receiver function ? This is wrong :
> signals.post_save.connect(receiver=refresh_index_page(fragment_name="categories_index",
> sender=Post)
>
> I have avoided this problem by wrapping my function in another
> function, but a bit inconvenient :)
>
> def refresh_index_page(sender, *args, **kwargs):
>     invalidate_template_cache(fragment_name="categories_index", *args,
> **kwargs)
>
> signals.post_save.connect(receiver=refresh_index_page, sender=Post)

If you run python >= 2.5, this should work :

from functools import partial
signals.post_save.connect(
    receiver=partial(refresh_index_page,
fragment_name="categories_index"),
    sender=Post
    )

cf http://docs.python.org/release/2.5/whatsnew/pep-309.html for more
on partial application.

If you need backward compat with older Python versions, there is/was
something pretty similar in Django itself named curry, so this should
works as well:

from django.utils.functional import curry
signals.post_save.connect(
    receiver=curry(refresh_index_page,
fragment_name="categories_index"),
    sender=Post
    )

HTH



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to