|
3 | 3 | from django.core.exceptions import ImproperlyConfigured
|
4 | 4 | from django import forms
|
5 | 5 | from django.forms.extras import SelectDateWidget
|
6 |
| -from django.utils.importlib import import_module |
7 | 6 | from django.utils.translation import ugettext_lazy as _
|
8 | 7 |
|
9 | 8 | from forms_builder.forms.settings import USE_HTML5, EXTRA_FIELDS, EXTRA_WIDGETS
|
| 9 | +from forms_builder.forms.utils import html5_field, import_attr |
10 | 10 |
|
11 | 11 |
|
12 | 12 | # Constants for all available field types.
|
|
80 | 80 | MULTIPLE = (CHECKBOX_MULTIPLE, SELECT_MULTIPLE)
|
81 | 81 |
|
82 | 82 | # HTML5 Widgets
|
83 |
| -html5_field = lambda name, base: type(str(""), (base,), {"input_type": name}) |
84 | 83 | if USE_HTML5:
|
85 | 84 | WIDGETS.update({
|
86 | 85 | DATE: html5_field("date", forms.DateInput),
|
|
96 | 95 | if field_id in CLASSES:
|
97 | 96 | err = "ID %s for field %s in FORMS_EXTRA_FIELDS already exists"
|
98 | 97 | raise ImproperlyConfigured(err % (field_id, field_name))
|
99 |
| - module_path, member_name = field_path.rsplit(".", 1) |
100 |
| - CLASSES[field_id] = getattr(import_module(module_path), member_name) |
| 98 | + CLASSES[field_id] = import_attr(field_path) |
101 | 99 | NAMES += ((field_id, _(field_name)),)
|
102 | 100 |
|
103 | 101 | # Add/update custom widgets.
|
104 | 102 | for field_id, widget_path in EXTRA_WIDGETS:
|
105 |
| - module_path, member_name = widget_path.rsplit(".", 1) |
106 |
| - WIDGETS[field_id] = getattr(import_module(module_path), member_name) |
| 103 | + WIDGETS[field_id] = import_attr(widget_path) |
0 commit comments