django-pragmatic


Namedjango-pragmatic JSON
Version 5.0.0 PyPI version JSON
download
home_pagehttps://github.com/PragmaticMates/django-pragmatic
SummaryPragmatic tools and utilities for Django projects
upload_time2024-03-12 14:50:10
maintainerPragmatic Mates
docs_urlNone
authorPragmatic Mates
requires_python
licenseBSD License
keywords django pragmatic tools utils
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            .. image:: https://travis-ci.org/PragmaticMates/django-pragmatic.svg?branch=master
    :target: https://travis-ci.org/PragmaticMates/django-pragmatic

django-pragmatic
================

Pragmatic tools and utilities for Django projects

Tested on Django 1.5 up to Django 1.10.2


Requirements
------------
- Django

Some utilities require additional libraries as:

- django_filters
- fpdf
- Pillow/PIL
- pyBarcode


Installation
------------

1. Install python library using pip: pip install django-pragmatic

2. Add ``pragmatic`` to ``INSTALLED_APPS`` in your Django settings file


Usage
-----

Templates
'''''''''
``pragmatic/helpers/breadcrumbs.html``
    Template helper for **django-breadcrumbs** app.

``pragmatic/helpers/confirm_delete.html``
    Form for delete confirmation.

``pragmatic/helpers/messages.html``
    Template helper for django messages framework.

``pragmatic/helpers/pagination.html``
    Template helper for paginating objects in ListViews.

``pragmatic/helpers/pagination-listview.html``
    Template helper for paginating objects in ListViews.

``maintenance_mode.html``
    Template for maintenance mode. See **MaintenanceModeMiddleware** below.


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)``
    Adds *form-control* class 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 processors
''''''''''''''''''
``def 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.


Decorators
''''''''''
``def 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.


Fields
''''''
``class 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.


Filters
'''''''
``class TruncatedModelChoiceFilter(forms.ModelChoiceField)``
    Filter field for TruncatedModelChoiceField.

``class OneFieldRangeFilter(django_filters.Filter)``
    Filter field for RangeField.


Middleware
''''''''''
``class MaintenanceModeMiddleware(object)``
    It looks for ``settings.MAINTENANCE_MODE`` attribute.
    If it is set to True, template **maintenance_mode.html** will render for each request.


Loghandlers
'''''''''''
``class AlternativeAdminEmailHandler(AdminEmailHandler)``
    Same as ``django.utils.log import AdminEmailHandler``, but uses ``ALTERNATE_EMAIL_HOST_PASSWORD``,
    ``ALTERNATE_EMAIL_HOST_USER``,  ``ALTERNATE_EMAIL_HOST``, ``ALTERNATE_EMAIL_PORT`` and
    ``ALTERNATE_EMAIL_USE_TLS`` as connection settings.


Mixins
''''''
``class ReadOnlyFormMixin(forms.BaseForm)``
    Adds 'readonly and 'disabled' attributes to fields specified in ``read_only`` form attribute.

``class DeleteObjectMixin(object)``
    Mixin for object delete confirmation. Implement ``get_parent()`` method or ``get_success_url()``
    and ``get_back_url()`` methods instead.

``class PickadateFormMixin(object)``
    Mixin which fixes **pickadate.js** inputs and adds *data-value* attribute to them if you use your own date formats.

``class FPDFMixin(object)``
    Mixin helper for generating PDF outputs in Django using fpdf library.


Widgets
'''''''
``class GroupedCheckboxSelectMultiple(CheckboxSelectMultiple)``
    Advanced form field widget for grouping multiple choices into custom groups.
    Use it with **static/js/grouped-checkboxes.js**


Thirdparty
''''''''''
``class BarcodeImageWriter(ImageWriter)``
    Fixed version of barcode.writer.ImageWriter.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/PragmaticMates/django-pragmatic",
    "name": "django-pragmatic",
    "maintainer": "Pragmatic Mates",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "info@pragmaticmates.com",
    "keywords": "django pragmatic tools utils",
    "author": "Pragmatic Mates",
    "author_email": "info@pragmaticmates.com",
    "download_url": "https://files.pythonhosted.org/packages/d6/99/bf1eb199735b24b138730fb77645540112275928ab318a2a651f51cfbe5a/django-pragmatic-5.0.0.tar.gz",
    "platform": null,
    "description": ".. image:: https://travis-ci.org/PragmaticMates/django-pragmatic.svg?branch=master\n    :target: https://travis-ci.org/PragmaticMates/django-pragmatic\n\ndjango-pragmatic\n================\n\nPragmatic tools and utilities for Django projects\n\nTested on Django 1.5 up to Django 1.10.2\n\n\nRequirements\n------------\n- Django\n\nSome utilities require additional libraries as:\n\n- django_filters\n- fpdf\n- Pillow/PIL\n- pyBarcode\n\n\nInstallation\n------------\n\n1. Install python library using pip: pip install django-pragmatic\n\n2. Add ``pragmatic`` to ``INSTALLED_APPS`` in your Django settings file\n\n\nUsage\n-----\n\nTemplates\n'''''''''\n``pragmatic/helpers/breadcrumbs.html``\n    Template helper for **django-breadcrumbs** app.\n\n``pragmatic/helpers/confirm_delete.html``\n    Form for delete confirmation.\n\n``pragmatic/helpers/messages.html``\n    Template helper for django messages framework.\n\n``pragmatic/helpers/pagination.html``\n    Template helper for paginating objects in ListViews.\n\n``pragmatic/helpers/pagination-listview.html``\n    Template helper for paginating objects in ListViews.\n\n``maintenance_mode.html``\n    Template for maintenance mode. See **MaintenanceModeMiddleware** below.\n\n\nTemplate tags\n'''''''''''''\n``{% load pragmatic_tags %}``\n\n``def klass(obj)``\n    Returns string of instance class name.\n\n``def translate(obj)``\n    Returns translated string of input value (string or any object).\n\n``def filename(obj)``\n    Returns name of the file without its path (basename).\n\n``def bootstrap3_field(field)``\n    Adds *form-control* class to field widget classes.\n\n``def filtered_objects_counts(filtered, all)``\n    Returns translatable percentage description of value filtered/all in this format:\n    *'<strong>%d (%.2f%%)</strong> filtered, from a total of %d' % (filtered, percent, all)'*\n\n``def qrcode(value, alt=None)``\n    Outputs generated QR code using Google charts API from a given string and adds alternative description to it.\n\n``def barcode(code, args=None)``:\n    Outputs generated barcode using pyBarcode library from a given string.\n\n``def paginator(context, objects, page_ident='page', anchor=None, adjacent=2)``\n    Pagination template tag.\n\n``def divide(value, arg)``\n    Divides the value by argument.\n\n``def multiply(value, arg)``\n    Multiplies the value by argument.\n\n``def add(value, arg)``\n    Adds the arg to the value.\n\n``def subtract(value, arg)``\n    Subtracts the arg to the value.\n\n``def capture(parser, token)``\n    Capture contents of block into context.\n\n\nContext processors\n''''''''''''''''''\n``def date_formats(request)``\n    Returns a lazy 'date formats' context variables DATE_FORMAT_JS, DATE_FORMAT_TAG, DATE_FORMAT_FULLMONTH_TAG,\n    from settings file.\n\n``def installed_apps(request)``\n    Returns a lazy 'INSTALLED_APPS' context variable.\n\n\nDecorators\n''''''''''\n``def permissions_required(app_label, login_url=None, raise_exception=False)``\n    Decorator for views that checks whether a user has at least one app permission\n    enabled, redirecting to the log-in page if necessary.\n    If the raise_exception parameter is given the PermissionDenied exception\n    is raised and app label of missing permission is stored in user instance.\n\n``def permission_required(perm, login_url=None, raise_exception=False)``\n    Decorator for views that checks whether a user has a particular permission\n    enabled, redirecting to the log-in page if necessary.\n    If the raise_exception parameter is given the PermissionDenied exception\n    is raised and missing permission is stored in user instance.\n\n``def receiver_subclasses(signal, sender, dispatch_uid_prefix, **kwargs)``\n    A decorator for connecting receivers and all receiver's subclasses to signals.\n\n\nFields\n''''''\n``class RangeField(forms.Field)``\n    Form field which expects input to be a number or number range (2 numbers divided with '-').\n\n``class MultiSelectField(models.Field)``\n    Model field which stores multiple choices as a comma-separated list of values, using the normal CHOICES attribute.\n\n``class MultiSelectFormField(forms.MultipleChoiceField)``\n    Form field for model field above (MultiSelectField).\n\n``class TruncatedModelChoiceField(forms.ModelChoiceField)``\n    ModelChoiceField is a form field which truncates overflowed characters from instance label\n    and adds '...' instead of them.\n\n\nFilters\n'''''''\n``class TruncatedModelChoiceFilter(forms.ModelChoiceField)``\n    Filter field for TruncatedModelChoiceField.\n\n``class OneFieldRangeFilter(django_filters.Filter)``\n    Filter field for RangeField.\n\n\nMiddleware\n''''''''''\n``class MaintenanceModeMiddleware(object)``\n    It looks for ``settings.MAINTENANCE_MODE`` attribute.\n    If it is set to True, template **maintenance_mode.html** will render for each request.\n\n\nLoghandlers\n'''''''''''\n``class AlternativeAdminEmailHandler(AdminEmailHandler)``\n    Same as ``django.utils.log import AdminEmailHandler``, but uses ``ALTERNATE_EMAIL_HOST_PASSWORD``,\n    ``ALTERNATE_EMAIL_HOST_USER``,  ``ALTERNATE_EMAIL_HOST``, ``ALTERNATE_EMAIL_PORT`` and\n    ``ALTERNATE_EMAIL_USE_TLS`` as connection settings.\n\n\nMixins\n''''''\n``class ReadOnlyFormMixin(forms.BaseForm)``\n    Adds 'readonly and 'disabled' attributes to fields specified in ``read_only`` form attribute.\n\n``class DeleteObjectMixin(object)``\n    Mixin for object delete confirmation. Implement ``get_parent()`` method or ``get_success_url()``\n    and ``get_back_url()`` methods instead.\n\n``class PickadateFormMixin(object)``\n    Mixin which fixes **pickadate.js** inputs and adds *data-value* attribute to them if you use your own date formats.\n\n``class FPDFMixin(object)``\n    Mixin helper for generating PDF outputs in Django using fpdf library.\n\n\nWidgets\n'''''''\n``class GroupedCheckboxSelectMultiple(CheckboxSelectMultiple)``\n    Advanced form field widget for grouping multiple choices into custom groups.\n    Use it with **static/js/grouped-checkboxes.js**\n\n\nThirdparty\n''''''''''\n``class BarcodeImageWriter(ImageWriter)``\n    Fixed version of barcode.writer.ImageWriter.\n",
    "bugtrack_url": null,
    "license": "BSD License",
    "summary": "Pragmatic tools and utilities for Django projects",
    "version": "5.0.0",
    "project_urls": {
        "Homepage": "https://github.com/PragmaticMates/django-pragmatic"
    },
    "split_keywords": [
        "django",
        "pragmatic",
        "tools",
        "utils"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d699bf1eb199735b24b138730fb77645540112275928ab318a2a651f51cfbe5a",
                "md5": "b278cf2c553cb87f6d9110cf61effcf6",
                "sha256": "73673854815b6e1df227e06fadb33303ca2a8ae747fcb2d30c4881cb5dfc886c"
            },
            "downloads": -1,
            "filename": "django-pragmatic-5.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b278cf2c553cb87f6d9110cf61effcf6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 47545,
            "upload_time": "2024-03-12T14:50:10",
            "upload_time_iso_8601": "2024-03-12T14:50:10.348463Z",
            "url": "https://files.pythonhosted.org/packages/d6/99/bf1eb199735b24b138730fb77645540112275928ab318a2a651f51cfbe5a/django-pragmatic-5.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-12 14:50:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "PragmaticMates",
    "github_project": "django-pragmatic",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "lcname": "django-pragmatic"
}
        
Elapsed time: 0.22504s