added new classes and relationships; Text now has an AssociationProxy for easier access to associated genres
This commit is contained in:
parent
78de6afa0a
commit
4a842850d2
@ -1,23 +1,29 @@
|
||||
from the_works.database import db
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
|
||||
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")
|
||||
|
||||
def __repr__(self):
|
||||
return f"Text(ID={self.ID}, Titel={self.Titel}, Untertitel={self.Untertitel}, Reihe={self.Reihe})"
|
||||
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):
|
||||
__table__ = db.Model.metadata.tables['Werk']
|
||||
reihe = relationship("Reihe", back_populates="werk")
|
||||
verlag = relationship("Verlag", back_populates="werk")
|
||||
werksform = relationship("Werksform", back_populates="werk")
|
||||
veroeffentlichung = relationship("Veroeffentlichung", back_populates="werk")
|
||||
werk_genre = relationship("Werk_Genre", back_populates="werk")
|
||||
|
||||
def __repr__(self):
|
||||
return f"Werk(ID={self.ID}, Titel={self.Titel}, Untertitel={self.Untertitel}, Erscheinungsdatum={self.Erscheinungsdatum})"
|
||||
class Veroeffentlichung(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Veroeffentlichung']
|
||||
text = relationship("Text", back_populates="veroeffentlichung")
|
||||
werk = relationship("Werk", back_populates="veroeffentlichung")
|
||||
pseudonym = relationship("Pseudonym", back_populates="veroeffentlichung")
|
||||
|
||||
class Reihe(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Reihe']
|
||||
@ -44,9 +50,26 @@ class Werksform(db.Model):
|
||||
|
||||
class Genre(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Genre']
|
||||
text_genre = relationship("Text_Genre", back_populates="genre")
|
||||
werk_genre = relationship("Werk_Genre", back_populates="genre")
|
||||
|
||||
class Pseudonym(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Pseudonym']
|
||||
veroeffentlichung = relationship("Veroeffentlichung", back_populates="pseudonym")
|
||||
|
||||
class Herausgeber(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Herausgeber']
|
||||
|
||||
class Text_Genre(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Text_Genre']
|
||||
text = relationship("Text", back_populates="text_genre")
|
||||
genre = relationship("Genre", back_populates="text_genre")
|
||||
|
||||
def __init__(self, genre: int):
|
||||
self.Genre = genre
|
||||
|
||||
class Werk_Genre(db.Model):
|
||||
__table__ = db.Model.metadata.tables['Werk_Genre']
|
||||
werk = relationship("Werk", back_populates="werk_genre")
|
||||
genre = relationship("Genre", back_populates="werk_genre")
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user