org.sonar.l10n.py.rules.python.S6552.html Maven / Gradle / Ivy
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
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
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