Skip to main content

Linter for django projects

Project description

https://travis-ci.org/geerk/django_linter.svg?branch=master

This is a simple extension for pylint that aims to check some common mistakes in django projects.

Contributions are welcome.

Installation

pip install django_linter

Usage

It can be used as a plugin or standalone script. To use it as a plugin it should be installed first, then run with pylint:

pylint --load-plugins=django_linter TARGET

To use it as a standalone script:

usage: django-linter [-h] TARGET [TARGET ...]

Simple extension for pylint to check django projects for common mistakes.

positional arguments:
  TARGET      python package or module

optional arguments:
  -h, --help  show this help message and exit

Implemented checks

Settings:

  • E5221 (required-setting-missed): Used when required setting missed in settings file.

  • E5222 (empty-setting): Used when setting is empty value.

  • W5221 (improper-settings-import): Used when settings is not imported from django.conf

Models:

  • W5241 (nullable-text-field): Used when text field has null=True.

  • W5242 (float-money-field): Used when money related field uses FloatField.

  • W5243 (naive-datetime-used): Used when there is datetime.now is used.

  • W5244 (related-field-named-with-id): Used when related field is named with _id suffix

  • W5245 (unicode-method-absent): Used when model has no unicode method.

  • W5246 (unicode-method-return): Used when unicode method does not return unicode.

  • W5247 (model-field-redefinition): Used when there are more than one model field with the same name.

  • W5248 (get-absolute-url-without-reverse): Used when get_absolute_url method is defined without using reverse function.

Forms:

  • W5211 (form-field-redefinition): Used when there are more than one form field with the same name.

Views:

  • W5231 (is-authenticated-not-called): Used when is_authenticated method is not called

  • W5232 (objects-get-without-doesnotexist): Used when Model.objects.get is used without enclosing it in try-except block to catch DoesNotExist exception.

  • W5233 (fetching-db-objects-len): Used when there is db query that fetches objects from database only to check the number of returned objects.

  • W5234 (raw-get-post-access): Used when request.GET or request.POST dicts is accessed directly, it is better to use forms.

Layout:

  • W5201 (forms-layout): Used when form class definition is not in forms module.

  • W5202 (admin-layout): Used when admin class definition is not in admin module.

Misc:

  • W5251 (print-used): Used when there is print statement or function

Implemented suppressers

  • “Meta” classes

  • urlpatterns

  • logger

Implemented transformers

Models

  • “id” field

  • “objects” manager

  • “DoesNotExist” exception

  • “MultipleObjectsReturned” exception

Testing

  • test responses (django and DRF)

Factories

  • factory-boy’s factories (factory should return django model, but not always possible to infer model class)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_linter-0.7.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_linter-0.7-py2.py3-none-any.whl (16.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django_linter-0.7.tar.gz.

File metadata

  • Download URL: django_linter-0.7.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for django_linter-0.7.tar.gz
Algorithm Hash digest
SHA256 543bfe9f8eb11d3ff56fc6575864dd7dad8af60cd4eab0ecf6b1def220d52c87
MD5 3f2e488184a0010a0fa5d12cba0fcc61
BLAKE2b-256 8adff41bfa5f636db0ce9cfe9d3ddbbb06b224ceffe9162e6ccc6fbe9793964d

See more details on using hashes here.

File details

Details for the file django_linter-0.7-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_linter-0.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 60b7b31ac84a806744607751cb925504060b6b211c42bd9e35bd7047505e70e4
MD5 cd45d4b102d55ccc913780dcd1ce5d76
BLAKE2b-256 dbed53eff23664ea5cec20d24e5419f342cc81486ecf6d4133106c61c03030ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page