Mixins for Django models.
Project description
django-model-mixins
Mixins for Django models.
Installation
To get the latest stable release from PyPI
pip install django-model-mixins
Add django_model_mixins
to your INSTALLED_APPS
INSTALLED_APPS = (
...,
'django_model_mixins',
)
Usage
Quickstart
Inherit from mixins in your models, e.g.
from django_model_mixins import mixins
class Article(mixins.CreationDateMixin, mixins.RandomIDMixin):
# A `created_at` and `id` field is automatically generated on migrations.
pass
Edit settings per model (not per instance!), e.g.
import string
from django_model_mixins import mixins
class EmailVerify(mixins.TokenMixin, mixins.RandomIDMixin):
TOKEN_LENGTH = 255
# Token is 255 chars long for every `EmailVerify`
class PasswordReset(mixins.TokenMixin, mixins.RandomIDMixin):
TOKEN_LENGTH = 6
TOKEN_CHARS = string.digits
# Token is 6 digits long for every `PasswordReset`.
Edit settings globally, e.g:
settings.py
# Don't create a token automatically on model creation.
TOKEN_CREATE_ON_CREATION = False
Model settings overwrite global settings.
Available models
RandomIDMixin
Adds a unique id
field with primary_key=True
.
The id is cryptographically generated on model creation.
Settings
Settings name | Model name | Default value | Description |
---|---|---|---|
RANDOM_ID_MAX_LENGTH |
1023 | max_length value for the id field. This value can only be globally set. |
|
RANDOM_ID_CHARS |
ID_CHARS |
string.ascii_letters + string.digits |
Character pool the generator can choose from. |
ID_LENGTH |
RANDOM_ID_MAX_LENGTH |
The length of the id. |
Examples
from django_model_mixins import mixins
class Article(mixins.RandomIDMixin):
pass
from django_model_mixins import mixins
class Profile(mixins.RandomIDMixin):
ID_LENGTH = 20
CreationDateMixin
Adds a created_at
field which is automatically set to current time (using timezone.now()
)
on model creation.
Examples
from django_model_mixins import mixins
class Article(mixins.CreationDateMixin):
pass
EditDateMixin
Adds a edited_at
field which is automatically set to current time (using timezone.now()
)
on every model save.
Examples
from django_model_mixins import mixins
class Article(mixins.EditDateMixin):
pass
TokenMixin
Adds a token
field which can be used as an alternative to a id
.
The token
can be changed anytime, whereas id
is immutable.
The token is generated cryptographically.
Settings
Settings name | Model name | Default value | Description |
---|---|---|---|
TOKEN_MAX_LENGTH |
2047 | max_length value for the token field. This value can only be globally set. |
|
TOKEN_CHARS |
TOKEN_CHARS |
string.ascii_letters + string.digits |
Character pool the generator can choose from. |
TOKEN_LENGTH |
TOKEN_MAX_LENGTH |
The length of the token. | |
TOKEN_CREATE_ON_CREATION |
CREATE_ON_CREATION |
True |
Whether a token should automatically be created on model creation. |
Examples
import string
from django_model_mixins import mixins
class PasswordReset(mixins.TokenMixin):
TOKEN_CHARS = string.digits
TOKEN_LENGTH = 6
Methods
token.recreate_token()
Recreates the token and saves it.
TokenGeneratedAtMixin
Inherits from TokenMixin
.
Adds a token_generated
field which represents the last date a token was created (or recreated.)
You need to specify a TOKEN_VALID_DURATION_IN_SECONDS
field per model.
Settings
Settings name | Model name | Default value | Description |
---|---|---|---|
TOKEN_VALID_DURATION_IN_SECONDS |
The duration in seconds how long a token is valid. int expected. This field is required. |
Examples
import string
from django_model_mixins import mixins
class PasswordReset(mixins.TokenGeneratedAtMixin):
TOKEN_CHARS = string.digits
TOKEN_LENGTH = 6
# Token is valid for 15 minutes
TOKEN_VALID_DURATION_IN_SECONDS = 60 * 15
Methods
token.expire_date
The date till when the token is valid.
token.is_expired
Return whether the token is expired.
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
File details
Details for the file django-model-mixins-0.1.3.tar.gz
.
File metadata
- Download URL: django-model-mixins-0.1.3.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fce65a4351f00b3f71edb84759ca70a0e367e5621235ebb214919128d93a59da |
|
MD5 | b0c06807aeb541ccac26174e34d20601 |
|
BLAKE2b-256 | 87f352c4e1f6bc65fc77b29d58d954b0f9200cfda662bbbc29cf20177a34d321 |