python.django.compatibility.django-2_0-compat.django-compat-2_0-extra-forms

profile photo of semgrepsemgrep
Author
7,173
Download Count*

The django.forms.extras package is removed in Django 2.0.

Run Locally

Run in CI

Defintion

rules:
  - id: django-compat-2_0-extra-forms
    message: The django.forms.extras package is removed in Django 2.0.
    languages:
      - python
    severity: WARNING
    pattern-either:
      - pattern: from django.forms import extras
      - pattern: from django.forms.extras import $X
      - pattern: from django.forms import extras as $Y
      - pattern: from django.forms.extras import $X as $Y
      - pattern: import django.forms.extras
      - pattern: import django.forms.extras.$X
      - pattern: import django.forms.extras as $Y
      - pattern: import django.forms.extras.$X as $Y
    metadata:
      category: compatibility
      technology:
        - django
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

django-2_0-compat.py

class SignalsWeak:
    from django.dispatch.signals.Signal import disconnect
    # ruleid: django-compat-2_0-signals-weak
    disconnect(weak=True)
    # ok: django-compat-2_0-signals-weak
    disconnect()

class CheckAggregateSupport:
    from django.db.backends.base.BaseDatabaseOperations import check_aggregate_support
    # ruleid: django-compat-2_0-check-aggregate-support
    check_aggregate_support()

class FormsExtras:
    # ruleid: django-compat-2_0-extra-forms
    from django.forms import extras

    # ruleid: django-compat-2_0-extra-forms
    from django.forms.extras import a

    # ruleid: django-compat-2_0-extra-forms
    from django.forms import extras as a

    # ruleid: django-compat-2_0-extra-forms
    from django.forms.extras import a as b

    # ruleid: django-compat-2_0-extra-forms
    import django.forms.extras

    # ruleid: django-compat-2_0-extra-forms
    import django.forms.extras as extras

    # ruleid: django-compat-2_0-extra-forms
    import django.forms.extras.a

    # ruleid: django-compat-2_0-extra-forms
    import django.forms.extras.a as b

class AssertRedirects:
    # ruleid: django-compat-2_0-assert-redirects-helper
    self.assertRedirects(expected_url="https://my.host/foo/bar", host="my.host")

    # ok: django-compat-2_0-assert-redirects-helper
    self.assertRedirects(expected_url="https://my.host/foo/bar")

    # ruleid: django-compat-2_0-assert-redirects-helper
    assertRedirects(expected_url="https://my.host/foo/bar", host="my.host")

    # ok: django-compat-2_0-assert-redirects-helper
    assertRedirects(expected_url="https://my.host/foo/bar")

class AssignmentHelper:
    # ruleid: django-compat-2_0-assignment-tag
    Library().assignment_tag(settings)

    # ruleid: django-compat-2_0-assignment-tag
    assignment_tag(settings)