Signals demo
This commit is contained in:
parent
befc7ad2cd
commit
470e471678
2 changed files with 30 additions and 0 deletions
24
todo/signals.py
Normal file
24
todo/signals.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
import django.dispatch
|
||||
from django.dispatch import receiver
|
||||
|
||||
from todo.utils import toggle_task_completed
|
||||
|
||||
# ### REGISTER SIGNALS ###
|
||||
|
||||
# Demonstrates registering a custom signal
|
||||
pizza_done = django.dispatch.Signal(providing_args=["toppings", "size", "task_id"])
|
||||
|
||||
|
||||
# ### HANDLE SIGNALS ###
|
||||
|
||||
# Demonstrates receiving a custom signal
|
||||
# (which in turn calls an existing todo function, but could do anything)
|
||||
@receiver(pizza_done)
|
||||
def toggle_task_handler(sender, **kwargs):
|
||||
print(sender)
|
||||
print(kwargs)
|
||||
task_id = kwargs.get("task_id")
|
||||
results = toggle_task_completed(task_id)
|
||||
print(results)
|
||||
|
||||
print("Request finished!")
|
|
@ -9,6 +9,7 @@ from todo.forms import SearchForm
|
|||
from todo.models import Task, TaskList
|
||||
from todo.utils import staff_check
|
||||
|
||||
from todo.signals import pizza_done
|
||||
|
||||
@login_required
|
||||
@user_passes_test(staff_check)
|
||||
|
@ -16,6 +17,11 @@ def list_lists(request) -> HttpResponse:
|
|||
"""Homepage view - list of lists a user can view, and ability to add a list.
|
||||
"""
|
||||
|
||||
# Demonstrates sending a custom signal from elsewhere in the project.
|
||||
# In this case when the list of lists is viewed, I'm going to toggle
|
||||
# the "completed" state of task 150 (just for example's sake).
|
||||
pizza_done.send(sender="foobar", toppings=["anchovies", "parmesan"], size=7, task_id=150)
|
||||
|
||||
thedate = datetime.datetime.now()
|
||||
searchform = SearchForm(auto_id=False)
|
||||
|
||||
|
|
Loading…
Reference in a new issue