From 2e06c0b285793763563ec0d5f3712e732b0baede Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Mon, 5 Jul 2021 16:51:44 +1000 Subject: [PATCH] moved class Refimg to person, and ditched all other routes/direct access to ref images, they are only a part of Person in UI now --- ai.py | 3 +- files.py | 3 +- main.py | 1 - person.py | 11 +++- refimg.py | 120 -------------------------------------------- templates/base.html | 7 --- 6 files changed, 12 insertions(+), 133 deletions(-) delete mode 100644 refimg.py diff --git a/ai.py b/ai.py index ea56faf..ff73a02 100644 --- a/ai.py +++ b/ai.py @@ -6,8 +6,7 @@ from sqlalchemy import Sequence from sqlalchemy.exc import SQLAlchemyError from status import st, Status from files import Entry, File -from person import Person, PersonRefimgLink -from refimg import Refimg +from person import Refimg, Person, PersonRefimgLink from flask_login import login_required, current_user from job import Job, JobExtra, Joblog, NewJob diff --git a/files.py b/files.py index 4639f75..51b6348 100644 --- a/files.py +++ b/files.py @@ -23,8 +23,7 @@ from flask_login import login_required, current_user ################################################################################ from job import Job, JobExtra, Joblog, NewJob from path import PathType, Path -from person import Person, PersonRefimgLink -from refimg import Refimg +from person import Refimg, Person, PersonRefimgLink from settings import Settings from shared import SymlinkName from dups import Duplicates diff --git a/main.py b/main.py index 9a75a79..348e2e7 100644 --- a/main.py +++ b/main.py @@ -55,7 +55,6 @@ login_manager.login_view = "login" # default login route, failed wit from settings import Settings from files import Entry, GetJM_Message, ClearJM_Message from person import Person -from refimg import Refimg from job import Job, GetNumActiveJobs from ai import aistats from path import StoragePathNames diff --git a/person.py b/person.py index 7ec4a00..02a7dde 100644 --- a/person.py +++ b/person.py @@ -5,7 +5,6 @@ from main import db, app, ma from sqlalchemy import Sequence from sqlalchemy.exc import SQLAlchemyError from status import st, Status -from refimg import Refimg from flask_login import login_required, current_user from werkzeug import secure_filename from shared import GenFace, GenThumb @@ -18,6 +17,16 @@ import os ################################################################################ # Class describing Person in the database, and via sqlalchemy, connected to the DB as well ################################################################################ +class Refimg(db.Model): + id = db.Column(db.Integer, db.Sequence('refimg_id_seq'), primary_key=True ) + fname = db.Column(db.String(256), unique=True, nullable=False) + face = db.Column(db.LargeBinary, unique=True, nullable=False) + thumbnail = db.Column(db.String, unique=True, nullable=False) + created_on = db.Column(db.Float) + + def __repr__(self): + return "".format(self.id, self.fname ) + class PersonRefimgLink(db.Model): __tablename__ = "person_refimg_link" person_id = db.Column(db.Integer, db.ForeignKey('person.id'), unique=True, nullable=False, primary_key=True) diff --git a/refimg.py b/refimg.py deleted file mode 100644 index b90196c..0000000 --- a/refimg.py +++ /dev/null @@ -1,120 +0,0 @@ -from wtforms import SubmitField, StringField, HiddenField, FileField, validators, Form -from flask_wtf import FlaskForm -from flask import request, render_template, redirect -from main import db, app, ma -from sqlalchemy import Sequence -from sqlalchemy.exc import SQLAlchemyError -from status import st, Status -import os -from flask_login import login_required, current_user - -# pylint: disable=no-member - -################################################################################ -# Class describing Refimg in the database, and via sqlalchemy, connected to the DB as well -################################################################################ -class Refimg(db.Model): - id = db.Column(db.Integer, db.Sequence('refimg_id_seq'), primary_key=True ) - fname = db.Column(db.String(256), unique=True, nullable=False) - face = db.Column(db.LargeBinary, unique=True, nullable=False) - thumbnail = db.Column(db.String, unique=True, nullable=False) - created_on = db.Column(db.Float) - - def __repr__(self): - return "".format(self.id, self.fname ) - -################################################################################ -# Helper class that inherits a .dump() method to turn class Refimg into json / useful in jinja2 -################################################################################ -class RefimgSchema(ma.SQLAlchemyAutoSchema): - class Meta: - model = Refimg - ordered = True - -################################################################################ -# Helper class that defines a form for refimg, used to make html
, with field validation (via wtforms) -################################################################################ -class RefimgForm(FlaskForm): - id = HiddenField() - fname = StringField('File name:', [validators.DataRequired()]) - refimg_file = FileField('File name:') - submit = SubmitField('Save' ) - delete = SubmitField('Delete' ) - -################################################################################ -# Routes for refimg data -# -# /refimgs -> GET only -> prints out list of all refimgs -################################################################################ -@app.route("/refimgs", methods=["GET"]) -@login_required -def refimgs(): - refimgs = Refimg.query.all() - return render_template("refimgs.html", refimgs=refimgs) - - -################################################################################ -# /refimg -> GET/POST -> creates a new refimg type and when created, takes you back to /refimgs -################################################################################ -@app.route("/refimg", methods=["GET", "POST"]) -@login_required -def new_refimg(): - form = RefimgForm(request.form) - page_title='Create new Reference Image' - if request.method == 'GET': - return render_template("refimg.html", form=form, page_title=page_title ) - else: - # now save into the DB - refimg = Refimg( fname=request.form["fname"] ) - try: - # save the actual uploaded image to reference_images/ - f=request.files['refimg_file'] - f.save(os.path.join("reference_images", request.form["fname"])) - db.session.add(refimg) - db.session.commit() - st.SetMessage( "Created new Refimg ({})".format(refimg.fname) ) - return redirect( '/refimgs' ) - except SQLAlchemyError as e: - st.SetAlert( "danger" ) - st.SetMessage( "Failed to add Refimg: {}".format(e.orig) ) - except Exception as e: - st.SetAlert( "danger" ) - st.SetMessage( "Failed to modify Refimg: {}".format(e) ) - return render_template("refimg.html", form=form, page_title=page_title) - -################################################################################ -# /refimg/ -> GET/POST(save or delete) -> shows/edits/delets a single -# refimg -################################################################################ -@app.route("/refimg/", methods=["GET", "POST"]) -@login_required -def refimg(id): - form = RefimgForm(request.form) - page_title='Edit Reference Image' - if request.method == 'POST': - try: - refimg = Refimg.query.get(id) - os.remove("reference_images/{}".format(refimg.fname) ) - if 'delete' in request.form: - st.SetMessage("Successfully deleted Refimg: ({})".format( refimg.fname ) ) - refimg = Refimg.query.filter(Refimg.id==id).delete() - if 'submit' in request.form and form.validate(): - st.SetMessage("Successfully Updated Refimg: (From: {})".format(refimg.fname)) - refimg.fname = request.form['fname'] - st.AppendMessage(" To: ({})".format(refimg.fname) ) - # save the actual uploaded image to reference_images/ - f=request.files['refimg_file'] - f.save(os.path.join("reference_images", request.form["fname"])) - db.session.commit() - return redirect( '/refimgs' ) - except SQLAlchemyError as e: - st.SetAlert( "danger" ) - st.SetMessage( "Failed to modify Refimg: {}".format(e.orig) ) - except Exception as e: - st.SetAlert( "danger" ) - st.SetMessage( "Failed to modify Refimg: {}".format(e) ) - return render_template("refimg.html", form=form, page_title=page_title) - else: - refimg = Refimg.query.get(id) - form = RefimgForm(request.values, obj=refimg) - return render_template("refimg.html", object=refimg, form=form, page_title = page_title) diff --git a/templates/base.html b/templates/base.html index 533e674..e4447b6 100644 --- a/templates/base.html +++ b/templates/base.html @@ -75,13 +75,6 @@ Show People -