No project description provided
Project description
Django Quotas
A robust, extensible quotas and plan management library for Django applications. This package provides a flexible framework for defining, assigning, and tracking quotas (limits) for users, accounts, or any custom entity in your Django project.
Features
- Strictly typed, modular codebase with clear separation between core logic, database implementations, and utilities
- Abstract base classes and DTOs for easy extension
- Default and database-specific implementations provided
- Supports hourly, daily, monthly, and total quota buckets
- Pluggable quota models and account models via Django settings
- Utilities for dynamic model/class loading
- Designed for integration with Django 5.x and Python 3.11/3.12
Installation
pip install django-quotas
Or, if using Poetry:
poetry add django-quotas
Quickstart
-
Add to
INSTALLED_APPS(to use standard Quota model and database storage backend):INSTALLED_APPS = [ # ... 'django_quotas', 'django_quotas.defaults', 'django_quotas.backends.db' ]
-
Configure (optional): You can override default models and table prefixes in your Django settings:
DJANGO_QUOTAS_TABLE_PREFIX = 'myquotas' # default: 'django_quotas' DJANGO_QUOTAS_QUOTA_MODEL_NAME = 'myapp.MyQuotaModel' # default: 'django_quotas.defaults.QuotaModel' DJANGO_QUOTAS_QUOTA_RELATED_ACCOUNT_MODEL_NAME = 'auth.User' # or your custom user/account model
-
Run migrations:
python manage.py migrate
-
Assign quotas: Use the provided models or extend them to assign quotas to users/accounts.
Configuration
All configuration is done via Django settings. See src/django_quotas/config.py for all available options.
DJANGO_QUOTAS_TABLE_PREFIX: Prefix for all quota-related tables.DJANGO_QUOTAS_QUOTA_MODEL_NAME: Dotted path to the quota model.DJANGO_QUOTAS_RELATED_ACCOUNT_MODEL: Dotted path to the related account/user model.
API Overview
Core Data Structures
QuotaBucket: Enum for supported buckets (hourly,daily,monthly,total)ValuePerBucket: Dataclass holding quota values for each bucketQuotaStatus,QuotaStats,QuotaUseForBucket,Quota,QuotaUsage: DTOs for quota management
Abstract Service
QuotaService: Abstract base class for quota management logicQuotaExceededError: Exception raised when a quota is exceeded
Models
BaseQuotaModel: Abstract base model for quotasDefaultQuotaModel: Default implementation for quota assignmentQuotaUsageModel: Tracks quota usage per account/feature/time
Utilities
get_model_by_name(model_name: str): Load a Django model by dotted nameget_class_by_name(dotted_path: str): Import a class by dotted pathdatetime_now(): Get current UTC datetime
Extending & Customization
- Custom Quota Models: Inherit from
BaseQuotaModeland register via settings. - Custom Account Models: Set
DJANGO_QUOTAS_RELATED_ACCOUNT_MODELto your user/account model. - Custom Quota Logic: Implement your own
QuotaServicesubclass.
Contributing
Contributions are welcome! If you have ideas or find bugs, feel free to open an issue or submit a pull request.
Please:
- Follow PEP8 and project code style (see
.github/copilot-instructions.md) - Use type hints and docstrings (PEP257)
- Run
make setupandmakebefore submitting a PR - Add unit tests for new features or bugfixes
Credits
- Dmitry Berezovsky (@corvis) - Author and maintainer
License
Django Quotas is licensed under the MIT License. See LICENSE for more details.
For more details, see the source code in src/django_quotas/ and the included docstrings.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_quotas-1.0.0.tar.gz.
File metadata
- Download URL: django_quotas-1.0.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11701d6d6733686a278dc02fe51c1b04c475bb649d259b07f66e6928d364914e
|
|
| MD5 |
92df8a0a2fdc2dbc0b1c46dc1fc0bb0b
|
|
| BLAKE2b-256 |
a32f41886354c85359f77fb746b4f66db4dfff2c3f8f1087cb03cb9293bcf853
|
File details
Details for the file django_quotas-1.0.0-py3-none-any.whl.
File metadata
- Download URL: django_quotas-1.0.0-py3-none-any.whl
- Upload date:
- Size: 20.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30b8d12a92129d670d6e435a8b7c6c9825a239d8b4b38b56bb51007d4b200b94
|
|
| MD5 |
b7eb02b18ab6f9c353b97533291c12f7
|
|
| BLAKE2b-256 |
43727640a26d9803d68d7d448244f865b029d5481231662daa20c8ed3780b06c
|