diff --git a/the_works/models.py b/the_works/models.py index 3387762..b914839 100644 --- a/the_works/models.py +++ b/the_works/models.py @@ -1,8 +1,8 @@ -# based on output of `sqlacodegen --generator declarative sqlite:///path/to/the_works.sqlite` +# code is based on output from `sqlacodegen --generator declarative sqlite:///path/to/the_works.sqlite` from typing import List, Optional -from sqlalchemy import Column, ForeignKey, Integer, LargeBinary, Table, Text, types +from sqlalchemy import Column, ForeignKey, Table, types from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship from flask import url_for @@ -27,17 +27,17 @@ class Base(DeclarativeBase): class Genre(Base): __tablename__ = 'Genre' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Genre: Mapped[str] - text: Mapped[List['Text_']] = relationship('Text_', secondary='Text_Genre', back_populates='genre') + text: Mapped[List['Text']] = relationship('Text', secondary='Text_Genre', back_populates='genre') werk: Mapped[List['Werk']] = relationship('Werk', secondary='Werk_Genre', back_populates='genre') class Herausgeber(Base): __tablename__ = 'Herausgeber' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Name: Mapped[str] werk: Mapped[List['Werk']] = relationship('Werk', secondary='Werk_Herausgeber', back_populates='herausgeber') @@ -46,7 +46,7 @@ class Herausgeber(Base): class Pseudonym(Base): __tablename__ = 'Pseudonym' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Pseudonym: Mapped[str] veroeffentlichung: Mapped[List['Veroeffentlichung']] = relationship('Veroeffentlichung', back_populates='pseudonym') @@ -55,25 +55,25 @@ class Pseudonym(Base): class Sprache(Base): __tablename__ = 'Sprache' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Sprache: Mapped[str] - text: Mapped[List['Text_']] = relationship('Text_', back_populates='sprache') + text: Mapped[List['Text']] = relationship('Text', back_populates='sprache') class Textform(Base): __tablename__ = 'Textform' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Textform: Mapped[str] - text: Mapped[List['Text_']] = relationship('Text_', back_populates='textform') + text: Mapped[List['Text']] = relationship('Text', back_populates='textform') class Titelbild(Base): __tablename__ = 'Titelbild' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Mimetype: Mapped[str] Dateiname: Mapped[str] Dateigroesse: Mapped[int] @@ -81,7 +81,7 @@ class Titelbild(Base): Hoehe: Mapped[int] Bild: Mapped[bytes] Thumbnail: Mapped[bytes] - sha256: Mapped[str] = mapped_column(Text, unique=True) + sha256: Mapped[str] = mapped_column(unique=True) werk: Mapped[List['Werk']] = relationship('Werk', back_populates='titelbild') @@ -95,7 +95,7 @@ class Titelbild(Base): class Verlag(Base): __tablename__ = 'Verlag' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Verlag: Mapped[str] reihe: Mapped[List['Reihe']] = relationship('Reihe', back_populates='verlag') @@ -105,7 +105,7 @@ class Verlag(Base): class Werksform(Base): __tablename__ = 'Werksform' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Werksform: Mapped[str] werk: Mapped[List['Werk']] = relationship('Werk', back_populates='werksform') @@ -114,19 +114,19 @@ class Werksform(Base): class Reihe(Base): __tablename__ = 'Reihe' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Titel: Mapped[str] Verlag: Mapped[Optional[str]] = mapped_column('Verlag', ForeignKey('Verlag.ID')) verlag: Mapped[Optional['Verlag']] = relationship('Verlag', back_populates='reihe') - text: Mapped[List['Text_']] = relationship('Text_', back_populates='reihe') + text: Mapped[List['Text']] = relationship('Text', back_populates='reihe') werk: Mapped[List['Werk']] = relationship('Werk', back_populates='reihe') -class Text_(Base): +class Text(Base): __tablename__ = 'Text' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Titel: Mapped[str] Untertitel: Mapped[Optional[str]] Reihe: Mapped[Optional[int]] = mapped_column('Reihe', ForeignKey('Reihe.ID')) @@ -143,7 +143,7 @@ class Text_(Base): class Werk(Base): __tablename__ = 'Werk' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Titel: Mapped[str] Untertitel: Mapped[Optional[str]] Werksform: Mapped[Optional[int]] = mapped_column('Werksform', ForeignKey('Werksform.ID')) @@ -168,18 +168,10 @@ class Werk(Base): veroeffentlichung: Mapped[List['Veroeffentlichung']] = relationship('Veroeffentlichung', back_populates='werk') -t_Text_Genre = Table( - 'Text_Genre', - Base.metadata, - Column('Text', ForeignKey('Text.ID'), primary_key=True), - Column('Genre', ForeignKey('Genre.ID'), primary_key=True) -) - - class Veroeffentlichung(Base): __tablename__ = 'Veroeffentlichung' - ID: Mapped[int] = mapped_column(Integer, primary_key=True) + ID: Mapped[int] = mapped_column(primary_key=True) Text: Mapped[int] = mapped_column('Text', ForeignKey('Text.ID')) Werk: Mapped[int] = mapped_column('Werk', ForeignKey('Werk.ID')) Pseudonym: Mapped[int] = mapped_column('Pseudonym', ForeignKey('Pseudonym.ID')) @@ -187,10 +179,18 @@ class Veroeffentlichung(Base): AltUntertitel: Mapped[Optional[str]] pseudonym: Mapped['Pseudonym'] = relationship('Pseudonym', back_populates='veroeffentlichung') - text: Mapped['Text_'] = relationship('Text_', back_populates='veroeffentlichung') + text: Mapped['Text'] = relationship('Text', back_populates='veroeffentlichung') werk: Mapped['Werk'] = relationship('Werk', back_populates='veroeffentlichung') +t_Text_Genre = Table( + 'Text_Genre', + Base.metadata, + Column('Text', ForeignKey('Text.ID'), primary_key=True), + Column('Genre', ForeignKey('Genre.ID'), primary_key=True) +) + + t_Werk_Genre = Table( 'Werk_Genre', Base.metadata, diff --git a/the_works/views/text.py b/the_works/views/text.py index 643be2b..54f1437 100644 --- a/the_works/views/text.py +++ b/the_works/views/text.py @@ -1,7 +1,7 @@ from flask import Blueprint, render_template, request, redirect, flash, url_for from sqlalchemy import select, insert, update, delete from the_works.database import db -from the_works.models import Text_ as Text, Reihe, Sprache, Textform, t_Text_Genre, Genre +from the_works.models import Text, Reihe, Sprache, Textform, t_Text_Genre, Genre bp = Blueprint("text", __name__) diff --git a/the_works/views/veroeffentlichung.py b/the_works/views/veroeffentlichung.py index 186363e..7ffcc9f 100644 --- a/the_works/views/veroeffentlichung.py +++ b/the_works/views/veroeffentlichung.py @@ -1,7 +1,7 @@ from flask import Blueprint, render_template, request, redirect, flash, url_for from sqlalchemy import select, insert, update, delete from the_works.database import db -from the_works.models import Veroeffentlichung, Text_ as Text, Werk, Werksform, Pseudonym +from the_works.models import Veroeffentlichung, Text, Werk, Werksform, Pseudonym bp = Blueprint("veroeffentlichung", __name__)