added __repr__() and _asdict() methods to "Model" baseclass; changed indentation from 4 to 2

This commit is contained in:
eclipse 2025-05-21 17:36:31 +02:00
parent e45e45f025
commit 7dc191dcab

View File

@ -2,90 +2,100 @@ from the_works.database import db
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.ext.associationproxy import association_proxy
class Text(db.Model): # override/add __repr__() and _asdict() methods from sqlalchemy.orm.decl_api.Model for easier handling of table rows
__table__ = db.Model.metadata.tables['Text'] def __repr__(self):
return str({col.key: self.__getattribute__(col.key) for col in self.__table__.c})
reihe = relationship("Reihe", back_populates="text") def _asdict(self):
textform = relationship("Textform", back_populates="text") return {col.key: self.__getattribute__(col.key) for col in self.__table__.c}
sprache = relationship("Sprache", back_populates="text")
veroeffentlichung = relationship("Veroeffentlichung", back_populates="text") db.Model.__repr__ = __repr__
text_genre = relationship("Text_Genre", back_populates="text", cascade="save-update, merge, delete, delete-orphan") db.Model._asdict = _asdict
genres = association_proxy("text_genre", "Genre")
class Text(db.Model):
__table__ = db.Model.metadata.tables['Text']
reihe = relationship("Reihe", back_populates="text")
textform = relationship("Textform", back_populates="text")
sprache = relationship("Sprache", back_populates="text")
veroeffentlichung = relationship("Veroeffentlichung", back_populates="text")
text_genre = relationship("Text_Genre", back_populates="text", cascade="save-update, merge, delete, delete-orphan")
genres = association_proxy("text_genre", "Genre")
class Werk(db.Model): class Werk(db.Model):
__table__ = db.Model.metadata.tables['Werk'] __table__ = db.Model.metadata.tables['Werk']
reihe = relationship("Reihe", back_populates="werk") reihe = relationship("Reihe", back_populates="werk")
verlag = relationship("Verlag", back_populates="werk") verlag = relationship("Verlag", back_populates="werk")
werksform = relationship("Werksform", back_populates="werk") werksform = relationship("Werksform", back_populates="werk")
veroeffentlichung = relationship("Veroeffentlichung", back_populates="werk") veroeffentlichung = relationship("Veroeffentlichung", back_populates="werk")
werk_genre = relationship("Werk_Genre", back_populates="werk", cascade="save-update, merge, delete, delete-orphan") werk_genre = relationship("Werk_Genre", back_populates="werk", cascade="save-update, merge, delete, delete-orphan")
genres = association_proxy("werk_genre", "Genre") genres = association_proxy("werk_genre", "Genre")
werk_herausgeber = relationship("Werk_Herausgeber", back_populates="werk", cascade="save-update, merge, delete, delete-orphan") werk_herausgeber = relationship("Werk_Herausgeber", back_populates="werk", cascade="save-update, merge, delete, delete-orphan")
herausgeber = association_proxy("werk_herausgeber", "Herausgeber") herausgeber = association_proxy("werk_herausgeber", "Herausgeber")
class Veroeffentlichung(db.Model): class Veroeffentlichung(db.Model):
__table__ = db.Model.metadata.tables['Veroeffentlichung'] __table__ = db.Model.metadata.tables['Veroeffentlichung']
text = relationship("Text", back_populates="veroeffentlichung") text = relationship("Text", back_populates="veroeffentlichung")
werk = relationship("Werk", back_populates="veroeffentlichung") werk = relationship("Werk", back_populates="veroeffentlichung")
pseudonym = relationship("Pseudonym", back_populates="veroeffentlichung") pseudonym = relationship("Pseudonym", back_populates="veroeffentlichung")
class Reihe(db.Model): class Reihe(db.Model):
__table__ = db.Model.metadata.tables['Reihe'] __table__ = db.Model.metadata.tables['Reihe']
text = relationship("Text", back_populates="reihe") text = relationship("Text", back_populates="reihe")
werk = relationship("Werk", back_populates="reihe") werk = relationship("Werk", back_populates="reihe")
verlag = relationship("Verlag", back_populates="reihe") verlag = relationship("Verlag", back_populates="reihe")
class Verlag(db.Model): class Verlag(db.Model):
__table__ = db.Model.metadata.tables['Verlag'] __table__ = db.Model.metadata.tables['Verlag']
werk = relationship("Werk", back_populates="verlag") werk = relationship("Werk", back_populates="verlag")
reihe = relationship("Reihe", back_populates="verlag") reihe = relationship("Reihe", back_populates="verlag")
class Sprache(db.Model): class Sprache(db.Model):
__table__ = db.Model.metadata.tables['Sprache'] __table__ = db.Model.metadata.tables['Sprache']
text = relationship("Text", back_populates="sprache") text = relationship("Text", back_populates="sprache")
class Textform(db.Model): class Textform(db.Model):
__table__ = db.Model.metadata.tables['Textform'] __table__ = db.Model.metadata.tables['Textform']
text = relationship("Text", back_populates="textform") text = relationship("Text", back_populates="textform")
class Werksform(db.Model): class Werksform(db.Model):
__table__ = db.Model.metadata.tables['Werksform'] __table__ = db.Model.metadata.tables['Werksform']
werk = relationship("Werk", back_populates="werksform") werk = relationship("Werk", back_populates="werksform")
class Genre(db.Model): class Genre(db.Model):
__table__ = db.Model.metadata.tables['Genre'] __table__ = db.Model.metadata.tables['Genre']
text_genre = relationship("Text_Genre", back_populates="genre") text_genre = relationship("Text_Genre", back_populates="genre")
werk_genre = relationship("Werk_Genre", back_populates="genre") werk_genre = relationship("Werk_Genre", back_populates="genre")
class Pseudonym(db.Model): class Pseudonym(db.Model):
__table__ = db.Model.metadata.tables['Pseudonym'] __table__ = db.Model.metadata.tables['Pseudonym']
veroeffentlichung = relationship("Veroeffentlichung", back_populates="pseudonym") veroeffentlichung = relationship("Veroeffentlichung", back_populates="pseudonym")
class Herausgeber(db.Model): class Herausgeber(db.Model):
__table__ = db.Model.metadata.tables['Herausgeber'] __table__ = db.Model.metadata.tables['Herausgeber']
werk_herausgeber = relationship("Werk_Herausgeber", back_populates="herausgeber") werk_herausgeber = relationship("Werk_Herausgeber", back_populates="herausgeber")
class Text_Genre(db.Model): class Text_Genre(db.Model):
__table__ = db.Model.metadata.tables['Text_Genre'] __table__ = db.Model.metadata.tables['Text_Genre']
text = relationship("Text", back_populates="text_genre") text = relationship("Text", back_populates="text_genre")
genre = relationship("Genre", back_populates="text_genre") genre = relationship("Genre", back_populates="text_genre")
def __init__(self, genre: int): def __init__(self, genre: int):
self.Genre = genre self.Genre = genre
class Werk_Genre(db.Model): class Werk_Genre(db.Model):
__table__ = db.Model.metadata.tables['Werk_Genre'] __table__ = db.Model.metadata.tables['Werk_Genre']
werk = relationship("Werk", back_populates="werk_genre") werk = relationship("Werk", back_populates="werk_genre")
genre = relationship("Genre", back_populates="werk_genre") genre = relationship("Genre", back_populates="werk_genre")
def __init__(self, genre: int): def __init__(self, genre: int):
self.Genre = genre self.Genre = genre
class Werk_Herausgeber(db.Model): class Werk_Herausgeber(db.Model):
__table__ = db.Model.metadata.tables['Werk_Herausgeber'] __table__ = db.Model.metadata.tables['Werk_Herausgeber']
werk = relationship("Werk", back_populates="werk_herausgeber") werk = relationship("Werk", back_populates="werk_herausgeber")
herausgeber = relationship("Herausgeber", back_populates="werk_herausgeber") herausgeber = relationship("Herausgeber", back_populates="werk_herausgeber")
def __init__(self, hrsg: int): def __init__(self, hrsg: int):
self.Herausgeber = hrsg self.Herausgeber = hrsg