Skip to main content

Pragmatic tools and utilities for Django projects

Project description

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.

Project details


Release history Release notifications | RSS feed

This version

7.0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_pragmatic-7.0.1.tar.gz (48.4 kB view details)

Uploaded Source

File details

Details for the file django_pragmatic-7.0.1.tar.gz.

File metadata

  • Download URL: django_pragmatic-7.0.1.tar.gz
  • Upload date:
  • Size: 48.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for django_pragmatic-7.0.1.tar.gz
Algorithm Hash digest
SHA256 bb6419581d515db68564f373e09ecd663c8cfd559ed103840b8fc858d572db1c
MD5 5542457dfac83789ec60f408b740ccc6
BLAKE2b-256 79f2d18e45e21575e0b4913fe696b915f7ebd26c3b6a962c0b30bce7b0495ddf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page