created samba blueprint

This commit is contained in:
Daniel 2019-09-26 16:26:45 +02:00
parent 22512d154e
commit 52170f0212
10 changed files with 93 additions and 60 deletions

View file

@ -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')

View file

@ -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)

View file

@ -0,0 +1,4 @@
from flask import Blueprint
bp_samba = Blueprint('samba', __name__, template_folder='templates')
from dirkules.samba import views

34
dirkules/samba/models.py Normal file
View file

@ -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)

View file

@ -6,14 +6,19 @@
{% block body %}
<div class="topspacer"></div>
<div class="ui container">
<a href="{{ url_for('samba_global') }}">
<a href="{{ url_for('.config') }}">
<div class="ui primary labeled icon button">
<i class="edit icon"></i> Samba global
<i class="edit icon"></i> Konfigurieren
</div>
</a>
<a href="{{ url_for('samba_add') }}">
<a href="{{ url_for('.add') }}">
<div class="ui primary labeled icon button">
<i class="plus icon"></i> Samba add
<i class="plus icon"></i> Freigabe hinzufügen
</div>
</a>
<a href="{{ url_for('.index') }}">
<div class="ui primary labeled icon button">
<i class="magic icon"></i> Generieren
</div>
</a>
<table class="ui celled fixed table">

40
dirkules/samba/views.py Normal file
View file

@ -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)

View file

@ -23,7 +23,7 @@
<a class="item" href="{{ url_for('drives') }}"><i class="hdd icon"></i> Festplatten</a>
<a class="item" href="{{ url_for('pools') }}"><i class="server icon"></i> Pools</a>
<a class="item" href="{{ url_for('cleaning') }}"><i class="trash icon"></i> Cleaning</a>
<a class="item" href="{{ url_for('samba') }}"><i class="share alternate icon"></i> Samba</a>
<a class="item" href="{{ url_for('samba.index') }}"><i class="share alternate icon"></i> Samba</a>
<div class="right menu">
<a class="ui item" href="{{ url_for('about') }}">über Dirkules</a>
</div>

View file

@ -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)