genericissuetracker
A reusable, versioned, schema-safe Django Issue Tracker application.
Maintained by: https://djangoplay.org
genericissuetracker is a production-grade, installable Django app that drops issue
tracking -- issues, comments, labels, and attachments -- into any Django project behind
a versioned REST API.
Features
- Issue management with human-friendly, sequential issue numbers
- Comments and labels
- Attachments, including atomic multipart creation alongside an issue or comment
- Deterministic lifecycle state machine with a full status-history audit trail
- Soft delete throughout
- No dependency on
AUTH_USER_MODEL-- reporter/uploader identity stored by email/user id - Versioned REST API (
/api/v1/...) - Configurable permissions, pagination, and filtering
- OpenAPI schema support via drf-spectacular
Requirements
- Python 3.8 or later
- Django 4.2 or later
- djangorestframework 3.14 or later
- drf-spectacular 0.27 or later
Installation
pip install genericissuetracker
Add it to INSTALLED_APPS:
INSTALLED_APPS = [
...
"genericissuetracker",
]
Include its URLs:
path("api/", include("genericissuetracker.urls.root")),
Then run migrations:
python manage.py migrate
Configuration
All settings are namespaced under GENERIC_ISSUETRACKER_<SETTING>:
| Setting | Description |
|---|---|
IDENTITY_RESOLVER |
Custom identity resolver path |
ALLOW_ANONYMOUS_REPORTING |
Allow anonymous issue creation |
MAX_ATTACHMENTS |
Max attachments per issue |
MAX_ATTACHMENT_SIZE_MB |
Max file size |
DEFAULT_PERMISSION_CLASSES |
Default DRF permissions |
DEFAULT_PAGINATION_CLASS |
Pagination class |
PAGE_SIZE |
Pagination size |
DEFAULT_FILTER_BACKENDS |
Filtering backends |
Example:
GENERIC_ISSUETRACKER_DEFAULT_PERMISSION_CLASSES = [
"rest_framework.permissions.IsAuthenticated"
]
API Endpoints
| Resource | Endpoint |
|---|---|
| Issues | /api/v1/issues/ |
| Issue detail | /api/v1/issues/{issue_number}/ |
| Status change | /api/v1/issues/{issue_number}/change-status/ |
| Comments | /api/v1/comments/ |
| Labels | /api/v1/labels/ |
| Attachments | /api/v1/attachments/ |
Filtering and ordering are supported out of the box:
/api/v1/issues/?search=bug
/api/v1/issues/?ordering=-created_at
An OpenAPI schema and interactive docs are available at /schema/ and /docs/
(drf-spectacular).
Identity Model
Reporters and uploaders are tracked by reporter_email / uploaded_by_email plus an
optional reporter_user_id / uploaded_by_user_id -- there is no hard foreign key to a
user model, so the package drops into any Django auth setup unmodified.
Issue Identifiers
id-- UUID, internalissue_number-- sequential, human-friendly, public
/api/v1/issues/12/
Links
- Homepage: https://gitlab.com/binaryfleet/issuetracker
- Repository: https://gitlab.com/binaryfleet/issuetracker
- Issues: https://gitlab.com/binaryfleet/issuetracker/issues
- Documentation: https://docs.djangoplay.org/view#projects/issuetracker/
License
genericissuetracker is released under the MIT License.
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 genericissuetracker-0.6.3.tar.gz.
File metadata
- Download URL: genericissuetracker-0.6.3.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
938955765e3b61b20b29fb44138c4b1e5dad934531b59fdac2210b5fac9e573a
|
|
| MD5 |
1bdd5e7778986cbb53651c3665234540
|
|
| BLAKE2b-256 |
11beb398401a791f7691f58f2932f068c09864bc6c085ddb61ad0492bca79aca
|
File details
Details for the file genericissuetracker-0.6.3-py3-none-any.whl.
File metadata
- Download URL: genericissuetracker-0.6.3-py3-none-any.whl
- Upload date:
- Size: 55.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a193edd7a992f0f568501b42ca7a0cc17c58c4ec77907827017643f79c987238
|
|
| MD5 |
fc6a75388dc6fedebcd974bddb1c7d9f
|
|
| BLAKE2b-256 |
730571534d07d445de9c86f1b826ca3ecac11168eeefeffcba5c6f9a2230cec8
|