1
0
mirror of https://github.com/Yubico/yubiadmin.git synced 2025-02-20 14:54:30 +01:00

Work on forms.

This commit is contained in:
Dain Nilsson 2013-04-24 17:15:38 +02:00
parent 62437607a4
commit d690b94982
5 changed files with 125 additions and 111 deletions

View File

@ -1,22 +1,8 @@
/* ==========================================================================
Author's custom styles
========================================================================== */
html {
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}

View File

@ -13,16 +13,5 @@
</div>
</div>
{% if errors %}
<div class="alert alert-error">
<p>Errors:</p>
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{{ page }}
{% endblock %}

View File

@ -1,24 +1,24 @@
{%- macro form_field_label(field) -%}
<label for="{{ field.id }}">{{ field.label.text }}
{%- if field.flags.required -%}
<abbr title="This field is required!">*</abbr>
{%- endif %}</label>
<label for="{{ field.id }}">{{ field.label.text }}
{%- if field.flags.required -%}
<abbr title="This field is required!">*</abbr>
{%- endif %}</label>
{% endmacro %}
{%- macro form_field_description(field) -%}
{% if field.description %}
<span class="descr">{{ field.description }}</span>
{% endif %}
{% if field.description %}
<span class="descr">{{ field.description }}</span>
{% endif %}
{%- endmacro -%}
{%- macro form_field_errors(field) -%}
{% if field.errors %}
<div>
{%- for error in field.errors -%}
<span class="label important">{{ error }}</span>
{%- endfor -%}
</div>
{% endif %}
{% if field.errors %}
<div>
{%- for error in field.errors -%}
<span class="label important">{{ error }}</span>
{%- endfor -%}
</div>
{% endif %}
{%- endmacro -%}
{%- macro form_field_boolean(field) -%}
@ -32,72 +32,59 @@
</div>
{%- endmacro -%}
{%- macro action_buttons(submit_title="Save", cancel_title="Reset form", submit_class="btn-primary") -%}
<div class="form-actions">
<input type="submit" class="btn {{submit_class}}" value="{{submit_title}}">
&nbsp;
<button type="reset" class="btn">{{cancel_title}}</button>
</div>
{%- endmacro -%}
{%- macro form_field(field) -%}
{%- macro form_field(field, attrs={}) -%}
<div class="clearfix">
{% if field.type == 'HiddenField' %}
{{ field() }}
{% else %}
{% if field.type == 'BooleanField' %}
{{ form_field_boolean(field, **kwargs) }}
{% else%}
{{ form_field_label(field) }}
<div class="input" id="{{field.id}}-div">
{% if field.type == 'RadioField' %}
{{ field(class='radio-group', **kwargs) }}
{% else %}
{{ field(**kwargs) }}
{% endif %}
{{ form_field_description(field) }}
{{ form_field_errors(field) }}
</div>
{% endif %}
{% endif %}
</div>
{%- endmacro -%}
{%- macro form_fields(fields, class=None, legend=None) -%}
<fieldset {% if class %}class="{{class}}"{% endif %}>
{% if legend %}
<legend>{{legend}}</legend>
{% if field.type == 'HiddenField' %}
{{ field() }}
{% else %}
{% if field.type == 'BooleanField' %}
{{ form_field_boolean(field, **attrs) }}
{% else %}
{{ form_field_label(field) }}
<div class="input" id="{{field.id}}-div">
{% if field.type == 'RadioField' %}
{{ field(class='radio-group', **attrs) }}
{% elif field.type == 'IntegerField' %}
{{ field(class='input-mini', **attrs) }}
{% else %}
{{ field(**attrs) }}
{% endif %}
{{ form_field_description(field) }}
{{ form_field_errors(field) }}
</div>
{% endif %}
{% for field in fields %}
{% if field.type == 'HiddenField' %}
{{ field() }}
{% else %}
{{ form_field(field) }}
{% endif %}
{% endfor %}
</fieldset>
{% endif %}
</div>
{%- endmacro -%}
{%- macro form_fieldset(fieldset) -%}
<fieldset>
{% if fieldset.legend %}
<legend>{{fieldset.legend}}</legend>
{% if fieldset.legend %}
<legend>{{fieldset.legend}}</legend>
{% endif %}
{% for field in fieldset %}
{% if field.type == 'HiddenField' %}
{{ field() }}
{% else %}
{% if fieldset.attrs is defined and fieldset.attrs[field.id] is defined %}
{{ form_field(field, fieldset.attrs[field.id]) }}
{% else %}
{{ form_field(field) }}
{% endif %}
{% endif %}
{% for field in fieldset %}
{% if field.type == 'HiddenField' %}
{{ field() }}
{% else %}
{{ form_field(field) }}
{% endif %}
{% endfor %}
</fieldset>
{% endfor %}
</fieldset>
{%- endmacro -%}
{%- macro render_form(fieldsets, action) -%}
<form action="{{ action }}" method="post">
<form action="{{ action }}" method="post">
{% for fieldset in fieldsets %}
{{ form_fieldset(fieldset) }}
{% endfor %}
{{ action_buttons() }}
</form>
<div class="form-actions">
<input type="submit" class="btn btn-primary" value="Save">
&nbsp;
<button type="reset" class="btn">Reset form</button>
</div>
</form>
{%- endmacro -%}

View File

@ -1,3 +1,3 @@
<h2>Database settings</h2>
{% from "forms.html" import render_form %}
<p>This is where general settings go.</p>
{{ render_form(fieldsets, '/val/database') }}

View File

@ -1,4 +1,6 @@
from wtforms import Form, IntegerField
from wtforms import Form
from wtforms.fields import StringField, IntegerField
from wtforms.validators import NumberRange
__all__ = [
'app'
@ -7,14 +9,44 @@ __all__ = [
class MiscForm(Form):
legend = 'Misc'
default_timeout = IntegerField('Default Timeout')
default_timeout = IntegerField('Default Timeout', [NumberRange(0)],
default=1)
def load(self):
self.default_timeout.process_data(5)
def save(self):
pass
class SyncLevelsForm(Form):
legend = 'Sync Levels'
sync_default = IntegerField('Default')
sync_secure = IntegerField('Secure')
sync_fast = IntegerField('Fast')
sync_default = IntegerField('Default', [NumberRange(1, 100)], default=60)
sync_secure = IntegerField('Secure', [NumberRange(1, 100)], default=40)
sync_fast = IntegerField('Fast', [NumberRange(1, 100)], default=1)
def load(self):
# TODO: Read config file
self.sync_default.process_data(40)
self.sync_secure.process_data(51)
self.sync_fast.process_data(1)
def save(self):
# TODO: Save data t config file
pass
class DatabaseForm(Form):
legend = 'Database'
connection_string = StringField('Connection String', default=1)
attrs = {'connection_string': {'class': 'input-xxlarge'}}
def load(self):
self.connection_string.process_data(
'mysql:dbname=ykval;host=127.0.0.1')
def save(self):
pass
class YubikeyVal(object):
@ -27,21 +59,41 @@ class YubikeyVal(object):
name = 'val'
sections = ['general', 'database', 'syncpool', 'ksms']
def _populate_forms(self, forms, data):
if not data:
for form in forms:
form.load()
else:
errors = False
for form in forms:
form.process(data)
errors = form.validate() or errors
if not errors:
for form in forms:
form.save()
def general(self, request):
"""
General
"""
sync_form = SyncLevelsForm(request.params)
misc_form = MiscForm(request.params)
return {
'fieldsets': [sync_form, misc_form]
}
forms = [
SyncLevelsForm(),
MiscForm()
]
self._populate_forms(forms, request.params)
return {'fieldsets': forms}
def database(self, request):
"""
Database Settings
"""
return {}
forms = [DatabaseForm()]
self._populate_forms(forms, request.params)
return {'fieldsets': forms}
def syncpool(self, request):
"""