more samba improvements

This commit is contained in:
Daniel 2019-05-02 19:10:31 +02:00
parent ba3ca5b352
commit 677099dab6
3 changed files with 60 additions and 9 deletions

View file

@ -37,7 +37,7 @@ class Partitions(db.Model):
drive_id = db.Column(db.Integer, db.ForeignKey('drives.id')) drive_id = db.Column(db.Integer, db.ForeignKey('drives.id'))
name = db.Column(db.String) name = db.Column(db.String)
fs = db.Column(db.String) fs = db.Column(db.String)
size =db.Column(db.String) size = db.Column(db.String)
uuid = db.Column(db.String) uuid = db.Column(db.String)
mountpoint = db.Column(db.String) mountpoint = db.Column(db.String)
label = db.Column(db.String) label = db.Column(db.String)
@ -67,3 +67,27 @@ class Cleaning(db.Model):
self.name = name self.name = name
self.path = path self.path = path
self.state = state self.state = state
class SambaShare(db.Model):
__tablename__ = 'samba_share'
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):
__tablename__ = 'samba_options'
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

@ -1,12 +1,34 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}Dashboard{% endblock %} {% block title %}Dashboard{% endblock %}
{% block head %} {% block head %}
{{ super() }} {{ super() }}
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<a href="{{ url_for('samba_global') }}"> <a href="{{ url_for('samba_global') }}">
<div class="ui primary labeled icon button"> <div class="ui primary labeled icon button">
<i class="plus icon"></i> Samba Global conf <i class="plus icon"></i> Samba Global conf
</div> </div>
</a> </a>
<table class="ui celled fixed table">
<thead>
<tr>
<th>Name</th>
<th>Schreibzugriff</th>
<th>Papierkorb</th>
<th>BtrFS Optimierungen</th>
</tr>
</thead>
<tbody>
{% for share in shares %}
<tr>
<td>{{ share.name }}</td>
<td>{{ share.writeable }}</td>
<td>{{ share.recycling }}</td>
<td>{{ share.btrfs }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %} {% endblock %}

View file

@ -2,7 +2,7 @@ from flask import Flask, render_template, redirect, request, url_for, flash
from dirkules import app, db from dirkules import app, db
import dirkules.driveManagement.driveController as drico import dirkules.driveManagement.driveController as drico
import dirkules.serviceManagement.serviceManager as servMan import dirkules.serviceManagement.serviceManager as servMan
from dirkules.models import Drive, Cleaning from dirkules.models import Drive, Cleaning, SambaShare
import dirkules.viewManager.viewManager as viewManager import dirkules.viewManager.viewManager as viewManager
from dirkules.validation.validators import CleaningForm, samba_cleaning_form from dirkules.validation.validators import CleaningForm, samba_cleaning_form
from sqlalchemy import asc, collate from sqlalchemy import asc, collate
@ -72,10 +72,15 @@ def add_cleaning():
@app.route('/samba', methods=['GET']) @app.route('/samba', methods=['GET'])
def samba(): def samba():
return render_template('samba.html') shares = []
for share in SambaShare.query.order_by(asc(collate(SambaShare.name, 'NOCASE'))).all():
shares.append(viewManager.db_object_as_dict(share))
return render_template('samba.html', shares=shares)
@app.route('/samba/global', methods=['GET', 'POST']) @app.route('/samba/global', methods=['GET', 'POST'])
def samba_global(): def samba_global():
db.session.add(SambaShare("global"))
db.session.commit()
form = samba_cleaning_form(request.form) form = samba_cleaning_form(request.form)
if request.method == 'POST' and form.validate(): if request.method == 'POST' and form.validate():
print("Input:") print("Input:")