Package: django-pragmatic
django-pragmaticPragmatic tools and utilities for Django projectsTested on Django 1.5 up to Django 1.10.2RequirementsDjangoSome utilities require additional libraries as:django_filtersfpdfPillow/PILpyBarcodeInstallationInstall python library using pip: pip install django-pragmaticAddpragmatictoINSTALLED_APPSin your Django settings fileUsageTemplatespragmatic/helpers/breadcrumbs.htmlTemplate helper fordjango-breadcrumbsapp.pragmatic/helpers/confirm_delete.htmlForm for delete confirmation.pragmatic/helpers/messages.htmlTemplate helper for django messages framework.pragmatic/helpers/pagination.htmlTemplate helper for paginating objects in ListViews.pragmatic/helpers/pagination-listview.htmlTemplate helper for paginating objects in ListViews.maintenance_mode.htmlTemplate for maintenance mode. SeeMaintenanceModeMiddlewarebelow.Template tags{% load pragmatic_tags %}def klass(obj)Returns string of instance class name.def translate(obj)Returns translated string of input value (string or any object).def filename(obj)Returns name of the file without its path (basename).def bootstrap3_field(field)Addsform-controlclass to field widget classes.def filtered_objects_counts(filtered, all)Returns translatable percentage description of value filtered/all in this format:‘<strong>%d (%.2f%%)</strong> filtered, from a total of %d’ % (filtered, percent, all)’def qrcode(value, alt=None)Outputs generated QR code using Google charts API from a given string and adds alternative description to it.def barcode(code, args=None):Outputs generated barcode using pyBarcode library from a given string.def paginator(context, objects,page_ident='page',anchor=None, adjacent=2)Pagination template tag.def divide(value, arg)Divides the value by argument.def multiply(value, arg)Multiplies the value by argument.def add(value, arg)Adds the arg to the value.def subtract(value, arg)Subtracts the arg to the value.def capture(parser, token)Capture contents of block into context.Context processorsdef date_formats(request)Returns a lazy ‘date formats’ context variables DATE_FORMAT_JS, DATE_FORMAT_TAG, DATE_FORMAT_FULLMONTH_TAG,
from settings file.def installed_apps(request)Returns a lazy ‘INSTALLED_APPS’ context variable.Decoratorsdef permissions_required(app_label, login_url=None, raise_exception=False)Decorator for views that checks whether a user has at least one app permission
enabled, redirecting to the log-in page if necessary.
If the raise_exception parameter is given the PermissionDenied exception
is raised and app label of missing permission is stored in user instance.def permission_required(perm, login_url=None, raise_exception=False)Decorator for views that checks whether a user has a particular permission
enabled, redirecting to the log-in page if necessary.
If the raise_exception parameter is given the PermissionDenied exception
is raised and missing permission is stored in user instance.def receiver_subclasses(signal, sender, dispatch_uid_prefix, **kwargs)A decorator for connecting receivers and all receiver’s subclasses to signals.Fieldsclass RangeField(forms.Field)Form field which expects input to be a number or number range (2 numbers divided with ‘-‘).class MultiSelectField(models.Field)Model field which stores multiple choices as a comma-separated list of values, using the normal CHOICES attribute.class MultiSelectFormField(forms.MultipleChoiceField)Form field for model field above (MultiSelectField).class TruncatedModelChoiceField(forms.ModelChoiceField)ModelChoiceField is a form field which truncates overflowed characters from instance label
and adds ‘…’ instead of them.Filtersclass TruncatedModelChoiceFilter(forms.ModelChoiceField)Filter field for TruncatedModelChoiceField.class OneFieldRangeFilter(django_filters.Filter)Filter field for RangeField.Middlewareclass MaintenanceModeMiddleware(object)It looks forsettings.MAINTENANCE_MODEattribute.
If it is set to True, templatemaintenance_mode.htmlwill render for each request.Loghandlersclass AlternativeAdminEmailHandler(AdminEmailHandler)Same asdjango.utils.log import AdminEmailHandler, but usesALTERNATE_EMAIL_HOST_PASSWORD,ALTERNATE_EMAIL_HOST_USER,ALTERNATE_EMAIL_HOST,ALTERNATE_EMAIL_PORTandALTERNATE_EMAIL_USE_TLSas connection settings.Mixinsclass ReadOnlyFormMixin(forms.BaseForm)Adds ‘readonly and ‘disabled’ attributes to fields specified inread_onlyform attribute.class DeleteObjectMixin(object)Mixin for object delete confirmation. Implementget_parent()method orget_success_url()andget_back_url()methods instead.class PickadateFormMixin(object)Mixin which fixespickadate.jsinputs and addsdata-valueattribute to them if you use your own date formats.class FPDFMixin(object)Mixin helper for generating PDF outputs in Django using fpdf library.Widgetsclass GroupedCheckboxSelectMultiple(CheckboxSelectMultiple)Advanced form field widget for grouping multiple choices into custom groups.
Use it withstatic/js/grouped-checkboxes.jsThirdpartyclass BarcodeImageWriter(ImageWriter)Fixed version of barcode.writer.ImageWriter.