A Django app to manage the validation of your data.
Project description
** :warning: this app is still in alpha. expect breaking changes :warning: **
A Django app to manage the validation of your data. Inspired by django-data-tests
read the documentation: https://django-data-validation.readthedocs.io
write tests on your Django models and view the summary in the admin
run the validation when adding/changing an object via django admin
Quick Start
Requirements
python >= 3.6
django >= 2.2
djangorestframework (tested against 3.11)
Installation
clone the repo
git clone https://github.com/VersBersh/django-data-validation.git
change to the django-data-validation directory and install with pip
pip install .
In your project, add rest_framework
and datavalidation
to INSTALLED_APPS
INSTALLED_APPS = (
...
"rest_framework",
"datavalidation.apps.DataValidationConfig",
...
)
from your project directory run the database migrations
./manage.py migrate datavalidation
When running the django-admin server the static files for the datavalidation admin will be served automatically (assuming "django.contrib.staticfiles"
is in INSTALLED_APPS
). Otheriwse, you should also run
./manage.py collectstatic
Basic Usage
On any django model that has data that you would like to validate, add a method decorated with @data_validator
that returns PASS
, FAIL
or NA
. For instance if you have a model with a start and end time, you can add a data_validator to check that the start time is always before the end time
from django.db import models
from datavalidation import data_validator, PASS, FAIL, NA
class YourModel(models.Model):
...
start_time = models.DateTimeField()
end_time = models.DateTimeField(blank=True, null=True)
...
@data_validator
def check_start_time(self):
""" check that the start time is before end time """
if self.end_time is None:
return NA("end time not set")
elif self.start_time < self.end_time:
return PASS
else:
return FAIL("end time is before start time!")
To run the validation for all models
./manage.py validate
or for a specific model
./manage.py validate yourapp.YouModel
See Writing Data Validators for more details and examples of data validators
Optionally, you can add the data_validaiton.models.DataValidationMixin to your models to provide some additional methods for querying the validation results
from datavalidation.models import DataValidationMixin
class YouModel(DataValidationMixin, models.Model):
...
# in a shell
print(YouModel.datavalidation_status)
>>> Status.PASSING # hopefully :)
Finally, you can also add data_validaiton.admin.DataValidationMixin to your django admin classes to review the data in the admin. See Setting up the Admin for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-data-validation-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcab65483107afd8241a19e9501f8173a0a5a5e814584fa8370ecc76e19e550f |
|
MD5 | 09760125ba64209d291b804a5c77ed7c |
|
BLAKE2b-256 | 9815cceaf8d7cd78145c7c31deab4c04cd92f7c6cba209e11a011ce59e04ed12 |
Hashes for django_data_validation-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebd37b7725374d2ff21618b0bb08f0bdb2a9abbd78d09b8a9f3aedf60ce01358 |
|
MD5 | d1b0a05d4608ceccf0de287b4494655c |
|
BLAKE2b-256 | 8ab80acf112974c60a3ff41fd50b5687c9ebcb15f352308b3509a44e7e4b93f5 |