Beispiel #1
0
class Album(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    title = db.Column(db.String)

    author = db.relationship('User', back_populates='albums')
    category = db.relationship('Category', back_populates='albums')
    entries = db.relationship('AlbumEntry', back_populates='album', order_by='AlbumEntry.order')

    @property
    def first_entry(self) -> Optional['AlbumEntry']:
        if len(self.entries) != 0:
            return self.entries[0]
        return None

    @property
    def first_entry_url(self) -> Optional[str]:
        entry = self.first_entry
        if entry is not None:
            return entry.image_url
        return None

    def __repr__(self):
        return '<Album: %r>' % self.title
Beispiel #2
0
class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, unique=True, nullable=False)

    albums = db.relationship('Album', back_populates='category')
    stories = db.relationship('Story', back_populates='category')

    def __repr__(self):
        return '<Category: %r>' % self.name
Beispiel #3
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nickname = db.Column(db.String, unique=True, nullable=False)

    avatar = entity.image_attachment('UserAvatar')
    albums = db.relationship('Album', back_populates='author')
    stories = db.relationship('Story', back_populates='author')

    @property
    def avatar_url(self) -> Optional[str]:
        with store_context(image_store):
            try:
                return self.avatar.locate()
            except IOError:
                pass
        return None

    def __repr__(self):
        return '<User: %r>' % self.nickname
Beispiel #4
0
class Story(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    title = db.Column(db.String)
    flavour_text = db.Column(db.String)
    fulltext_html = db.Column(db.String)

    cover = entity.image_attachment('StoryCover')
    author = db.relationship('User', back_populates='stories')
    category = db.relationship('Category', back_populates='stories')

    @property
    def cover_url(self) -> Optional[str]:
        with store_context(image_store):
            try:
                return self.cover.locate()
            except IOError:
                pass
        return None

    def __repr__(self):
        return '<Story: %r>' % self.title
Beispiel #5
0
class UserModel(db.Model, UserMixin):
    __tablename__ = 'user_model'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    books = db.relationship('Book', backref='user_book', lazy=True)

    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = password

    def __repr__(self):
        return f"<User('{self.username}', '{self.email}')>"
Beispiel #6
0
class AlbumEntry(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    album_id = db.Column(db.Integer, db.ForeignKey('album.id'), nullable=False)
    order = db.Column(db.Integer, nullable=False)
    caption = db.Column(db.String)

    album = db.relationship('Album', back_populates='entries')
    image = entity.image_attachment('AlbumImage')

    @property
    def image_url(self) -> Optional[str]:
        with store_context(image_store):
            try:
                return self.image.locate()
            except IOError:
                pass
        return None

    def __repr__(self):
        return '<AlbumEntry: %r>' % self.caption