misc: fix pylint issues in date/time widgets

This commit is contained in:
Frédéric Péters 2016-06-18 12:47:25 +02:00
parent bb09199d96
commit 9e69ed2032
1 changed files with 16 additions and 23 deletions

View File

@ -1,29 +1,22 @@
# Bootstrap django-datetime-widget is a simple and clean widget for DateField,
# Timefiled and DateTimeField in Django framework. It is based on Bootstrap
# datetime picker, supports both Bootstrap 3 and Bootstrap 2
# datetime picker, supports both Bootstrap 3 and Bootstrap 2
#
# https://github.com/asaglimbeni/django-datetime-widget
#
# License: BSD
# Initial Author: Alfredo Saglimbeni
__author__ = 'Alfredo Saglimbeni'
from datetime import datetime
import json
import re
import uuid
from django.forms import forms, widgets
from django.forms.widgets import MultiWidget, DateTimeInput, DateInput, TimeInput
from django.forms.widgets import DateTimeInput, DateInput, TimeInput
from django.utils.formats import get_format, get_language
from django.utils.safestring import mark_safe
from django.utils.six import string_types
try:
from django.forms.widgets import to_current_timezone
except ImportError:
to_current_timezone = lambda obj: obj # passthrough, no tz support
# This should be updated as more .po files are added to the datetime picker javascript code
supported_languages = set([
'ar',
@ -75,7 +68,7 @@ def get_supported_language(language_country_code):
return 'en'
dateConversiontoPython = {
DATE_FORMAT_JS_PY_MAPPING = {
'P': '%p',
'ss': '%S',
'ii': '%M',
@ -87,10 +80,10 @@ dateConversiontoPython = {
'yyyy': '%Y',
}
toPython_re = re.compile(r'\b(' + '|'.join(dateConversiontoPython.keys()) + r')\b')
DATE_FORMAT_TO_PYTHON_REGEX = re.compile(r'\b(' + '|'.join(DATE_FORMAT_JS_PY_MAPPING.keys()) + r')\b')
dateConversiontoJavascript = {
DATE_FORMAT_PY_JS_MAPPING = {
'%M': 'ii',
'%m': 'mm',
'%I': 'HH',
@ -102,7 +95,7 @@ dateConversiontoJavascript = {
'%S': 'ss'
}
toJavascript_re = re.compile(r'(?<!\w)(' + '|'.join(dateConversiontoJavascript.keys()) + r')\b')
DATE_FORMAT_TO_JS_REGEX = re.compile(r'(?<!\w)(' + '|'.join(DATE_FORMAT_PY_JS_MAPPING.keys()) + r')\b')
BOOTSTRAP_INPUT_TEMPLATE = {
@ -168,7 +161,7 @@ def quote(key, value):
return "'%s'" % value
if key in quoted_bool_options and isinstance(value, bool):
return {True:'true',False:'false'}[value]
return json.dumps(value)
return value
@ -180,7 +173,7 @@ class PickerWidgetMixin(object):
def __init__(self, attrs=None, options=None, usel10n=None, bootstrap_version=None):
if bootstrap_version in [2,3]:
if bootstrap_version in [2, 3]:
self.bootstrap_version = bootstrap_version
else:
# default 2 to mantain support to old implemetation of django-datetime-widget
@ -206,8 +199,8 @@ class PickerWidgetMixin(object):
self.format = get_format(self.format_name)[0]
# Convert Python format specifier to Javascript format specifier
self.options['format'] = toJavascript_re.sub(
lambda x: dateConversiontoJavascript[x.group()],
self.options['format'] = DATE_FORMAT_TO_JS_REGEX.sub(
lambda x: DATE_FORMAT_PY_JS_MAPPING[x.group()],
self.format
)
@ -219,8 +212,8 @@ class PickerWidgetMixin(object):
# If we're not doing localisation, get the Javascript date format provided by the user,
# with a default, and convert it to a Python data format for later string parsing
format = self.options['format']
self.format = toPython_re.sub(
lambda x: dateConversiontoPython[x.group()],
self.format = DATE_FORMAT_TO_PYTHON_REGEX.sub(
lambda x: DATE_FORMAT_JS_PY_MAPPING[x.group()],
format
)
@ -243,14 +236,14 @@ class PickerWidgetMixin(object):
# Use provided id or generate hex to avoid collisions in document
id = final_attrs.get('id', uuid.uuid4().hex)
clearBtn = quote('clearBtn', self.options.get('clearBtn', 'true')) == 'true'
clear_button = quote('clearBtn', self.options.get('clearBtn', 'true')) == 'true'
return mark_safe(
BOOTSTRAP_INPUT_TEMPLATE[self.bootstrap_version]
% dict(
id=id,
rendered_widget=rendered_widget,
clear_button=CLEAR_BTN_TEMPLATE[self.bootstrap_version] if clearBtn else "",
clear_button=CLEAR_BTN_TEMPLATE[self.bootstrap_version] if clear_button else "",
glyphicon=self.glyphicon,
options=js_options
)