diff --git a/dirkules/samba/manager.py b/dirkules/samba/manager.py index 6b35f19..6125510 100644 --- a/dirkules/samba/manager.py +++ b/dirkules/samba/manager.py @@ -124,21 +124,6 @@ def generate_smb(): app.logger.info("Generated new samba config.") -def get_share_by_id(share_id): - """ - Returns drive object for given id - :param share_id: id of drive (primary key) - :type share_id: int - :return: Share object - :rtype: Share - """ - share = SambaShare.query.get(share_id) - if share is not None: - return share - else: - raise LookupError - - def disable_share(share): """ Disables a given share object. diff --git a/dirkules/samba/templates/samba/index.html b/dirkules/samba/templates/samba/index.html index 6d839f7..3ef715f 100644 --- a/dirkules/samba/templates/samba/index.html +++ b/dirkules/samba/templates/samba/index.html @@ -21,13 +21,13 @@ Generieren - +
- - + + @@ -37,23 +37,31 @@ - - + {% if share.recycle %} + + {% else %} + + {% endif %} + {% if share.btrfs %} + + {% else %} + + {% endif %}
Name PfadPapierkorbBtrFS OptimierungenPapierkorbBtrFS Modul Aktionen
{{ share.name }} {{ share.path }}{{ share.recycle }}{{ share.btrfs }} Aktiviert Deaktiviert Aktiviert Deaktiviert{% if share.enabled %} -
- Exkludieren +
+
{% else %} -
- Inkludieren +
+
{% endif %} -
+
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) }} - 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 %}
@@ -37,16 +38,72 @@ Ein oder Mehrere Fehler sind aufgetreten
    - {% for message in messages %} -
  • {{ message }}
  • - {% endfor %} + {% for msg in errors %} +
  • {{ msg }}
  • + {% endfor -%}
{% endif %} {% endwith %} + +{% with warns = get_flashed_messages(category_filter=["warn"]) %} + {% if warns %} +
+
+ +
+ Ein oder Mehrere Warnungen sind aufgetreten +
+
    + {% for msg in warns %} +
  • {{ msg }}
  • + {% endfor -%} +
+
+
+ {% endif %} +{% endwith %} + +{% with info = get_flashed_messages(category_filter=["info"]) %} + {% if info %} +
+
+ +
+ Folgende Informationen sind vorhanden +
+
    + {% for msg in info %} +
  • {{ msg }}
  • + {% endfor -%} +
+
+
+ {% endif %} +{% endwith %} + +{% with pos = get_flashed_messages(category_filter=["positive"]) %} + {% if pos %} +
+
+ +
+ Folgendes wurde erfolgreich abgeschlossen +
+
    + {% for msg in pos %} +
  • {{ msg }}
  • + {% endfor -%} +
+
+
+ {% endif %} +{% endwith %} + {% block body %} {% endblock %} + - -