mirror of
https://github.com/vale981/dirkules
synced 2025-03-04 17:01:40 -05:00
its now possible to remove drives
This commit is contained in:
parent
8b51d97ab2
commit
692da36775
4 changed files with 48 additions and 10 deletions
|
@ -135,3 +135,33 @@ def get_pool_health(drive_list):
|
|||
if db_drive.smart is not True:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def delete_drive(drive):
|
||||
"""
|
||||
removes a given drive object (including cascades) from db
|
||||
:param drive: The drive
|
||||
:type drive: Drive
|
||||
:return: nothing
|
||||
:rtype:
|
||||
"""
|
||||
try:
|
||||
db.session.delete(drive)
|
||||
db.session.commit()
|
||||
except:
|
||||
db.session.rollback()
|
||||
|
||||
|
||||
def get_drive_by_id(drive_id):
|
||||
"""
|
||||
returns drive object for given id
|
||||
:param drive_id: id of drive (primary key)
|
||||
:type drive_id: int
|
||||
:return: Drive object
|
||||
:rtype: Drive
|
||||
"""
|
||||
drive = Drive.query.get(drive_id)
|
||||
if drive is not None:
|
||||
return drive
|
||||
else:
|
||||
raise LookupError
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
import datetime
|
||||
|
||||
from dirkules import db
|
||||
|
||||
|
||||
class Drive(db.Model):
|
||||
__tablename__ = 'drive'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String)
|
||||
model = db.Column(db.String)
|
||||
|
@ -47,9 +45,8 @@ class Drive(db.Model):
|
|||
|
||||
|
||||
class Partitions(db.Model):
|
||||
__tablename__ = 'partitions'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
drive_id = db.Column(db.Integer, db.ForeignKey('drive.id'), nullable=False)
|
||||
drive_id = db.Column(db.Integer, db.ForeignKey('drive.id'))
|
||||
name = db.Column(db.String)
|
||||
fs = db.Column(db.String)
|
||||
size = db.Column(db.Integer)
|
||||
|
@ -68,7 +65,6 @@ class Partitions(db.Model):
|
|||
|
||||
|
||||
class Pool(db.Model):
|
||||
__tablename__ = 'pool'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
label = db.Column(db.String)
|
||||
size = db.Column(db.Integer)
|
||||
|
@ -100,7 +96,6 @@ class Pool(db.Model):
|
|||
|
||||
|
||||
class Time(db.Model):
|
||||
__tablename__ = 'time'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
desc = db.Column(db.String)
|
||||
time = db.Column(db.Integer, default=0, onupdate=1)
|
||||
|
@ -110,7 +105,6 @@ class Time(db.Model):
|
|||
|
||||
|
||||
class Cleaning(db.Model):
|
||||
__tablename__ = 'cleaning'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String)
|
||||
path = db.Column(db.String)
|
||||
|
@ -126,7 +120,6 @@ class Cleaning(db.Model):
|
|||
|
||||
|
||||
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)
|
||||
|
@ -142,7 +135,6 @@ class SambaShare(db.Model):
|
|||
|
||||
|
||||
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)
|
||||
|
|
|
@ -36,10 +36,15 @@
|
|||
{% endif %}
|
||||
<td>
|
||||
<a href="{{ url_for('partitions', part=(drive.name | replace("/", "_"))) }}"
|
||||
class="ui blue button">
|
||||
class="ui primary basic button">
|
||||
<i class="server icon"></i>
|
||||
Partitionen
|
||||
</a>
|
||||
<a href="{{ url_for('drives', delete=drive.id) }}">
|
||||
<div class="ui orange basic button" data-tooltip="Use this, if drive doesn't exist anymore." data-position="top left">
|
||||
<i class="trash icon"></i> Aus Datenbank löschen
|
||||
</div>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -4,6 +4,7 @@ from time import sleep
|
|||
from flask import render_template, redirect, request, url_for, flash, abort
|
||||
from dirkules import app, db, scheduler
|
||||
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
|
||||
import dirkules.manager.viewManager as viewManager
|
||||
|
@ -28,6 +29,16 @@ def index():
|
|||
|
||||
@app.route('/drives', methods=['GET'])
|
||||
def drives():
|
||||
delete = request.args.get('delete')
|
||||
if delete is not None:
|
||||
try:
|
||||
drive = driveMan.get_drive_by_id(int(delete))
|
||||
driveMan.delete_drive(drive)
|
||||
except ValueError:
|
||||
abort(500, description="Expected int, but got {}.".format(delete))
|
||||
except LookupError:
|
||||
abort(500, description="Invalid drive id {}".format(delete))
|
||||
|
||||
return render_template('drives.html', drives=Drive.query.all())
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue