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.
Metadata
Release files for genericissuetracker 0.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| genericissuetracker-0.6.3.tar.gz | 32.9 kB | Without provenance | Details for genericissuetracker-0.6.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| genericissuetracker-0.6.3-py3-none-any.whl | Python 3 | none | any | Details for genericissuetracker-0.6.3-py3-none-any.whl |
Total release size: 87.9 kB
Release files / genericissuetracker-0.6.3.tar.gz
| Download URL | genericissuetracker-0.6.3.tar.gz |
|---|---|
| Size | 32.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
938955765e3b61b20b29fb44138c4b1e5dad934531b59fdac2210b5fac9e573a
|
|
BLAKE2b-256 checksum How to use checksums |
11beb398401a791f7691f58f2932f068c09864bc6c085ddb61ad0492bca79aca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / genericissuetracker-0.6.3-py3-none-any.whl
| Download URL | genericissuetracker-0.6.3-py3-none-any.whl |
|---|---|
| Size | 55.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a193edd7a992f0f568501b42ca7a0cc17c58c4ec77907827017643f79c987238
|
|
BLAKE2b-256 checksum How to use checksums |
730571534d07d445de9c86f1b826ca3ecac11168eeefeffcba5c6f9a2230cec8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Security for genericissuetracker 0.6.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.