diff --git a/dirkules/samba/templates/samba/remove.html b/dirkules/samba/templates/samba/remove.html
index 170fd99..e580609 100644
--- a/dirkules/samba/templates/samba/remove.html
+++ b/dirkules/samba/templates/samba/remove.html
@@ -1,20 +1,5 @@
{% extends "base.html" %}
{% block title %}Freigabe entfernen{% endblock %}
-{% block head %}
- {{ super() }}
- {% if show_modal %}
-
- {% endif %}
-{% endblock %}
{% block body %}
@@ -35,23 +20,20 @@
{% endif %}
{{ form.hidden_tag() }}
{{ render_field(form.remove_data) }}
-
-
-
-
Du hast ausgewählt, dass alle Daten der Freigabe restlos entfernt werden sollen. Diese Aktion ist
- unumkehrbar!
-
Die Sicherheitsprotokolle von Dirkules verbieten diese Aktion. Um die Aktion dennoch auszuführen,
- bitte die Sicherheitsprotokolle überbrücken.
-
{{ render_field(form.okay) }}
-
-
+
+
+
+ Die Sicherheitsprotokolle verhindern die automatische Ausführung.
+ Für das Ausführen der gewünschten Aktion, ist eine Überbrückung der Sicherheitsprotokolle nötig.
+ Bitte bestätigen.
+
+ {% endif %}
{{ render_field(form.submit) }}
diff --git a/dirkules/samba/validation.py b/dirkules/samba/validation.py
index b892c9a..6b5424f 100644
--- a/dirkules/samba/validation.py
+++ b/dirkules/samba/validation.py
@@ -7,12 +7,12 @@ from dirkules.wtforms_extension import ToggleBooleanField, RequiredIf
class SambaConfigForm(FlaskForm):
workgroup = StringField("workgroup", [validators.required(message="Bitte Feld ausfüllen!"),
validators.Regexp('^[a-z]+$', message="Bitte nur Kleinbuchstaben eingeben."),
- validators.Length(max=255, message="Eingabe zu lang")],
+ validators.Length(max=11, message="Maximal 11 Zeichen.")],
render_kw={"placeholder": "Nichts..."})
server_string = StringField("server string", [validators.required(message="Bitte Feld ausfüllen!"),
validators.Regexp('^[a-z]+$',
message="Bitte nur Kleinbuchstaben eingeben."),
- validators.Length(max=255, message="Eingabe zu lang")],
+ validators.Length(max=15, message="Maximal 15 Zeichen.")],
render_kw={"placeholder": "Nichts..."})
submit = SubmitField("Speichern")
@@ -41,4 +41,4 @@ class SambaRemovalForm(FlaskForm):
remove_data = BooleanField("Alle Daten entfernen")
okay = ToggleBooleanField("Sicherheitsprotokolle überbrücken.",
validators=[RequiredIf("remove_data",)])
- submit = SubmitField("Pool erstellen")
+ submit = SubmitField("Freigabe löschen")
diff --git a/dirkules/samba/views.py b/dirkules/samba/views.py
index 197f8cf..e51a838 100644
--- a/dirkules/samba/views.py
+++ b/dirkules/samba/views.py
@@ -4,7 +4,7 @@ from dirkules.config import staticDir
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.models import SambaShare, SambaGlobal
from dirkules.samba.validation import SambaConfigForm, SambaAddForm, SambaRemovalForm
@@ -17,31 +17,34 @@ def index():
if e_share is not None:
try:
e_share = int(e_share)
- share = smb_man.get_share_by_id(e_share)
+ share = SambaShare.query.get_or_404(e_share)
smb_man.enable_share(share)
except ValueError:
- flash("ValueError: enable")
+ flash("ValueError: enable", category="error")
except LookupError:
- flash("LookupError: id not valid")
+ flash("LookupError: id not valid", category="error")
return redirect(url_for('.index'))
elif d_share is not None:
try:
d_share = int(d_share)
- share = smb_man.get_share_by_id(d_share)
+ share = SambaShare.query.get_or_404(d_share)
smb_man.disable_share(share)
except ValueError:
- flash("ValueError: disable")
+ flash("ValueError: disable", category="error")
except LookupError:
- flash("LookupError: id not valid")
+ flash("LookupError: id not valid", category="error")
return redirect(url_for('.index'))
else:
- flash("Value Error: enable and disable set")
+ flash("Value Error: enable and disable set", category="error")
return render_template('samba/index.html', shares=shares)
@bp_samba.route('/config', methods=['GET', 'POST'])
def config():
form = SambaConfigForm(request.form)
+ if SambaGlobal.query.first() is not None:
+ form.workgroup.data = SambaGlobal.query.get(1)
+ form.server_string.data = SambaGlobal.query.get(2)
if request.method == 'POST' and form.validate():
smb_man.set_samba_global(form.workgroup.data, form.server_string.data)
return redirect(url_for('.index'))
@@ -70,6 +73,9 @@ def add():
@bp_samba.route('/generate')
def generate():
smb_man.generate_smb()
+ if SambaGlobal.query.first() is None:
+ flash("Samba wurde nicht konfiguriert. Es wird der default fallback verwendet", category="warn")
+ flash("Konfiguration erfolgreich generiert", category="positive")
return redirect(url_for('.index'))
@@ -78,23 +84,20 @@ def remove():
share_id = request.args.get('share')
show_modal = False
if share_id is None:
- flash("Can't remove drive without id.")
+ flash("Keine id angegeben. Möglicherweise ist der Verweis veraltet", category="error")
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)
+ share = SambaShare.query.get_or_404(share_id)
if request.method == 'POST':
if form.validate():
- print("Alles Easy")
+ smb_man.remove_share(share, remove_data=bool(form.remove_data.data))
return redirect(url_for('.index'))
else:
show_modal = True
- print(form.okay.data)
return render_template('samba/remove.html', name=share.name, form=form, show_modal=show_modal)
except ValueError:
- flash("ValueError: id is not an int")
- except LookupError:
- flash("LookupError: id not valid")
+ flash("ValueError: id is not an int", category="error")
return redirect(url_for('.index'))
diff --git a/dirkules/templates/_formhelpers.html b/dirkules/templates/_formhelpers.html
index c0feaf0..f3f9027 100644
--- a/dirkules/templates/_formhelpers.html
+++ b/dirkules/templates/_formhelpers.html
@@ -46,13 +46,7 @@
{% else %}
{% endif %}
- {% if field.errors %}
- {% for error in field.errors %}
-
- {{ error }}
-
- {% endfor %}
- {% endif %}
+
{% if field.type == 'BooleanField' %}
{% else %}
@@ -110,6 +104,6 @@
{% else %}
- ERROR
+ ERROR LOL
{% endif %}
{% endmacro %}
\ No newline at end of file
diff --git a/dirkules/templates/base.html b/dirkules/templates/base.html
index 38567b1..1a170fa 100644
--- a/dirkules/templates/base.html
+++ b/dirkules/templates/base.html
@@ -28,8 +28,9 @@
über Dirkules
-{% with messages = get_flashed_messages() %}
- {% if messages %}
+
+{% with errors = get_flashed_messages(category_filter=["error"]) %}
+ {% if errors %}