8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-12-29 18:33:47 +00:00
re2o/users/widgets.py

65 lines
2.2 KiB
Python
Raw Normal View History

from django.forms.widgets import Input
from django.forms.utils import flatatt
from django.utils.safestring import mark_safe
from django.template import Template
from django.template.loader import get_template
from django.conf import settings
from django.utils.translation import ugettext_lazy as _, get_language_bidi
from django.utils.dates import (
WEEKDAYS,
WEEKDAYS_ABBR,
MONTHS,
MONTHS_3,
MONTHS_AP,
MONTHS_ALT,
)
2018-05-05 15:58:13 +00:00
def list2str(str_iterable):
"""
Utility function to return a string representing a list of string
:params str_iterable: An iterable object where each element is of type str
:returns: A representation of the iterable as a list (e.g '["a", "b"]')
"""
return '["' + '", "'.join(str_iterable) + '"]'
2018-05-05 15:58:13 +00:00
class DateTimePicker(Input):
is_localized = False
def render(self, name, value, attrs=None):
super().render(name, value, attrs)
2018-05-05 15:58:13 +00:00
flat_attrs = flatatt(attrs)
context = {
"name": name,
"attrs": flat_attrs,
"id": attrs["id"],
"closeText": _("Close"),
"currentText": _("Today"),
"dayNames": mark_safe(
list2str((str(item[1]) for item in WEEKDAYS.items()))
),
"dayNamesMin": mark_safe(
list2str((str(item[1]) for item in WEEKDAYS_ABBR.items()))
),
"dayNamesShort": mark_safe(
list2str((str(item[1]) for item in WEEKDAYS_ABBR.items()))
),
"firstDay": mark_safe(
'"' + str(WEEKDAYS[settings.FIRST_DAY_OF_WEEK]) + '"'
),
"isRTL": str(get_language_bidi()).lower(),
"monthNames": mark_safe(
list2str((str(item[1]) for item in MONTHS.items()))
),
"monthNamesShort": mark_safe(
list2str((str(item[1]) for item in MONTHS_3.items()))
),
"nextText": mark_safe('"' + str(_("Next")) + '"'),
"prevText": mark_safe('"' + str(_("Previous")) + '"'),
"weekHeader": mark_safe('"' + str(_("Wk")) + '"'),
}
template = get_template("users/datetimepicker.html")
return template.render(context)