mirror of
https://github.com/vale981/dirkules
synced 2025-03-05 09:21: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 %}
|
||||
<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) }}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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")],
|
||||
|
|
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