leukeleu-django-gdpr is a tool to generate GDPR documentation based on the project's models.
Project description
leukeleu-django-gdpr
Installation
pip install leukeleu-django-gdpr
Add to INSTALLED_APPS:
INSTALLED_APPS = [
# ...
'leukeleu_django_gdpr',
# ...
]
Usage:
On first run, leukeleu-django-gdpr will generate a gdpr.yml
file with a models
list. This is
a list of models in your project, each containing a list of fields.
./manage.py gdpr
A file gdpr.yml
is created in the project root directory. It should be added to
version control. Each model in the models list has the following structure:
models:
auth.User:
name: User
fields:
username:
name: Username
description: String (up to %(max_length)s)
help_text: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
only.
required: true
pii: null
first_name:
name: First Name
description: String (up to %(max_length)s)
help_text: ''
required: false
pii: null
Leukeleu-django-gdpr adds the pii: null
to all fields. The objective is to replace all those
null
values with the correct boolean value; pii: true
if the field represents PII
data, pii: false
otherwise.
When run again, leukeleu-django-gdpr will persist those values, allowing you to work your way to
eliminating all pii: null
s.
Leukeleu-django-gdpr outputs counts of the pii:
values when run:
./manage.py gdpr
Checking...
No PII set 48
PII True 1
PII False 0
Run with --check
to make the command exit with exit code 1 if 'No PII set' > 0 (the
yaml file will still be generated/updated).
You can prevent leukeleu-django-gdpr from writing (back) to the yaml file by running with the
--dry-run
flag.
Excluding/including
To exclude apps, models or fields from this process altogether, list them in the
exclude:
list in the yaml file. Each item is a regex which should match an object's
string representation in the following formats;
- for apps: the app's
label
, such asadmin
orauth
. - for models: the model's label, such as
admin.LogEntry
orauth.Permission
- for fields: the model's label followed by
.
followed by the field's name, such asauth.User.username
.
Keep in mind that the items in the list are considered to be regexes which should fully match the object's string representation.
Default excludes
By default, leukeleu-django-gdpr excludes fields of the following types:
- AutoField
- UUIDField
- BooleanField
- RelatedField
and the following models:
- ContentType
If you still want to include a field/model that would be excluded this way, you can put
an item in the include:
list in the yaml file:
include:
- clients\.Client\.external_epd_uuid
- accounts\.Profile\.is_pregnant
Pipelines
To run this in Bitbucket Pipelines you need to ensure this package can be installed from
wherever this package is indexed. Run it with --check
to make a (scheduled?) pipeline
fail if there are unmarked fields, which can happen if someone adds a field to a model
but forgets to mark it as (non-) PII in the gdpr.yml.
Reports
When run from a Bitbucket Pipeline, leukeleu-django-gdpr can send the PII stats as a report to
Bitbucket. This will be visible in Pull Requests and Pipelines. Run with
--report-pipeline
to enable it.
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
File details
Details for the file leukeleu-django-gdpr-1.0.1.tar.gz
.
File metadata
- Download URL: leukeleu-django-gdpr-1.0.1.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9cdf7f8f1eb5dae9381363ab8bbee75528a1848c95dc064b428f5556fe00d690 |
|
MD5 | 5df2e2fb8588583bea4adcc9fba3fef3 |
|
BLAKE2b-256 | 56118b731077bb724bfe5c61e0d219366b89e1524c5e4b00620613dc03e09384 |
File details
Details for the file leukeleu_django_gdpr-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: leukeleu_django_gdpr-1.0.1-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b33f36f7f257f07f6013bf3ed7d132be6564e6785fa47c3ec7d6791d50415a39 |
|
MD5 | a4b11214f2815c5fb0fe35b325a7cf10 |
|
BLAKE2b-256 | fafa608771fa1d0f20d3dad5f00f82f644a819bbe5d93c22dab8390f89077da0 |