Skip to main content

django-pragmatic

Build Status

Pragmatic tools and utilities for Django projects.

Requirements

Optional dependencies are required only for the modules that use them (see Installation).

Installation

pip install django-pragmatic

Add pragmatic to INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'pragmatic',
]

Run migrations (needed only if you use deleted-object tracking):

python manage.py migrate pragmatic

What's included

Module Description
Models DeletedObject — audit trail for deleted instances
Mixins CBV/form mixins: permissions, delete, pagination, sorting, display modes, PDF, slugs
Decorators permissions_required, permission_required, PostgreSQL lock, Cached
Template tags {% load pragmatic_tags %} — filter display, sorting, pagination, URL tools
Fields RangeField, SliderField, MultiSelectField, ChoiceArrayField
Filters SliderFilter, OneFieldRangeFilter, ArrayFilter and more
Widgets GroupedCheckboxSelectMultiple, SliderWidget, map widgets
Middleware MaintenanceModeMiddleware — serve 503 during downtime
Managers EmailManager — template-based email with optional RQ queue
Context processors Date formats, installed apps, URL identifier, settings
Signals SignalsHelper, apm_custom_context, disable_signals
Utils build_absolute_uri, get_task_decorator, zip compression
Jobs Background email via RQ, ConnectionClosingWorker
REST Framework ContentTypeSerializer, HybridRouter, BearerAuthentication
Management commands clean_migrations, rqscheduler

Quick examples

Maintenance mode:

# settings.py
MAINTENANCE_MODE = True
MAINTENANCE_MODE_BYPASS_USERS = [1]  # superuser can still log in

Send an email from a template:

from pragmatic.managers import EmailManager

EmailManager.send_mail(
    to=user,
    template_prefix='emails/welcome',
    subject='Welcome!',
    data={'activation_link': url},
    request=request,
)

List view with display modes and sorting:

from pragmatic.mixins import DisplayListViewMixin, SortingListViewMixin

class ArticleListView(SortingListViewMixin, DisplayListViewMixin, ListView):
    model = Article
    displays = ['list', 'table']
    paginate_by_display = {'list': [10, 25], 'table': 100}
    sorting_options = {'-created': 'Newest', 'title': 'Title A–Z'}

Template filter values display:

{% load pragmatic_tags %}
{% filter_values filter %}
{% num_applied_filters filter request.GET as n %}
{{ n }} active filter{{ n|pluralize }}

Background task decorator:

# settings.py
PRAGMATIC_TASK_DECORATOR = 'django_rq.job'  # or 'celery.shared_task'
from pragmatic.utils import get_task_decorator

task = get_task_decorator(queue='default')

@task
def process_export(export_id):
    ...

Documentation

Full documentation is at django-pragmatic.readthedocs.io.

License

BSD License — see LICENSE for details.

Metadata

Release files for django-pragmatic 7.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-pragmatic 7.2.0
File Size Uploaded Provenance Actions
django_pragmatic-7.2.0.tar.gz 48.9 kB Without provenance Details for django_pragmatic-7.2.0.tar.gz

Release files / django_pragmatic-7.2.0.tar.gz

Download URL django_pragmatic-7.2.0.tar.gz
Size 48.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2b76350f9d587f1aac50e33dd778b48483fc255357d4999df9fa1a4b868fa25e
BLAKE2b-256 checksum
How to use checksums
f53f5ba41d5cd1ce44e6f343c7678ed5046243545f24f987980cc410585159ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Security for django-pragmatic 7.2.0

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.

Release history Release notifications | RSS feed

This release

7.2.0 This release

1 release file No provenance

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