From 52170f0212f97272da4ab63ad810e64fa9848c5a Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 26 Sep 2019 16:26:45 +0200 Subject: [PATCH] created samba blueprint --- dirkules/__init__.py | 4 ++ dirkules/models.py | 21 ---------- dirkules/samba/__init__.py | 4 ++ dirkules/samba/models.py | 34 ++++++++++++++++ .../templates/samba/add.html} | 0 .../templates/samba/config.html} | 0 .../templates/samba/index.html} | 13 ++++-- dirkules/samba/views.py | 40 +++++++++++++++++++ dirkules/templates/base.html | 2 +- dirkules/views.py | 35 +--------------- 10 files changed, 93 insertions(+), 60 deletions(-) create mode 100644 dirkules/samba/__init__.py create mode 100644 dirkules/samba/models.py rename dirkules/{templates/samba_add.html => samba/templates/samba/add.html} (100%) rename dirkules/{templates/samba_global.html => samba/templates/samba/config.html} (100%) rename dirkules/{templates/samba.html => samba/templates/samba/index.html} (72%) create mode 100644 dirkules/samba/views.py diff --git a/dirkules/__init__.py b/dirkules/__init__.py index 24b8768..6f9df35 100644 --- a/dirkules/__init__.py +++ b/dirkules/__init__.py @@ -12,6 +12,7 @@ csrf.init_app(app) app_version = app.config["VERSION"] import dirkules.models +import dirkules.samba.models # create db if not exists db.create_all() @@ -21,3 +22,6 @@ scheduler.init_app(app) scheduler.start() # import views import dirkules.views + +from dirkules.samba import bp_samba as bp_samba +app.register_blueprint(bp_samba, url_prefix='/samba') diff --git a/dirkules/models.py b/dirkules/models.py index fe5a95d..258e5fc 100644 --- a/dirkules/models.py +++ b/dirkules/models.py @@ -118,24 +118,3 @@ class Cleaning(db.Model): self.path = path self.state = state - -class SambaShare(db.Model): - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String, nullable=False) - writeable = db.Column(db.Boolean) - recycling = db.Column(db.Boolean) - btrfs = db.Column(db.Boolean) - options = db.relationship('SambaOptions', order_by="SambaOptions.id", backref="samba_share", lazy="select") - - def __init__(self, name, writeable=False, recycling=False, btrfs=False): - self.name = name - self.writeable = writeable - self.recycling = recycling - self.btrfs = btrfs - - -class SambaOptions(db.Model): - id = db.Column(db.Integer, primary_key=True) - option = db.Column(db.String, nullable=False) - value = db.Column(db.String, nullable=False) - sambashare_id = db.Column(db.Integer, db.ForeignKey('samba_share.id'), nullable=False) diff --git a/dirkules/samba/__init__.py b/dirkules/samba/__init__.py new file mode 100644 index 0000000..3fce82e --- /dev/null +++ b/dirkules/samba/__init__.py @@ -0,0 +1,4 @@ +from flask import Blueprint + +bp_samba = Blueprint('samba', __name__, template_folder='templates') +from dirkules.samba import views diff --git a/dirkules/samba/models.py b/dirkules/samba/models.py new file mode 100644 index 0000000..da1bf13 --- /dev/null +++ b/dirkules/samba/models.py @@ -0,0 +1,34 @@ +from dirkules import db + + +class SambaGlobal(db.Model): + id = db.Column(db.Integer, primary_key=True) + element = db.Column(db.String) + value = db.Column(db.String) + + def __init__(self, element, value): + self.element = element + self.value = value + + +class SambaShare(db.Model): + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String, nullable=False) + writeable = db.Column(db.Boolean) + recycling = db.Column(db.Boolean) + btrfs = db.Column(db.Boolean) + options = db.relationship('SambaOptions', order_by="SambaOptions.id", backref="samba_share", lazy="select", + cascade="all, delete-orphan") + + def __init__(self, name, writeable=False, recycling=False, btrfs=False): + self.name = name + self.writeable = writeable + self.recycling = recycling + self.btrfs = btrfs + + +class SambaOptions(db.Model): + id = db.Column(db.Integer, primary_key=True) + option = db.Column(db.String, nullable=False) + value = db.Column(db.String, nullable=False) + sambashare_id = db.Column(db.Integer, db.ForeignKey('samba_share.id'), nullable=False) diff --git a/dirkules/templates/samba_add.html b/dirkules/samba/templates/samba/add.html similarity index 100% rename from dirkules/templates/samba_add.html rename to dirkules/samba/templates/samba/add.html diff --git a/dirkules/templates/samba_global.html b/dirkules/samba/templates/samba/config.html similarity index 100% rename from dirkules/templates/samba_global.html rename to dirkules/samba/templates/samba/config.html diff --git a/dirkules/templates/samba.html b/dirkules/samba/templates/samba/index.html similarity index 72% rename from dirkules/templates/samba.html rename to dirkules/samba/templates/samba/index.html index 15dc80d..ac5732f 100644 --- a/dirkules/templates/samba.html +++ b/dirkules/samba/templates/samba/index.html @@ -6,14 +6,19 @@ {% block body %}
- +
- Samba global + Konfigurieren
- +
- Samba add + Freigabe hinzufügen +
+
+ +
+ Generieren
diff --git a/dirkules/samba/views.py b/dirkules/samba/views.py new file mode 100644 index 0000000..8cf5293 --- /dev/null +++ b/dirkules/samba/views.py @@ -0,0 +1,40 @@ +from dirkules import db + +from dirkules.config import staticDir +from flask import render_template, url_for, request, redirect +from dirkules.samba import bp_samba +from dirkules.samba.models import SambaShare +from dirkules.validation.validators import SambaCleaningForm, SambaAddForm + + +@bp_samba.route('/', methods=['GET']) +def index(): + shares = SambaShare.query.order_by(db.asc(db.collate(SambaShare.name, 'NOCASE'))).all() + return render_template('samba/index.html', shares=shares) + + +@bp_samba.route('/config', methods=['GET', 'POST']) +def config(): + form = SambaCleaningForm(request.form) + if request.method == 'POST' and form.validate(): + print("Input:") + print(form.workgroup.data) + print(form.server_string.data) + return redirect(url_for('samba_global')) + file = open(staticDir + "/conf/samba_global.conf") + conf = list() + while True: + line = file.readline() + if line != '': + conf.append(line.rstrip()) + else: + break + return render_template('samba/config.html', form=form, conf=conf) + + +@bp_samba.route('/add', methods=['GET', 'POST']) +def add(): + form = SambaAddForm(request.form) + if request.method == 'POST' and form.validate(): + return redirect(url_for('samba')) + return render_template('samba/add.html', form=form) diff --git a/dirkules/templates/base.html b/dirkules/templates/base.html index 331e0b2..38567b1 100644 --- a/dirkules/templates/base.html +++ b/dirkules/templates/base.html @@ -23,7 +23,7 @@ Festplatten Pools Cleaning - Samba + Samba diff --git a/dirkules/views.py b/dirkules/views.py index bb6d434..4b10342 100644 --- a/dirkules/views.py +++ b/dirkules/views.py @@ -6,7 +6,7 @@ from dirkules import app, db, scheduler, app_version import dirkules.manager.serviceManager as servMan import dirkules.manager.driveManager as driveMan import dirkules.manager.cleaning as cleaningMan -from dirkules.models import Drive, Cleaning, SambaShare, Pool +from dirkules.models import Drive, Cleaning, Pool import dirkules.manager.viewManager as viewManager from dirkules.validation.validators import CleaningForm, SambaCleaningForm, SambaAddForm, PoolAddForm from dirkules.config import staticDir @@ -146,36 +146,3 @@ def add_cleaning(): viewManager.create_cleaning_obj(form.jobname.data, form.path.data, form.active.data) return redirect(url_for('cleaning')) return render_template('add_cleaning.html', form=form) - - -@app.route('/samba', methods=['GET']) -def samba(): - shares = SambaShare.query.order_by(db.asc(db.collate(SambaShare.name, 'NOCASE'))).all() - return render_template('samba.html', shares=shares) - - -@app.route('/samba/global', methods=['GET', 'POST']) -def samba_global(): - form = SambaCleaningForm(request.form) - if request.method == 'POST' and form.validate(): - print("Input:") - print(form.workgroup.data) - print(form.server_string.data) - return redirect(url_for('samba_global')) - file = open(staticDir + "/conf/samba_global.conf") - conf = list() - while True: - line = file.readline() - if line != '': - conf.append(line.rstrip()) - else: - break - return render_template('samba_global.html', form=form, conf=conf) - - -@app.route('/samba/add', methods=['GET', 'POST']) -def samba_add(): - form = SambaAddForm(request.form) - if request.method == 'POST' and form.validate(): - return redirect(url_for('samba')) - return render_template('samba_add.html', form=form)