Skip to main content

A Django widget for the Tempus Dominus Bootstrap 4 DateTime picker.

Project description

Django Tempus Dominus

Django Tempus Dominus provides Django widgets for the Tempus Dominus Bootstrap 4 DateTime date and time picker. Why yet another date and time picker for Django? None supported the Tempus Dominus date and time picker, which is actively developed and feature rich. It is a successor to the popular bootstrap-datetimepicker JavaScript library.

Installation

  • From PyPI: pip install django-tempus-dominus

Then add tempus_dominus to INSTALLED_APPS in your Django settings.

Usage & Django Settings

The following settings are available:

  • TEMPUS_DOMINUS_LOCALIZE (default: False): if True, widgets will be translated to the selected browser language and use the localized date and time formats.
  • TEMPUS_DOMINUS_INCLUDE_ASSETS (default: True): if True, loads Tempus Dominus and moment JS and CSS from Cloudflare's CDN, otherwise loading the JS and CSS are up to you.

Three widgets are provided:

  • DatePicker
    • Defaults to YYYY-MM-DD
    • Defaults to L if TEMPUS_DOMINUS_LOCALIZE is True
  • DateTimePicker
    • Defaults to YYYY-MM-DD HH:mm:ss
    • Defaults to L LTS if TEMPUS_DOMINUS_LOCALIZE is True
  • TimePicker
    • Defaults to HH:mm:ss
    • Defaults to LTS if TEMPUS_DOMINUS_LOCALIZE is True

In your Django form, you can use the widgets like this:

import datetime

from django import forms
from tempus_dominus.widgets import DatePicker, TimePicker, DateTimePicker

class MyForm(forms.Form):
    date_field = forms.DateField(widget=DatePicker())
    date_field_required_with_min_max_date = forms.DateField(
        required=True,
        widget=DatePicker(
            options={
                'minDate': '2009-01-20',
                'maxDate': '2017-01-20',
            },
        ),
    )
    time_field = forms.TimeField(
        widget=TimePicker(
            options={
                'enabledHours': [9, 10, 11, 12, 13, 14, 15, 16],
            },
            input_toggle: False,
        ),
    )
    datetime_field = forms.DateTimeField(
        widget=DateTimePicker(
            options={
                'minDate': (datetime.date.today() + datetime.timedelta(days=1)).strftime('%Y-%m-%d'),  # Tomorrow
                'useCurrent': True,
                'collapse': False,
            },
            attrs={
               'append': 'fa fa-calendar',
               'input_toggle': False,
               'icon_toggle': True,
            }
        ),
    )

Then in your template, include jQuery, {{ form.media }}, and render the form:

<html>
  <head>
    {# Include FontAwesome; required for icon display #}
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css">

    {# Include Bootstrap 4 and jQuery #}
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

    {# Django Tempus Dominus assets are included in `{{ form.media }}` #}
    {{ form.media }}
  </head>

  <body>
    <div class="container">
      <div class="row">
        <div class="col">
          <form method="post" action=".">
            {% csrf_token %}
            {{ form.as_p }}
          </form>
        </div>
      </div>
    </div>
  </body>
</html>

Widget Options

  • options (dictionary): This dictionary will be passed to Tempus Dominus. A full list of options is available here.
  • input_toggle (boolean, default True): Controls whether clicking on the input field toggles the datepicker popup. Typically is set to False when an icon is in use.
  • size (string): Controls the size of the input group (small or large). Defaults to the default size.
  • prepend (string): Name of a Font Awesome icon to prepend to the input field (fa fa-calendar).
  • append (string): Name of a Font Awesome icon to append to the input field (fa fa-calendar).
  • icon_toggle (boolean, default True): Controls whether clicking on the icon toggles the datepicker popup. Typically is set to False when an icon is in use.

Change Log

  • 5.1.2.1: Fix a bug with time formatting to use ISO time format (T12:34:56)
  • 5.1.2.0: Upgrade Tempus Dominus to 5.1.2. Support for new widget attributes (size, prepend, append, input_toggle, icon_toggle, class). DatePicker now closes after losing focus, and widget attributes are properly passed.
  • 5.0.1.5: Fix to ensure options are passed in proper JSON.
  • 5.0.1.4: Include template in the MANIFEST.in file.
  • 5.0.1.3: Add setting to exclude CDN CSS and JS assets. Add initial test suite.
  • 5.0.1.2: Documentation clean up.
  • 5.0.1.1: Option to l10n and i18n to all pickers.
  • 5.0.1.0: Upgrade to Tempus Dominus full release version 5.0.1. Fix bug for populating initial values (thank you, @ianastewart).
  • 0.1.2: UX enhancement: auto-dismiss dialog if the input loses focus.
  • 0.1.1: Bug fixes.
  • 0.1.0: Initial release.

Maintainers

Contributors & DjangoCon US Sprinters (Thank You!)

Project details


Download files

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

Source Distribution

django-tempus-dominus-5.1.2.1.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

django_tempus_dominus-5.1.2.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file django-tempus-dominus-5.1.2.1.tar.gz.

File metadata

  • Download URL: django-tempus-dominus-5.1.2.1.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.5

File hashes

Hashes for django-tempus-dominus-5.1.2.1.tar.gz
Algorithm Hash digest
SHA256 e17c0987656ce7be1cc17c42d1a7a1d657fc2e9cf6469c6e5951cd09cbbf0eea
MD5 3d94a36fa993bdddc5f57d94b0579a7d
BLAKE2b-256 28288e93aab4df3c0eeeb863411990296b16129b074fa85bd8ec76952478922d

See more details on using hashes here.

File details

Details for the file django_tempus_dominus-5.1.2.1-py3-none-any.whl.

File metadata

  • Download URL: django_tempus_dominus-5.1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.5

File hashes

Hashes for django_tempus_dominus-5.1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a0ddbddc71440817dfdee408e2e8522dc7a0dd8f8cc4b73ede38fcc8a34c9bb
MD5 cd45371ae4df5ff357177b9329a2415c
BLAKE2b-256 c347dc1b9301d0638ac58704b2b82d7529641ed52fd61df5af04250975fa60bb

See more details on using hashes here.

Supported by

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