All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.py.rules.python.S6552.html Maven / Gradle / Ivy

The newest version!

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





© 2015 - 2025 Weber Informatics LLC | Privacy Policy