forked from devs/PCv5
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from app import db
|
|
|
|
|
|
class Trophy(db.Model):
|
|
__tablename__ = 'trophy'
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
# Trophy type (polymorphic discriminator)
|
|
type = db.Column(db.String(20))
|
|
__mapper_args__ = {
|
|
'polymorphic_identity': __tablename__,
|
|
'polymorphic_on': type
|
|
}
|
|
# Standalone properties
|
|
name = db.Column(db.Text(convert_unicode=True))
|
|
|
|
owners = db.relationship('Member', secondary=lambda: TrophyMember,
|
|
back_populates='trophies')
|
|
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
class Title(Trophy):
|
|
__tablename__ = 'title'
|
|
__mapper_args__ = {'polymorphic_identity': __tablename__}
|
|
|
|
id = db.Column(db.Integer, db.ForeignKey('trophy.id'), primary_key=True)
|
|
title = db.Column(db.Text(convert_unicode=True))
|
|
|
|
def __init__(self, name, title):
|
|
self.name = name
|
|
self.title = title
|
|
|
|
|
|
# Many-to-many relation for users earning trophies
|
|
TrophyMember = db.Table('trophy_member', db.Model.metadata,
|
|
db.Column('tid', db.Integer, db.ForeignKey('trophy.id')),
|
|
db.Column('uid', db.Integer, db.ForeignKey('member.id')))
|