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:
parent
62437607a4
commit
d690b94982
@ -1,22 +1,8 @@
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Author's custom styles
|
||||
========================================================================== */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
html {
|
||||
overflow: -moz-scrollbars-vertical;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
@ -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 %}
|
||||
|
@ -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}}">
|
||||
|
||||
<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">
|
||||
|
||||
<button type="reset" class="btn">Reset form</button>
|
||||
</div>
|
||||
</form>
|
||||
{%- endmacro -%}
|
||||
|
@ -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') }}
|
||||
|
@ -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):
|
||||
"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user