mirror of
https://github.com/vale981/dirkules
synced 2025-03-05 17:31:38 -05:00
improved validattors, added form for removal
This commit is contained in:
parent
9c6c72ab21
commit
a93befa48c
6 changed files with 64 additions and 8 deletions
|
@ -6,7 +6,11 @@
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="ui container">
|
<div class="ui container">
|
||||||
{% from "_formhelpers.html" import render_field %}
|
{% from "_formhelpers.html" import render_field %}
|
||||||
|
{% if form.errors %}
|
||||||
<form method=post class="ui form error">
|
<form method=post class="ui form error">
|
||||||
|
{% else %}
|
||||||
|
<form method=post class="ui form">
|
||||||
|
{% endif %}
|
||||||
{{ form.hidden_tag() }}
|
{{ form.hidden_tag() }}
|
||||||
<h4 class="ui dividing header">Allgemeine Informationen</h4>
|
<h4 class="ui dividing header">Allgemeine Informationen</h4>
|
||||||
{{ render_field(form.name) }}
|
{{ render_field(form.name) }}
|
||||||
|
|
|
@ -6,6 +6,25 @@
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="topspacer"></div>
|
<div class="topspacer"></div>
|
||||||
<div class="ui container">
|
<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>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from wtforms import StringField, BooleanField, SelectField, validators, SubmitField
|
from wtforms import StringField, BooleanField, SelectField, validators, SubmitField
|
||||||
|
|
||||||
|
from dirkules.wtforms_extension import ToggleBooleanField, RequiredIf
|
||||||
|
|
||||||
|
|
||||||
class SambaConfigForm(FlaskForm):
|
class SambaConfigForm(FlaskForm):
|
||||||
workgroup = StringField("workgroup", [validators.required(message="Bitte Feld ausfüllen!"),
|
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!")],
|
validators.Regexp('^[0-7]{4}$', message="Dies ist kein gültiger Wert!")],
|
||||||
render_kw={"placeholder": "0700"})
|
render_kw={"placeholder": "0700"})
|
||||||
submit = SubmitField("Freigabe hinzufügen")
|
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")
|
||||||
|
|
|
@ -5,7 +5,7 @@ from flask import render_template, url_for, request, redirect, flash
|
||||||
from dirkules.samba import bp_samba
|
from dirkules.samba import bp_samba
|
||||||
from dirkules.samba import manager as smb_man
|
from dirkules.samba import manager as smb_man
|
||||||
from dirkules.samba.models import SambaShare
|
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'])
|
@bp_samba.route('/', methods=['GET'])
|
||||||
|
@ -81,9 +81,13 @@ def remove():
|
||||||
return redirect(url_for('.index'))
|
return redirect(url_for('.index'))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
|
form = SambaRemovalForm(request.form)
|
||||||
share_id = int(share_id)
|
share_id = int(share_id)
|
||||||
share = smb_man.get_share_by_id(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:
|
except ValueError:
|
||||||
flash("ValueError: id is not an int")
|
flash("ValueError: id is not an int")
|
||||||
except LookupError:
|
except LookupError:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from wtforms import StringField, BooleanField, SelectField, IntegerField, RadioField, validators, SubmitField
|
from wtforms import StringField, BooleanField, SelectField, IntegerField, RadioField, validators, SubmitField
|
||||||
from dirkules.models import Drive
|
from dirkules.models import Drive
|
||||||
|
from dirkules.wtforms_extension import ToggleBooleanField
|
||||||
|
|
||||||
|
|
||||||
class CleaningForm(FlaskForm):
|
class CleaningForm(FlaskForm):
|
||||||
|
@ -27,10 +28,6 @@ class SemanticMultiSelectField(SelectField):
|
||||||
raise ValueError(self.gettext('There are no elements available but this field is required.'))
|
raise ValueError(self.gettext('There are no elements available but this field is required.'))
|
||||||
|
|
||||||
|
|
||||||
class ToggleBooleanField(BooleanField):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class PoolAddForm(FlaskForm):
|
class PoolAddForm(FlaskForm):
|
||||||
name = StringField("Name", [validators.required(message="Bitte Feld ausfüllen!"),
|
name = StringField("Name", [validators.required(message="Bitte Feld ausfüllen!"),
|
||||||
validators.Length(max=255, message="Eingabe zu lang")],
|
validators.Length(max=255, message="Eingabe zu lang")],
|
||||||
|
|
23
dirkules/wtforms_extension.py
Normal file
23
dirkules/wtforms_extension.py
Normal 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)
|
Loading…
Add table
Reference in a new issue