improved validattors, added form for removal

This commit is contained in:
Daniel 2019-11-03 18:35:24 +01:00
parent 9c6c72ab21
commit a93befa48c
6 changed files with 64 additions and 8 deletions

View file

@ -6,7 +6,11 @@
{% block body %}
<div class="ui container">
{% from "_formhelpers.html" import render_field %}
{% if form.errors %}
<form method=post class="ui form error">
{% else %}
<form method=post class="ui form">
{% endif %}
{{ form.hidden_tag() }}
<h4 class="ui dividing header">Allgemeine Informationen</h4>
{{ render_field(form.name) }}

View file

@ -6,6 +6,25 @@
{% block body %}
<div class="topspacer"></div>
<div class="ui container">
<h2 class="ui center aligned icon header">
<i class="circular trash icon"></i>
<div class="content">
Freigabe entfernen
<div class="sub header">Sie möchten die Samba Freigabe mit dem Namen "{{ name }}" entfernen. Bitte
konkretisieren und bestätigen.
</div>
</div>
</h2>
{% from "_formhelpers.html" import render_field %}
{% if form.errors %}
<form method=post class="ui form error">
{% else %}
<form method=post class="ui form">
{% endif %}
{{ form.hidden_tag() }}
{{ render_field(form.remove_data) }}
{{ render_field(form.okay) }}
{{ render_field(form.submit) }}
</form>
</div>
{% endblock %}

View file

@ -1,6 +1,8 @@
from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, SelectField, validators, SubmitField
from dirkules.wtforms_extension import ToggleBooleanField, RequiredIf
class SambaConfigForm(FlaskForm):
workgroup = StringField("workgroup", [validators.required(message="Bitte Feld ausfüllen!"),
@ -33,3 +35,10 @@ class SambaAddForm(FlaskForm):
validators.Regexp('^[0-7]{4}$', message="Dies ist kein gültiger Wert!")],
render_kw={"placeholder": "0700"})
submit = SubmitField("Freigabe hinzufügen")
class SambaRemovalForm(FlaskForm):
remove_data = BooleanField("Alle Daten entfernen")
okay = ToggleBooleanField("Sicherheitsprotokolle überbrücken.",
validators=[RequiredIf("remove_data",)])
submit = SubmitField("Pool erstellen")

View file

@ -5,7 +5,7 @@ from flask import render_template, url_for, request, redirect, flash
from dirkules.samba import bp_samba
from dirkules.samba import manager as smb_man
from dirkules.samba.models import SambaShare
from dirkules.samba.validation import SambaConfigForm, SambaAddForm
from dirkules.samba.validation import SambaConfigForm, SambaAddForm, SambaRemovalForm
@bp_samba.route('/', methods=['GET'])
@ -81,9 +81,13 @@ def remove():
return redirect(url_for('.index'))
else:
try:
form = SambaRemovalForm(request.form)
share_id = int(share_id)
share = smb_man.get_share_by_id(share_id)
return render_template('samba/remove.html')
if request.method == 'POST' and form.validate():
print("LOL")
return redirect(url_for('.index'))
return render_template('samba/remove.html', name=share.name, form=form)
except ValueError:
flash("ValueError: id is not an int")
except LookupError:

View file

@ -1,6 +1,7 @@
from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, SelectField, IntegerField, RadioField, validators, SubmitField
from dirkules.models import Drive
from dirkules.wtforms_extension import ToggleBooleanField
class CleaningForm(FlaskForm):
@ -27,10 +28,6 @@ class SemanticMultiSelectField(SelectField):
raise ValueError(self.gettext('There are no elements available but this field is required.'))
class ToggleBooleanField(BooleanField):
pass
class PoolAddForm(FlaskForm):
name = StringField("Name", [validators.required(message="Bitte Feld ausfüllen!"),
validators.Length(max=255, message="Eingabe zu lang")],

View file

@ -0,0 +1,23 @@
from wtforms import BooleanField
from wtforms.validators import InputRequired, Optional
class ToggleBooleanField(BooleanField):
pass
class RequiredIf(InputRequired):
field_flags = ('requiredif',)
def __init__(self, other_field_name, message=None, *args, **kwargs):
self.other_field_name = other_field_name
self.message = message
def __call__(self, form, field):
other_field = form[self.other_field_name]
if other_field is None:
raise Exception('no field named "%s" in form' % self.other_field_name)
if bool(other_field.data):
super(RequiredIf, self).__call__(form, field)
else:
Optional().__call__(form, field)