mirror of
https://github.com/vale981/dirkules
synced 2025-03-05 17:31:38 -05:00
more cleaning blueprint
This commit is contained in:
parent
b4bd35f5fa
commit
62bf109f47
8 changed files with 99 additions and 91 deletions
|
@ -15,6 +15,7 @@ app_version = app.config["VERSION"]
|
||||||
|
|
||||||
import dirkules.models
|
import dirkules.models
|
||||||
import dirkules.samba.models
|
import dirkules.samba.models
|
||||||
|
import dirkules.cleaning.models
|
||||||
|
|
||||||
# create db if not exists
|
# create db if not exists
|
||||||
db.create_all()
|
db.create_all()
|
||||||
|
|
9
dirkules/cleaning/manager.py
Normal file
9
dirkules/cleaning/manager.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
from dirkules import db
|
||||||
|
|
||||||
|
from dirkules.cleaning.models import Cleaning
|
||||||
|
|
||||||
|
|
||||||
|
def create_cleaning_obj(jobname, path, active):
|
||||||
|
job = Cleaning(jobname, path, active)
|
||||||
|
db.session.add(job)
|
||||||
|
db.session.commit()
|
18
dirkules/cleaning/models.py
Normal file
18
dirkules/cleaning/models.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from dirkules import db
|
||||||
|
|
||||||
|
|
||||||
|
class Cleaning(db.Model):
|
||||||
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
|
name = db.Column(db.String)
|
||||||
|
path = db.Column(db.String)
|
||||||
|
# state 0 means inactive - do not execute
|
||||||
|
state = db.Column(db.Boolean)
|
||||||
|
# time means last execution
|
||||||
|
time = db.Column(db.DateTime(timezone=True), default=datetime.datetime.now)
|
||||||
|
|
||||||
|
def __init__(self, name, path, state):
|
||||||
|
self.name = name
|
||||||
|
self.path = path
|
||||||
|
self.state = state
|
65
dirkules/cleaning/views.py
Normal file
65
dirkules/cleaning/views.py
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
from flask import request, redirect, flash, render_template, url_for
|
||||||
|
|
||||||
|
from dirkules import app, db
|
||||||
|
from dirkules.cleaning.manager import create_cleaning_obj
|
||||||
|
from dirkules.cleaning.models import Cleaning
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/cleaning', methods=['GET'])
|
||||||
|
def cleaning():
|
||||||
|
remove = request.args.get('remove')
|
||||||
|
changestate = request.args.get('changestate')
|
||||||
|
service = request.args.get('service')
|
||||||
|
if not (remove is not None and changestate is not None):
|
||||||
|
if remove is not None:
|
||||||
|
try:
|
||||||
|
remove = int(remove)
|
||||||
|
Cleaning.query.filter(Cleaning.id == remove).delete()
|
||||||
|
db.session.commit()
|
||||||
|
return redirect(request.path, code=302)
|
||||||
|
except ValueError:
|
||||||
|
flash("Value Error: remove")
|
||||||
|
elif changestate is not None:
|
||||||
|
try:
|
||||||
|
changestate = int(changestate)
|
||||||
|
job = Cleaning.query.get(changestate)
|
||||||
|
if job.state == 0:
|
||||||
|
job.state = 1
|
||||||
|
else:
|
||||||
|
job.state = 0
|
||||||
|
db.session.commit()
|
||||||
|
return redirect(request.path, code=302)
|
||||||
|
except ValueError:
|
||||||
|
flash("Value Error: changestate")
|
||||||
|
else:
|
||||||
|
flash("Value Error: remove and changestate set")
|
||||||
|
if service is not None:
|
||||||
|
try:
|
||||||
|
service = str(service)
|
||||||
|
if service == "start":
|
||||||
|
if not cleaningMan.running():
|
||||||
|
cleaningMan.enable()
|
||||||
|
return redirect(request.path, code=302)
|
||||||
|
else:
|
||||||
|
flash("Error: Cleaning Service already running.")
|
||||||
|
elif service == "pause":
|
||||||
|
if cleaningMan.running():
|
||||||
|
cleaningMan.disable()
|
||||||
|
return redirect(request.path, code=302)
|
||||||
|
else:
|
||||||
|
flash("Error: Cleaning Service already paused.")
|
||||||
|
else:
|
||||||
|
raise ValueError
|
||||||
|
except ValueError:
|
||||||
|
flash("Value Error: service")
|
||||||
|
elements = Cleaning.query.order_by(db.asc(db.collate(Cleaning.name, 'NOCASE'))).all()
|
||||||
|
return render_template('cleaning.html', elements=elements, task_running=cleaningMan.running())
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/add_cleaning', methods=['GET', 'POST'])
|
||||||
|
def add_cleaning():
|
||||||
|
form = CleaningForm(request.form)
|
||||||
|
if request.method == 'POST' and form.validate():
|
||||||
|
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)
|
|
@ -1,6 +1,6 @@
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
from dirkules.models import Cleaning
|
from dirkules.cleaning.models import Cleaning
|
||||||
from dirkules.hardware import autoclean
|
from dirkules.hardware import autoclean
|
||||||
from dirkules import db, app, scheduler
|
from dirkules import db, app, scheduler
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from dirkules import db
|
|
||||||
from dirkules.hardware.btrfsTools import create_pool
|
from dirkules.hardware.btrfsTools import create_pool
|
||||||
from dirkules.models import Cleaning, Drive
|
from dirkules.models import Drive
|
||||||
|
|
||||||
|
|
||||||
def create_cleaning_obj(jobname, path, active):
|
|
||||||
job = Cleaning(jobname, path, active)
|
|
||||||
db.session.add(job)
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def get_empty_drives():
|
def get_empty_drives():
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import datetime
|
|
||||||
from dirkules import db
|
from dirkules import db
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,19 +103,3 @@ class Time(db.Model):
|
||||||
|
|
||||||
def __init__(self, desc):
|
def __init__(self, desc):
|
||||||
self.desc = desc
|
self.desc = desc
|
||||||
|
|
||||||
|
|
||||||
class Cleaning(db.Model):
|
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
|
||||||
name = db.Column(db.String)
|
|
||||||
path = db.Column(db.String)
|
|
||||||
# state 0 means inactive - do not execute
|
|
||||||
state = db.Column(db.Boolean)
|
|
||||||
# time means last execution
|
|
||||||
time = db.Column(db.DateTime(timezone=True), default=datetime.datetime.now)
|
|
||||||
|
|
||||||
def __init__(self, name, path, state):
|
|
||||||
self.name = name
|
|
||||||
self.path = path
|
|
||||||
self.state = state
|
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
import datetime
|
import datetime
|
||||||
import subprocess
|
import subprocess
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from flask import render_template, redirect, request, url_for, flash, abort
|
from flask import render_template, redirect, request, url_for, abort
|
||||||
from dirkules import app, db, scheduler, app_version
|
from dirkules import app, scheduler, app_version
|
||||||
import dirkules.manager.serviceManager as servMan
|
import dirkules.manager.serviceManager as servMan
|
||||||
import dirkules.manager.driveManager as driveMan
|
import dirkules.manager.driveManager as driveMan
|
||||||
import dirkules.manager.cleaning as cleaningMan
|
from dirkules.models import Drive, Pool
|
||||||
from dirkules.models import Drive, Cleaning, Pool
|
|
||||||
import dirkules.manager.viewManager as viewManager
|
import dirkules.manager.viewManager as viewManager
|
||||||
from dirkules.validation.validators import CleaningForm, PoolAddForm
|
from dirkules.validation.validators import PoolAddForm
|
||||||
|
|
||||||
|
|
||||||
@app.errorhandler(404)
|
@app.errorhandler(404)
|
||||||
|
@ -85,63 +84,3 @@ def partitions(part):
|
||||||
except LookupError:
|
except LookupError:
|
||||||
abort(500, description="Invalid drive id {}".format(part))
|
abort(500, description="Invalid drive id {}".format(part))
|
||||||
return render_template('partitions.html', parts=drive.partitions)
|
return render_template('partitions.html', parts=drive.partitions)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/cleaning', methods=['GET'])
|
|
||||||
def cleaning():
|
|
||||||
remove = request.args.get('remove')
|
|
||||||
changestate = request.args.get('changestate')
|
|
||||||
service = request.args.get('service')
|
|
||||||
if not (remove is not None and changestate is not None):
|
|
||||||
if remove is not None:
|
|
||||||
try:
|
|
||||||
remove = int(remove)
|
|
||||||
Cleaning.query.filter(Cleaning.id == remove).delete()
|
|
||||||
db.session.commit()
|
|
||||||
return redirect(request.path, code=302)
|
|
||||||
except ValueError:
|
|
||||||
flash("Value Error: remove")
|
|
||||||
elif changestate is not None:
|
|
||||||
try:
|
|
||||||
changestate = int(changestate)
|
|
||||||
job = Cleaning.query.get(changestate)
|
|
||||||
if job.state == 0:
|
|
||||||
job.state = 1
|
|
||||||
else:
|
|
||||||
job.state = 0
|
|
||||||
db.session.commit()
|
|
||||||
return redirect(request.path, code=302)
|
|
||||||
except ValueError:
|
|
||||||
flash("Value Error: changestate")
|
|
||||||
else:
|
|
||||||
flash("Value Error: remove and changestate set")
|
|
||||||
if service is not None:
|
|
||||||
try:
|
|
||||||
service = str(service)
|
|
||||||
if service == "start":
|
|
||||||
if not cleaningMan.running():
|
|
||||||
cleaningMan.enable()
|
|
||||||
return redirect(request.path, code=302)
|
|
||||||
else:
|
|
||||||
flash("Error: Cleaning Service already running.")
|
|
||||||
elif service == "pause":
|
|
||||||
if cleaningMan.running():
|
|
||||||
cleaningMan.disable()
|
|
||||||
return redirect(request.path, code=302)
|
|
||||||
else:
|
|
||||||
flash("Error: Cleaning Service already paused.")
|
|
||||||
else:
|
|
||||||
raise ValueError
|
|
||||||
except ValueError:
|
|
||||||
flash("Value Error: service")
|
|
||||||
elements = Cleaning.query.order_by(db.asc(db.collate(Cleaning.name, 'NOCASE'))).all()
|
|
||||||
return render_template('cleaning.html', elements=elements, task_running=cleaningMan.running())
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/add_cleaning', methods=['GET', 'POST'])
|
|
||||||
def add_cleaning():
|
|
||||||
form = CleaningForm(request.form)
|
|
||||||
if request.method == 'POST' and form.validate():
|
|
||||||
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)
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue