Thanks for your help. But before I update the open edx version because the 
"SignalHandler" class does not have the "item_deleted" attribute.

El viernes, 17 de febrero de 2017, 21:22:41 (UTC+1), David Ormsbee escribió:
>
> Hi Juan,
>
> There's a Django signal emitted whenever an item is deleted from a course. 
> You should be able to listen for that with your own code without touching 
> anything in core. You can see an example of listening for it here:
>
>
> https://github.com/edx/edx-platform/blob/dda92d13198b935f8ebaaaf1ab29b3f05c2ec6ea/cms/djangoapps/contentstore/signals.py#L63-L75
>
> Keep in mind that catching the signal happens synchronously in the same 
> transaction as the request to delete the item. If you're going to do 
> anything that might fail or take a long time (like a POST over a network 
> connection), you'll probably want to make "my_handler" spin off a celery 
> task instead so that it can run in the background and not slow down the act 
> of deletion. It might look something like this:
>
> from django.dispatch import receiver
>
> from xmodule.modulestore.django import SignalHandler
> from lms import CELERY_APP
>
> @receiver(SignalHandler.item_deleted)
> def my_handler(**kwargs):
>     usage_key = kwargs.get('usage_key') # This is what identifies the unit 
> that was deleted
>     user_id = kwargs.get('user_id')     # This is the user who did the 
> deleting
>     course_key = usage_key.course_key   # The identifier for the course it 
> was deleted from.
>
>     do_something_slow.apply_async(args=(usage_key,))
>
> @CELERY_APP.task(name='mymodule.tasks.do_something_slow')
> def do_something_slow(usage_key):
>     # Whatever slow operation you need to do.
>
>     # If you need to make a network request, please use the "requests" 
> library and
>
>     # be sure to use timeouts.
>
>
> I'm a little fuzzy on that celery syntax, but I think that's it. Hope that 
> helps.
>
> Take care.
>
> Dave
>
> On Fri, Feb 17, 2017 at 12:50 PM, Juan Carlos Hierro <[email protected] 
> <javascript:>> wrote:
>
>> Good,
>>
>> I am developing an xblock and I need to execute an action (hook) when I 
>> delete this xblock from the studio. If possible I would like a solution 
>> without having to modify the core.
>>
>> Thanks and regards!
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "General Open edX discussion" group.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/edx-code/c687fc26-8fd9-4641-9bbd-4cd59ac007fb%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/edx-code/c687fc26-8fd9-4641-9bbd-4cd59ac007fb%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"General Open edX discussion" group.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/edx-code/58c42345-e0f3-443f-86c2-9de750a56eee%40googlegroups.com.

Reply via email to