Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
Inline adoc files when they are included exactly once.

Also fix language tags because this inlining gives us better information
on what language the code is written in.
2023-05-25 14:18:12 +02:00

66 lines
1.7 KiB
Plaintext

This rule enforces that the '@receiver' decorator is placed on top of all other decorators in Django functions.
== Why is this an issue?
In Django, the '@receiver' decorator is used to register signal handlers. These handlers are used to respond to events that occur in the application, such as a user logging in or a database record being saved.
The order in which decorators are applied can have a significant impact on their behavior. In the case of the @receiver decorator, it is important that it is applied first, before any other decorators, in order to ensure that the signal handler is registered correctly.
If the '@receiver' decorator is not applied first, the decorators placed above it will be ignored, which can result in unexpected behavior or even errors in the application.
== How to fix it
To fix this issue, simply move the '@receiver' decorator to the top of the list of decorators used to decorate the function.
=== Code examples
==== Noncompliant code example
[source,python]
----
from django.dispatch import receiver
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
@receiver(some_signal)
def my_handler(sender, **kwargs):
...
----
==== Compliant solution
[source,python]
----
from django.dispatch import receiver
from django.views.decorators.csrf import csrf_exempt
@receiver(some_signal)
@csrf_exempt
def my_handler(sender, **kwargs):
...
----
== Resources
=== Documentation
* https://docs.djangoproject.com/en/4.1/topics/signals/[Django signals]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Move this '@receiver' decorator to the top of the other decorators.
'''
endif::env-github,rspecator-view[]