Skip to main content

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, internal
  • issue_number -- sequential, human-friendly, public
/api/v1/issues/12/

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)

Source distribution for genericissuetracker 0.6.3
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)

Table of built distributions (wheels) for genericissuetracker 0.6.3
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page