Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/browniebroke/flake8-django-migrations
Flake8 plugin to lint for backwards incompatible database migrations
https://github.com/browniebroke/flake8-django-migrations
hacktoberfest
Last synced: 12 days ago
JSON representation
Flake8 plugin to lint for backwards incompatible database migrations
- Host: GitHub
- URL: https://github.com/browniebroke/flake8-django-migrations
- Owner: browniebroke
- Created: 2020-11-10T18:10:33.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-30T11:44:20.000Z (6 months ago)
- Last Synced: 2024-05-01T13:51:54.872Z (6 months ago)
- Topics: hacktoberfest
- Language: Python
- Size: 316 KB
- Stars: 9
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
- awesome-flake8-extensions - flake8-django-migrations - Plugin to lint for backwards incompatible database migrations in Django. (Library-specific checks)
README
# flake8-django-migrations
---
**Source Code**: https://github.com/browniebroke/flake8-django-migrations
---
Flake8 plugin to lint for backwards incompatible database migrations.
## Installation
Install using `pip` (or your favourite package manager):
```sh
pip install flake8-django-migrations
```## Usage
This plugin should be used automatically when running flake8:
```sh
flake8
```## Checks
This is the list of checks currently implemented by this plugin.
### DM001
`RemoveField` operation should be wrapped in `SeparateDatabaseAndState`.
Such an operation should be run in two separate steps, using `SeparateDatabaseAndState`, otherwise it is not backwards compatible.
- Step 1: remove the field from the model and code. For foreign key fields, the foreign key constraint should also be dropped.
- Step 2: remove the column from the database.#### Bad
```python
class Migration(migrations.Migration):
operations = [
migrations.RemoveField(
model_name="order",
name="total",
),
]
```#### Good
```python
class Migration(migrations.Migration):
operations = [
migrations.SeparateDatabaseAndState(
state_operations=[
migrations.RemoveField(
model_name="order",
name="total",
),
],
),
]
```