mirror of
https://github.com/vale981/dirkules
synced 2025-03-04 17:01:40 -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.samba.models
|
||||
import dirkules.cleaning.models
|
||||
|
||||
# create db if not exists
|
||||
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 os
|
||||
from dirkules.models import Cleaning
|
||||
from dirkules.cleaning.models import Cleaning
|
||||
from dirkules.hardware import autoclean
|
||||
from dirkules import db, app, scheduler
|
||||
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from dirkules import db
|
||||
from dirkules.hardware.btrfsTools import create_pool
|
||||
from dirkules.models import Cleaning, Drive
|
||||
|
||||
|
||||
def create_cleaning_obj(jobname, path, active):
|
||||
job = Cleaning(jobname, path, active)
|
||||
db.session.add(job)
|
||||
db.session.commit()
|
||||
from dirkules.models import Drive
|
||||
|
||||
|
||||
def get_empty_drives():
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import datetime
|
||||
from dirkules import db
|
||||
|
||||
|
||||
|
@ -104,19 +103,3 @@ class Time(db.Model):
|
|||
|
||||
def __init__(self, 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 subprocess
|
||||
from time import sleep
|
||||
from flask import render_template, redirect, request, url_for, flash, abort
|
||||
from dirkules import app, db, scheduler, app_version
|
||||
from flask import render_template, redirect, request, url_for, abort
|
||||
from dirkules import app, 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, Pool
|
||||
from dirkules.models import Drive, Pool
|
||||
import dirkules.manager.viewManager as viewManager
|
||||
from dirkules.validation.validators import CleaningForm, PoolAddForm
|
||||
from dirkules.validation.validators import PoolAddForm
|
||||
|
||||
|
||||
@app.errorhandler(404)
|
||||
|
@ -85,63 +84,3 @@ def partitions(part):
|
|||
except LookupError:
|
||||
abort(500, description="Invalid drive id {}".format(part))
|
||||
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