Пример #1
0
class Registration(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    username = db.Column(db.Text(), unique=True)
    blob = db.Column(db.Text())
    _priority = db.Column("priority", db.Integer())
    _confirmed = db.Column("confirmed", db.Boolean())
    uni_id = db.Column(db.Integer(), db.ForeignKey("uni.id"))
    uni = db.relationship(
        "Uni",
        backref=db.backref("Registrations",
                           lazy="dynamic",
                           cascade="all, delete-orphan"),
    )

    @property
    def user(self):
        return User.get(self.username)

    @property
    def is_guaranteed(self):
        return any(
            map(self.user.is_in_group,
                current_app.config["ZAPF_GUARANTEED_GROUPS"]))

    @property
    def confirmed(self):
        return self._confirmed or self.is_guaranteed

    @confirmed.setter
    def confirmed(self, value):
        if not self.is_guaranteed:
            self._confirmed = value

    @property
    def priority(self):
        return self._priority if not self.is_guaranteed else -1

    @priority.setter
    def priority(self, value):
        self._priority = value if not self.is_guaranteed else None

    @property
    def data(self):
        return json.loads(self.blob)

    @data.setter
    def data(self, value):
        self.blob = json.dumps(value)

    @property
    def is_zapf_attendee(self):
        return self.confirmed and self.priority < self.uni.slots
Пример #2
0
class Story(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=True)
    text = db.Column(db.String, nullable=False)
    preview = db.Column(db.Text, nullable=False)
    tags = db.Column(db.Text(200), nullable=True)
    datetime_created = db.Column(db.BIGINT, nullable=True)
    last_update = db.Column(db.BIGINT, nullable=False)
    locale = db.Column(db.String(10), nullable=False)
    status = db.Column(db.Enum('in_sketch', 'published', 'excluded', 'banned'))
    publisher_id = db.Column(db.Integer,
                             db.ForeignKey('user.id'),
                             nullable=False)
Пример #3
0
class Uni(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    token = db.Column(db.String(256), unique=True)
    name = db.Column(db.Text(), unique=True)
    slots = db.Column(db.Integer())

    def __init__(self, name, token, slots=3):
        self.name = name
        self.token = token
        self.slots = slots

    def __repr__(self):
        return "<Uni: {}>".format(self.name)
Пример #4
0
class Mascot(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.Text(), unique=False)
    uni_id = db.Column(db.Integer(), db.ForeignKey('uni.id'))
    uni = db.relationship('Uni',
                          backref=db.backref('Mascots',
                                             lazy='dynamic',
                                             cascade="all, delete-orphan"))

    def __init__(self, name, uni_id):
        self.name = name
        self.uni_id = uni_id

    def __repr__(self):
        return "<Mascot: {}>".format(self.name)