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.models import Task, TaskList
|
||||||
from todo.utils import staff_check
|
from todo.utils import staff_check
|
||||||
|
|
||||||
|
from todo.signals import pizza_done
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@user_passes_test(staff_check)
|
@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.
|
"""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()
|
thedate = datetime.datetime.now()
|
||||||
searchform = SearchForm(auto_id=False)
|
searchform = SearchForm(auto_id=False)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue