From 588980a2604690d22419b1983e79388efc6dfb7c Mon Sep 17 00:00:00 2001 From: Cam Date: Fri, 15 Jan 2021 16:55:12 +1100 Subject: [PATCH] Added the ability to add a reference image to a person, and connect the two in the db --- main.py | 7 ------- person.py | 19 +++++++++++++++---- refimg.py | 8 ++++++++ templates/person.html | 13 ++++++++++++- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/main.py b/main.py index b30aa23..c8e0873 100644 --- a/main.py +++ b/main.py @@ -35,13 +35,6 @@ from job import Job from ai import * ####################################### CLASSES / DB model ####################################### -class Person_Refimg_Link(db.Model): - __tablename__ = "person_refimg_link" - person_id = db.Column(db.Integer, db.ForeignKey('person.id'), unique=True, nullable=False, primary_key=True) - refimg_id = db.Column(db.Integer, db.ForeignKey('refimg.id'), unique=True, nullable=False, primary_key=True) - - def __repr__(self): - return "".format(self.person_id, self.refimg_id) ####################################### GLOBALS ####################################### # allow jinja2 to call these python functions directly diff --git a/person.py b/person.py index 74a8736..e49aff8 100644 --- a/person.py +++ b/person.py @@ -8,6 +8,7 @@ from status import st, Status from files import File from refimg import Refimg +from refimg import Person_Refimg_Link ################################################################################ # Class describing Person in the database, and via sqlalchemy, connected to the DB as well @@ -17,9 +18,10 @@ class Person(db.Model): tag = db.Column(db.String(48), unique=False, nullable=False) surname = db.Column(db.String(48), unique=False, nullable=False) firstname = db.Column(db.String(48), unique=False, nullable=False) + refimg = db.relationship('Refimg', secondary=Person_Refimg_Link.__table__) def __repr__(self): - return "".format(self.tag,self.firstname, self.surname) + return "".format(self.tag,self.firstname, self.surname, self.refimg) class File_Person_Link(db.Model): __tablename__ = "file_person_link" @@ -66,8 +68,10 @@ def persons(): def new_person(): form = PersonForm(request.form) page_title='Create new Person' + reference_imgs = Refimg.query.all() + if 'surname' not in request.form: - return render_template("person.html", form=form, page_title=page_title ) + return render_template("person.html", reference_imgs=reference_imgs, form=form, page_title=page_title ) else: person = Person( tag=request.form["tag"], surname=request.form["surname"], firstname=request.form["firstname"] ) try: @@ -79,7 +83,7 @@ def new_person(): except SQLAlchemyError as e: st.SetAlert( "danger" ) st.SetMessage( "Failed to add Person: {}".format(e.orig) ) - return render_template("person.html", form=form, page_title=page_title, alert=st.GetAlert(), message=st.GetMessage() ) + return render_template("person.html", object=person, form=form, reference_imgs=reference_imgs, page_title = page_title, alert=st.GetAlert(), message=st.GetMessage() ) ################################################################################ # /person/ -> GET/POST(save or delete) -> shows/edits/delets a single @@ -102,14 +106,21 @@ def person(id): person.tag = request.form['tag'] person.surname = request.form['surname'] person.firstname = request.form['firstname'] + person.refimg =[] + for ref_img in reference_imgs: + if "ref-img-id-{}".format(ref_img.id) in request.form: + print('{} was checked, id: {}'.format(ref_img.fname, ref_img.id)) + person.refimg.append(ref_img) + st.AppendMessage(" To: ({}, {}, {})".format(person.tag, person.firstname, person.surname) ) db.session.commit() return redirect( '/persons' ) except SQLAlchemyError as e: st.SetAlert( "danger" ) - st.SetMessage( "Failed to modify Person: {}".format(e.orig) ) + st.SetMessage( "Failed to modify Person: {}".format(e) ) return render_template("person.html", form=form, reference_imgs="test", page_title=page_title, alert=st.GetAlert(), message=st.GetMessage() ) else: person = Person.query.get(id) + print(person) form = PersonForm(request.values, obj=person) return render_template("person.html", object=person, form=form, reference_imgs=reference_imgs, page_title = page_title, alert=st.GetAlert(), message=st.GetMessage() ) diff --git a/refimg.py b/refimg.py index b2a019c..596c25c 100644 --- a/refimg.py +++ b/refimg.py @@ -16,6 +16,14 @@ class Refimg(db.Model): def __repr__(self): return "".format(self.id, self.fname ) + +class Person_Refimg_Link(db.Model): + __tablename__ = "person_refimg_link" + person_id = db.Column(db.Integer, db.ForeignKey('person.id'), unique=True, nullable=False, primary_key=True) + refimg_id = db.Column(db.Integer, db.ForeignKey('refimg.id'), unique=True, nullable=False, primary_key=True) + + def __repr__(self): + return "".format(self.person_id, self.refimg_id) ################################################################################ # Helper class that inherits a .dump() method to turn class Refimg into json / useful in jinja2 diff --git a/templates/person.html b/templates/person.html index d233eca..f08ef14 100644 --- a/templates/person.html +++ b/templates/person.html @@ -1,7 +1,6 @@ {% extends "base.html" %} {% block main_content %}

{{page_title}}

- {{reference_imgs}}
{% for field in form %} @@ -14,6 +13,18 @@
{% endif %} {% endfor %} +
+
Reference Images:
+ {% for ref_img in reference_imgs %} +
+ {{ref_img.fname}} +
+ {% endfor %} +