diff --git a/src/wuttaweb/forms/schema.py b/src/wuttaweb/forms/schema.py index e4c3703..b3f0105 100644 --- a/src/wuttaweb/forms/schema.py +++ b/src/wuttaweb/forms/schema.py @@ -155,6 +155,37 @@ class WuttaEnum(colander.Enum): return widgets.SelectWidget(**kwargs) +class WuttaDictEnum(colander.String): + """ + Schema type for "pseudo-enum" fields which reference a dict for + known values instead of a true enum class. + + This is primarily for use with "status" fields such as + :attr:`~wuttjamaican:wuttjamaican.db.model.batch.BatchRowMixin.status_code`. + + This is a subclass of :class:`colander.String`, but adds a default + widget (``SelectWidget``) with enum choices. + + :param request: Current :term:`request` object. + + :param enum_dct: Dict with possible enum values and labels. + """ + + def __init__(self, request, enum_dct, *args, **kwargs): + super().__init__(*args, **kwargs) + self.request = request + self.config = self.request.wutta_config + self.app = self.config.get_app() + self.enum_dct = enum_dct + + def widget_maker(self, **kwargs): + """ """ + if 'values' not in kwargs: + kwargs['values'] = [(k, v) for k, v in self.enum_dct.items()] + + return widgets.SelectWidget(**kwargs) + + class WuttaMoney(colander.Money): """ Custom schema type for "money" fields. diff --git a/src/wuttaweb/templates/configure.mako b/src/wuttaweb/templates/configure.mako index 63ba963..e5d841a 100644 --- a/src/wuttaweb/templates/configure.mako +++ b/src/wuttaweb/templates/configure.mako @@ -18,7 +18,7 @@
${self.buttons_content()} - ${h.form(request.current_route_url(), enctype='multipart/form-data', ref='saveSettingsForm', **{'@submit': 'saveSettingsFormSubmit'})} + ${h.form(request.url, enctype='multipart/form-data', ref='saveSettingsForm', **{'@submit': 'saveSettingsFormSubmit'})} ${h.csrf_token(request)}
${self.form_content()} @@ -53,7 +53,7 @@ Cancel - ${h.form(request.current_route_url(), **{'@submit': 'purgingSettings = true'})} + ${h.form(request.url, **{'@submit': 'purgingSettings = true'})} ${h.csrf_token(request)} ${h.hidden('remove_settings', 'true')} {{ savingSettings ? "Working, please wait..." : "Save All Settings" }} - ${self.make_wutta_request_mixin()} + ${self.make_wutta_autocomplete_component()} ${self.make_wutta_button_component()} ${self.make_wutta_datepicker_component()} ${self.make_wutta_timepicker_component()} @@ -86,6 +87,150 @@ +<%def name="make_wutta_autocomplete_component()"> + + + + <%def name="make_wutta_button_component()">