implemented job archiving (via a Setting, and just viewing recent or all)

This commit is contained in:
2022-01-13 23:11:21 +11:00
parent 3e67c9c27f
commit a2fb877f12
6 changed files with 37 additions and 12 deletions

20
job.py
View File

@@ -1,8 +1,9 @@
from wtforms import SubmitField, StringField, FloatField, HiddenField, validators, Form
from flask_wtf import FlaskForm
from flask import request, render_template
from settings import Settings
from main import db, app, ma
from sqlalchemy import Sequence
from sqlalchemy import Sequence, func
from sqlalchemy.exc import SQLAlchemyError
from status import st, Status
from datetime import datetime, timedelta
@@ -11,6 +12,8 @@ import pytz
import socket
from shared import PA_JOB_MANAGER_HOST, PA_JOB_MANAGER_PORT, NEWEST_LOG_LIMIT, OLDEST_LOG_LIMIT
from flask_login import login_required, current_user
from sqlalchemy.dialects.postgresql import INTERVAL
from sqlalchemy.sql.functions import concat
# pylint: disable=no-member
@@ -103,13 +106,20 @@ def NewJob(name, num_files="0", wait_for=None, jex=None ):
return job
################################################################################
# /jobs -> show current settings
# /jobs -> show jobs (default to only showing 'non-archived' jobs -- age is in
# settings.job_archive_age
################################################################################
@app.route("/jobs", methods=["GET"])
@app.route("/jobs", methods=["GET", "POST"])
@login_required
def jobs():
page_title='Job list'
jobs = Job.query.order_by(Job.id.desc()).all()
settings = Settings.query.first()
print( request.method )
if request.method == 'POST':
page_title='Job list (all)'
jobs = Job.query.order_by(Job.id.desc()).all()
else:
page_title='Job list (recent)'
jobs = Job.query.filter( Job.last_update >= (func.now() - func.cast(concat(settings.job_archive_age, 'DAYS'), INTERVAL)) ).order_by(Job.id.desc()).all()
return render_template("jobs.html", jobs=jobs, page_title=page_title)