Commit 3820ae87 authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #144 from ArtemSerga/6

Make required form field with bold red asterisk and bind helpers to templates
parents d876c4c8 b6479e73
......@@ -2,10 +2,8 @@ from functools import wraps
from re import sub
from flask import Blueprint, render_template, url_for, abort, g
from flask.ext.admin import babel
from .helpers import set_current_view
from flask.ext.admin import helpers as h
def expose(url='/', methods=('GET',)):
......@@ -45,13 +43,12 @@ def _wrap_view(f):
@wraps(f)
def inner(self, **kwargs):
# Store current admin view
set_current_view(self)
h.set_current_view(self)
# Check if administrative piece is accessible
h = self._handle_view(f.__name__, **kwargs)
if h is not None:
return h
abort = self._handle_view(f.__name__, **kwargs)
if abort is not None:
return abort
return f(self, **kwargs)
......@@ -224,6 +221,7 @@ class BaseView(object):
# or enabled.
kwargs['_gettext'] = babel.gettext
kwargs['_ngettext'] = babel.ngettext
kwargs['h'] = h
# Contribute extra arguments
kwargs.update(self._template_args)
......
import time
import datetime
from wtforms import fields, widgets
from flask.globals import _request_ctx_stack
from flask.ext import wtf
from wtforms import fields, widgets
from flask.ext.admin.babel import gettext, ngettext
from flask.ext.admin import helpers as h
class BaseForm(wtf.Form):
......@@ -153,7 +152,9 @@ class RenderTemplateWidget(object):
kwargs.update({
'field': field,
'_gettext': gettext,
'_ngettext': ngettext})
'_ngettext': ngettext,
'h': h,
})
template = jinja_env.get_template(self.template)
return template.render(kwargs)
......
from flask import g
from wtforms.validators import Required
def set_current_view(view):
......@@ -7,3 +8,10 @@ def set_current_view(view):
def get_current_view():
return getattr(g, '_admin_view', None)
def is_required_form_field(field):
for validator in field.validators:
if isinstance(validator, Required):
return True
return False
......@@ -77,9 +77,16 @@
{{ form.hidden_tag() if form.hidden_tag is defined }}
{% for f in form if f.type != 'HiddenField' and f.type != 'CSRFTokenField' %}
<div class="control-group{% if f.errors %} error{% endif %}">
{{ f.label(class='control-label') }}
<div class="controls">
<div class="control-group{{ ' error' if f.errors }}">
<div class="control-label">
{{ f.label.text }}
{% if h.is_required_form_field(f) %}
<strong style="color: red">&#42;</strong>
{% else %}
&nbsp;
{% endif %}
</div>
<div class="controls">
<div>
{% if not focus_set %}
{{ f(autofocus='autofocus')|safe }}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment