Exemplo n.º 1
0
class Like(db.Model):
    __tablename__ = 'likes'
    id = db.Column(db.Integer(), primary_key=True, nullable=False)
    author_id = db.Column(db.String(),
                          db.ForeignKey('users.username'),
                          nullable=False)
    video_id = db.Column(db.Integer(),
                         db.ForeignKey('videos.id'),
                         nullable=False)
    like = db.Column(db.Integer(), nullable=False, default=0)
    dislike = db.Column(db.Integer(), nullable=False, default=0)

    def __init__(self, video_id, author_id='', like=0, dislike=0):
        self.video_id = video_id
        self.author_id = author_id
        self.like = like
        self.dislike = dislike

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def update(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)
        db.session.commit()

    def __repr__(self):
        return 'Like: {}'.format(self.id)
Exemplo n.º 2
0
class Comment(db.Model):
    __tablename__ = 'comments'
    id = db.Column(db.Integer(), primary_key=True, nullable=False)
    author_id = db.Column(db.String(),
                          db.ForeignKey('users.username'),
                          nullable=False)
    video_id = db.Column(db.Integer(),
                         db.ForeignKey('videos.id'),
                         nullable=False)
    content = db.Column(db.Text(), nullable=False)
    timestamp = db.Column(db.DateTime(timezone=True),
                          server_default=func.now(),
                          nullable=False)

    def __init__(self, video_id, content, author_id=''):
        self.content = content
        self.author_id = author_id
        self.video_id = video_id

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def update(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)
        db.session.commit()

    def __repr__(self):
        return 'Comment: {}'.format(self.content)
Exemplo n.º 3
0
class PenguinIglooRoom(db.Model, RoomMixin):
    __tablename__ = 'penguin_igloo_room'

    id = db.Column(db.Integer, primary_key=True,
                   server_default=db.text("nextval('\"penguin_igloo_room_id_seq\"'::regclass)"))
    penguin_id = db.Column(db.ForeignKey('penguin.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    type = db.Column(db.ForeignKey('igloo.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    flooring = db.Column(db.ForeignKey('flooring.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    music = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    location = db.Column(db.ForeignKey('location.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    locked = db.Column(db.Boolean, nullable=False, server_default=db.text("true"))
    competition = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))

    internal_id = 2000
    name = 'Igloo'
    member = False
    max_users = 80
    required_item = None
    game = False
    blackhole = False
    spawn = False
    stamp_group = None

    @property
    def external_id(self):
        return self.penguin_id + PenguinIglooRoom.internal_id

    def __init__(self, *args, **kwargs):
        RoomMixin.__init__(self, *args, **kwargs)
        super().__init__(*args, **kwargs)
Exemplo n.º 4
0
class PenguinIgloo(db.Model):
    __tablename__ = 'penguin_igloo'

    penguin_id = db.Column(db.ForeignKey('penguin.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True,
                           nullable=False)
    igloo_id = db.Column(db.ForeignKey('igloo.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True,
                         nullable=False)
Exemplo n.º 5
0
class Character(db.Model):
    __tablename__ = 'character'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), nullable=False)
    gift_id = db.Column(
        db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    stamp_id = db.Column(
        db.ForeignKey('stamp.id', ondelete='CASCADE', onupdate='CASCADE'))
Exemplo n.º 6
0
class IglooFurniture(db.Model):
    __tablename__ = 'igloo_furniture'

    igloo_id = db.Column(db.ForeignKey('penguin_igloo_room.id', ondelete='CASCADE', onupdate='CASCADE'),
                         primary_key=True, nullable=False, index=True)
    furniture_id = db.Column(db.ForeignKey('furniture.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True,
                             nullable=False)
    x = db.Column(db.SmallInteger, primary_key=True, nullable=False, server_default=db.text("0"))
    y = db.Column(db.SmallInteger, primary_key=True, nullable=False, server_default=db.text("0"))
    frame = db.Column(db.SmallInteger, primary_key=True, nullable=False, server_default=db.text("0"))
    rotation = db.Column(db.SmallInteger, primary_key=True, nullable=False, server_default=db.text("0"))
Exemplo n.º 7
0
class BuddyRequest(db.Model):
    __tablename__ = 'buddy_request'
    penguin_id = db.Column(db.ForeignKey('penguin.id',
                                         ondelete='CASCADE',
                                         onupdate='CASCADE'),
                           primary_key=True,
                           nullable=False)
    requester_id = db.Column(db.ForeignKey('penguin.id',
                                           ondelete='CASCADE',
                                           onupdate='CASCADE'),
                             primary_key=True,
                             nullable=False)
Exemplo n.º 8
0
class IgnoreList(db.Model):
    __tablename__ = 'ignore_list'
    penguin_id = db.Column(db.ForeignKey('penguin.id',
                                         ondelete='CASCADE',
                                         onupdate='CASCADE'),
                           primary_key=True,
                           nullable=False)
    ignore_id = db.Column(db.ForeignKey('penguin.id',
                                        ondelete='CASCADE',
                                        onupdate='CASCADE'),
                          primary_key=True,
                          nullable=False,
                          index=True)
Exemplo n.º 9
0
class CharacterBuddy(db.Model):
    __tablename__ = 'character_buddy'
    penguin_id = db.Column(db.ForeignKey('penguin.id',
                                         ondelete='CASCADE',
                                         onupdate='CASCADE'),
                           primary_key=True,
                           nullable=False)
    character_id = db.Column(db.ForeignKey('character.id',
                                           ondelete='CASCADE',
                                           onupdate='CASCADE'),
                             primary_key=True,
                             nullable=False)
    best_buddy = db.Column(db.Boolean,
                           nullable=False,
                           server_default=db.text("false"))
Exemplo n.º 10
0
class logs(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    log = db.Column(db.Boolean, default=True)
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
    updated_at = db.Column(db.DateTime,
                           default=db.func.current_timestamp(),
                           onupdate=db.func.current_timestamp())
    employee_id = db.Column(db.Integer,
                            db.ForeignKey('employees.id'),
                            nullable=False)

    def __init__(self, employee_id, log):
        self.employee_id = employee_id
        self.log = log

    def __str__(self):
        return {
            'id': self.id,
            'log': self.log,
            'created_at': self.created_at,
            'updated_at': self.updated_at,
            'employee_id': self.employee_id,
            'name': self.employee.name,
            'email': self.employee.email
        }
Exemplo n.º 11
0
class CfcDonation(db.Model):
    __tablename__ = 'cfc_donation'

    penguin_id = db.Column(db.ForeignKey('penguin.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    coins = db.Column(db.Integer, nullable=False)
    charity = db.Column(db.Integer, nullable=False)
    date = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
Exemplo n.º 12
0
class Notifications(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.Text)
    notif_type = db.Column(db.String(20))
    viewed = db.Column(db.Boolean, default=False)

    # timestamps
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
    updated_at = db.Column(db.DateTime,
                           default=db.func.current_timestamp(),
                           onupdate=db.func.current_timestamp())

    # relationship
    account_id = db.Column(db.Integer,
                           db.ForeignKey('accounts.id'),
                           nullable=True)

    def serialize(self):
        return {
            'id': self.id,
            'content': self.content,
            'account_id': self.account.id,
            'viewed': self.viewed,
            'notif_type': self.notif_type,
            'created_at': self.created_at,
            'updated_at': self.updated_at
        }
Exemplo n.º 13
0
class BuddyList(db.Model):
    __tablename__ = 'buddy_list'

    penguin_id = db.Column(db.ForeignKey('penguin.id',
                                         ondelete='CASCADE',
                                         onupdate='CASCADE'),
                           primary_key=True,
                           nullable=False)
    buddy_id = db.Column(db.ForeignKey('penguin.id',
                                       ondelete='CASCADE',
                                       onupdate='CASCADE'),
                         primary_key=True,
                         nullable=False,
                         index=True)
    best_buddy = db.Column(db.Boolean,
                           nullable=False,
                           server_default=db.text("false"))
Exemplo n.º 14
0
class Login(db.Model):
    __tablename__ = 'login'

    id = db.Column(db.Integer, primary_key=True, server_default=db.text("nextval('\"login_id_seq\"'::regclass)"))
    penguin_id = db.Column(db.ForeignKey('penguin.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    date = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
    ip_hash = db.Column(db.CHAR(255), nullable=False)
    minutes_played = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
Exemplo n.º 15
0
class PenguinMembership(db.Model):
    __tablename__ = 'penguin_membership'

    penguin_id = db.Column(db.ForeignKey('penguin.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True,
                           nullable=False)
    start = db.Column(db.DateTime, primary_key=True, nullable=False)
    expires = db.Column(db.DateTime)
    start_aware = db.Column(db.Boolean, server_default=db.text("false"))
    expires_aware = db.Column(db.Boolean, server_default=db.text("false"))
    expired_aware = db.Column(db.Boolean, server_default=db.text("false"))
Exemplo n.º 16
0
class Items(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    expiry_date = db.Column(db.DateTime)
    receive_date = db.Column(db.DateTime)

    # timestamps
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
    updated_at = db.Column(db.DateTime,
                           default=db.func.current_timestamp(),
                           onupdate=db.func.current_timestamp())

    # relationship
    status_id = db.Column(db.Integer,
                          db.ForeignKey('status.id'),
                          nullable=True)
    inventory_id = db.Column(db.Integer,
                             db.ForeignKey('inventory.id'),
                             nullable=True)

    @hybrid_property
    def current_status(self):
        if self.expiry_date <= datetime.now() and self.status_id == 5:
            return 7
        else:
            return self.status_id

    def serialize(self):
        return {
            'id':
            self.id,
            'is_expired':
            self.expiry_date >= datetime.now(),
            'expiry_date':
            self.expiry_date.strftime('%m/%d/%Y')
            if self.expiry_date is not None else None,
            'receive_date':
            self.receive_date.strftime('%m/%d/%Y')
            if self.receive_date is not None else None,
            'status_id':
            self.status.id
        }
Exemplo n.º 17
0
class Document(AuditMixin, BaseMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80), default="Untitled Document")
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    body = db.Column(db.String())

    def user_has_access(self, user, permission='read'):
        if self.user_is_owner(user):
            return True

        share = Share.get_share(user, self)
        if share:
            return getattr(share, permission)
        return False
Exemplo n.º 18
0
class Tag(AuditMixin, BaseMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), nullable=False, default="Untitled Tag")
    description = db.Column(db.String(140))
    user_id = db.Column(
        db.Integer,
        db.ForeignKey('user.id', ondelete='cascade')
    )

    documents = db.relationship(
        'Document',
        backref=db.backref('tags'),
        secondary=tags
    )
Exemplo n.º 19
0
class CheckIn(db.Model):
    __tablename__ = 'checkin'
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.String(100), nullable=False)
    time = db.Column(db.String(100), nullable=False)

    stuid = db.Column(db.Integer, db.ForeignKey("student.id"))
    student = db.relationship("Student", backref=db.backref("checkins"))

    def __init__(self, date, time, stu):
        self.date = date
        self.time = time
        self.student = stu

    def __str__(self):
        return 'id' % (self.id)
class Comments(db.Model):
    comment_id = db.Column(db.BigInteger, primary_key=True)
    username = db.Column(db.String(100), db.ForeignKey('user.username'))
    text = db.Column(db.String(3000))
    date = db.Column(db.BigInteger)

    def __repr__(self):
        return f"User {self.username} -- Comment: {self.text}"

    def salty_comments(self):
        """ returns comments in JSON format """
        return {
            "comment_id" : self.comment_id,
            "username" : self.username,
            "text" : self.text,
            "date" : self.date
            ""
        }
Exemplo n.º 21
0
class Token(db.Model):
    __tablename__ = 'tokens'
    token = db.Column(db.String(), primary_key=True, nullable=False)
    username = db.Column(db.String(32),
                         db.ForeignKey('users.username'),
                         nullable=False)
    activated = db.Column(db.DateTime(timezone=True),
                          server_default=func.now())

    def __init__(self, token, username):
        self.token = token
        self.username = username

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def __repr__(self):
        return '{}: {}'.format(self.token, self.username)
Exemplo n.º 22
0
class Absent(db.Model):
    __tablename__ = 'absent'
    id = db.Column(db.Integer, primary_key=True)
    period = db.Column(db.Integer, nullable=False)
    date = db.Column(db.String(100), nullable=False)
    isCompleted = db.Column(db.Boolean, nullable=False)
    className = db.Column(db.String(100), nullable=False)
    stuid = db.Column(db.Integer,db.ForeignKey("student.id"))
    Student = db.relationship("Student",backref=db.backref("absents"))


    def __init__(self, period, date, stu, clsname):
        self.period = period
        self.date = date
        self.Student = stu
        self.isCompleted = False
        self.className = clsname
    def __str__(self):
        return '名称:%s' % (self.d1)

    def getDic(self):
        absent = {"period": self.period,
                "date": self.date,
                }
Exemplo n.º 23
0
class Penguin(db.Model):
    __tablename__ = 'penguin'

    id = db.Column(db.Integer, primary_key=True, server_default=db.text("nextval('\"penguin_id_seq\"'::regclass)"))
    username = db.Column(db.String(12), nullable=False, unique=True)
    nickname = db.Column(db.String(30), nullable=False)
    password = db.Column(db.CHAR(60), nullable=False)
    email = db.Column(db.String(255), nullable=False, index=True)
    registration_date = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
    active = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    safe_chat = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    last_paycheck = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
    minutes_played = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    moderator = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    stealth_moderator = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    character = db.Column(db.ForeignKey('character.id', ondelete='CASCADE', onupdate='CASCADE'))
    igloo = db.Column(db.ForeignKey('penguin_igloo_room.id', ondelete='CASCADE', onupdate='CASCADE'))
    coins = db.Column(db.Integer, nullable=False, server_default=db.text("500"))
    color = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    head = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    face = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    neck = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    body = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    hand = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    feet = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    photo = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    flag = db.Column(db.ForeignKey('item.id', ondelete='CASCADE', onupdate='CASCADE'))
    permaban = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    book_modified = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    book_color = db.Column(db.SmallInteger, nullable=False, server_default=db.text("1"))
    book_highlight = db.Column(db.SmallInteger, nullable=False, server_default=db.text("1"))
    book_pattern = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    book_icon = db.Column(db.SmallInteger, nullable=False, server_default=db.text("1"))
    agent_status = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    field_op_status = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    career_medals = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    agent_medals = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    last_field_op = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
    com_message_read_date = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
    ninja_rank = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    fire_ninja_rank = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    fire_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    water_ninja_rank = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    water_ninja_progress = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    ninja_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    fire_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    water_matches_won = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    rainbow_adoptability = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    has_dug = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    puffle_handler = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    nuggets = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    walking = db.Column(db.ForeignKey('penguin_puffle.id', ondelete='CASCADE', onupdate='CASCADE'))
    opened_playercard = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    special_wave = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    special_dance = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    special_snowball = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    map_category = db.Column(db.SmallInteger, nullable=False, server_default=db.text("0"))
    status_field = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
    timer_active = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    timer_start = db.Column(db.Time, nullable=False, server_default=db.text("'00:00:00'::time without time zone"))
    timer_end = db.Column(db.Time, nullable=False, server_default=db.text("'23:59:59'::time without time zone"))
    timer_total = db.Column(db.Interval, nullable=False, server_default=db.text("'01:00:00'::interval"))
    grounded = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    approval_en = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    approval_pt = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    approval_fr = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    approval_es = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    approval_de = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    approval_ru = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    rejection_en = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    rejection_pt = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    rejection_fr = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    rejection_es = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    rejection_de = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    rejection_ru = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
    sid = db.Column(db.String(255), nullable=True)

    def __init__(self, *args, **kwargs):
        self.inventory = None
        self.permissions = None
        self.attributes = None
        self.igloos = None
        self.igloo_rooms = None
        self.furniture = None
        self.flooring = None
        self.locations = None
        self.stamps = None
        self.cards = None
        self.puffles = None
        self.puffle_items = None
        self.buddies = None
        self.buddy_requests = None
        self.character_buddies = None
        self.ignore = None

        super().__init__(*args, **kwargs)

    @lru_cache()
    def safe_nickname(self, language_bitmask):
        return self.nickname if self.approval & language_bitmask else "P" + str(self.id)

    async def status_field_set(self, field_bitmask):
        if (self.status_field & field_bitmask) == 0:
            await self.update(status_field=self.status_field ^ field_bitmask).apply()

    def status_field_get(self, field_bitmask):
        return (self.status_field & field_bitmask) != 0

    @property
    @lru_cache()
    def age(self):
        return (datetime.now() - self.registration_date).days

    @property
    @lru_cache()
    def approval(self):
        return int(f'{self.approval_ru * 1}{self.approval_de * 1}0{self.approval_es * 1}'
                   f'{self.approval_fr * 1}{self.approval_pt * 1}{self.approval_en * 1}', 2)

    @property
    @lru_cache()
    def rejection(self):
        return int(f'{self.rejection_ru * 1}{self.rejection_de * 1}0{self.rejection_es * 1}'
                   f'{self.rejection_fr * 1}{self.rejection_pt * 1}{self.rejection_en * 1}', 2)
Exemplo n.º 24
0
    def is_admin(self):
        return self._admin

    @property
    def is_active(self):
        return self._active

    def owns_document(self, document):
        return document in self.documents

    documents = db.relationship('Document', backref='user', lazy='dynamic')


tags = db.Table(
    'tags',
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
    db.Column('document_id', db.Integer, db.ForeignKey('document.id'))
)


class Tag(AuditMixin, BaseMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), nullable=False, default="Untitled Tag")
    description = db.Column(db.String(140))
    user_id = db.Column(
        db.Integer,
        db.ForeignKey('user.id', ondelete='cascade')
    )

    documents = db.relationship(
        'Document',
Exemplo n.º 25
0
class Share(BaseMixin, db.Model):
    uid = db.Column(GUID(), primary_key=True, default=uuid4)
    document_id = db.Column(
        db.Integer,
        db.ForeignKey('document.id', ondelete="cascade"),
        nullable=False
    )
    user_id = db.Column(
        db.Integer,
        db.ForeignKey('user.id', ondelete='cascade'),
        nullable=False
    )
    read = db.Column(db.Boolean, default=False, nullable=False)
    write = db.Column(db.Boolean, default=False, nullable=False)
    delete = db.Column(db.Boolean, default=False, nullable=False)
    unique = db.UniqueConstraint()

    @classmethod
    def create_or_update(
        cls,
        user,
        entity,
        read=True,
        write=False,
        commit=True,
    ):
        share = cls.get_share(user=user, entity=entity)

        if share:
            share.update_attributes({"read": read, "write": write})
        else:
            attrs = dict(
                document_id=entity.id,
                user_id=user.id,
                read=read,
                write=write,
            )
            share = Share(attrs)
        share.save(commit=commit)

        return share

    @classmethod
    def get_share(cls, user=None, entity=None):
        if not user or not entity:
            raise ValueError("User and entity required.")

        return cls.query.filter_by(user_id=user.id) \
            .filter_by(document_id=entity.id).first()

    @classmethod
    def shares_for_user_query(cls, user_id=None, user=None):
        if user is not None:
            user_id = user.id
        if user_id:
            return db.session.query(cls).filter_by(user_id=user_id)
        return None

    @classmethod
    def shares_for_user(cls, user_id=None, user=None, read=None, write=None):
        if not user_id:
            user_id = user.id
        query = cls.shares_for_user_query(user_id)

        if read is not None:
            query = query.filter_by(read=read)

        if write is not None:
            query = query.filter_by(write=write)

        if query:
            return query.all()
Exemplo n.º 26
0
class Student(db.Model):
    __tablename__ = 'student'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    stuNo = db.Column(db.String(100), nullable=False)
    gender = db.Column(db.Integer, nullable=False)
    daysLate = db.Column(db.Integer, nullable=False)
    daysAbsent = db.Column(db.Integer, nullable=False)
    memo = db.Column(db.String(100), nullable=True)
    avatar = db.Column(db.String(5000), nullable=True)
    engName = db.Column(db.String(100), nullable=False)
    year = db.Column(db.Integer, nullable=False)
    pinyin = db.Column(db.String(100), nullable=False)
    #外键
    classId = db.Column(db.Integer, db.ForeignKey("class.id"))
    classs = db.relationship("Classs", backref=db.backref("students"))

    scheduleId = db.Column(db.Integer, db.ForeignKey("schedule.id"))
    schedule = db.relationship("Schedule", backref=db.backref("students"))

    def __init__(self, name, stuNo, year, schedule, classs, gender, daysLate,
                 daysAbsent, memo, avatar, engName, pinyin):
        self.name = name
        self.classs = classs
        self.stuNo = stuNo
        self.gender = gender
        self.daysLate = daysLate
        self.daysAbsent = daysAbsent
        self.memo = memo
        self.schedule = schedule
        self.avatar = avatar
        self.engName = engName
        self.year = year
        self.pinyin = pinyin

    def __str__(self):
        return '姓名:%s' % (self.name)

    def getSchedule(self):
        type = self.scheduleId
        return type

    def getName(self):
        return self.name

    def getstuNo(self):
        return self.stuNo

    def getDic(self):
        stuinfos = {
            "name": self.name,
            "code": self.stuNo,
            "dayslate": self.daysLate,
            "daysabsent": self.daysAbsent,
            "avatar": self.avatar,
            "memo": self.memo,
            "class": self.classs.getDic(),
            "Schedule": self.schedule.getDic(),
            "engName": self.engName
        }
        return stuinfos
Exemplo n.º 27
0
class ScheduleTemplate(db.Model):
    __tablename__ = 'scheduletemplate'
    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String(100), nullable=False)
    mon1 = db.Column(db.String(100), nullable=False)
    mon2 = db.Column(db.String(100), nullable=False)
    mon3 = db.Column(db.String(100), nullable=False)
    mon4 = db.Column(db.String(100), nullable=False)
    mon5 = db.Column(db.String(100), nullable=False)
    mon6 = db.Column(db.String(100), nullable=False)
    mon7 = db.Column(db.String(100), nullable=False)
    mon8 = db.Column(db.String(100), nullable=False)
    mon9 = db.Column(db.String(100), nullable=False)
    tue1 = db.Column(db.String(100), nullable=False)
    tue2 = db.Column(db.String(100), nullable=False)
    tue3 = db.Column(db.String(100), nullable=False)
    tue4 = db.Column(db.String(100), nullable=False)
    tue5 = db.Column(db.String(100), nullable=False)
    tue6 = db.Column(db.String(100), nullable=False)
    tue7 = db.Column(db.String(100), nullable=False)
    tue8 = db.Column(db.String(100), nullable=False)
    tue9 = db.Column(db.String(100), nullable=False)
    wed1 = db.Column(db.String(100), nullable=False)
    wed2 = db.Column(db.String(100), nullable=False)
    wed3 = db.Column(db.String(100), nullable=False)
    wed4 = db.Column(db.String(100), nullable=False)
    wed5 = db.Column(db.String(100), nullable=False)
    wed6 = db.Column(db.String(100), nullable=False)
    wed7 = db.Column(db.String(100), nullable=False)
    wed8 = db.Column(db.String(100), nullable=False)
    wed9 = db.Column(db.String(100), nullable=False)
    thu1 = db.Column(db.String(100), nullable=False)
    thu2 = db.Column(db.String(100), nullable=False)
    thu3 = db.Column(db.String(100), nullable=False)
    thu4 = db.Column(db.String(100), nullable=False)
    thu5 = db.Column(db.String(100), nullable=False)
    thu6 = db.Column(db.String(100), nullable=False)
    thu7 = db.Column(db.String(100), nullable=False)
    thu8 = db.Column(db.String(100), nullable=False)
    thu9 = db.Column(db.String(100), nullable=False)
    fri1 = db.Column(db.String(100), nullable=False)
    fri2 = db.Column(db.String(100), nullable=False)
    fri3 = db.Column(db.String(100), nullable=False)
    fri4 = db.Column(db.String(100), nullable=False)
    fri5 = db.Column(db.String(100), nullable=False)
    fri6 = db.Column(db.String(100), nullable=False)
    fri7 = db.Column(db.String(100), nullable=False)
    fri8 = db.Column(db.String(100), nullable=False)
    fri9 = db.Column(db.String(100), nullable=False)

    classId = db.Column(db.Integer, db.ForeignKey("class.id"))
    classs = db.relationship("Classs", backref=db.backref("templates"))

    def construct(self):
        monday = [
            self.mon1, self.mon2, self.mon3, self.mon4, self.mon5, self.mon6,
            self.mon7, self.mon8, self.mon9
        ]
        tuesday = [
            self.tue1, self.tue2, self.tue3, self.tue4, self.tue5, self.tue6,
            self.tue7, self.tue8, self.tue9
        ]
        wednesday = [
            self.wed1, self.wed2, self.wed3, self.wed4, self.wed5, self.wed6,
            self.wed7, self.wed8, self.wed9
        ]
        thursday = [
            self.thu1, self.thu2, self.thu3, self.thu4, self.thu5, self.thu6,
            self.thu7, self.thu8, self.thu9
        ]
        friday = [
            self.fri1, self.fri2, self.fri3, self.fri4, self.fri5, self.fri6,
            self.fri7, self.fri8, self.fri9
        ]
        overall = [monday, tuesday, wednesday, thursday, friday]
        return overall

    def makeData(self, datas):
        if (len(datas) < 45):
            return False
        self.mon1 = datas[0]
        self.mon2 = datas[1]
        self.mon3 = datas[2]
        self.mon4 = datas[3]
        self.mon5 = datas[4]
        self.mon6 = datas[5]
        self.mon7 = datas[6]
        self.mon8 = datas[7]
        self.mon9 = datas[8]
        self.tue1 = datas[9]
        self.tue2 = datas[10]
        self.tue3 = datas[11]
        self.tue4 = datas[12]
        self.tue5 = datas[13]
        self.tue6 = datas[14]
        self.tue7 = datas[15]
        self.tue8 = datas[16]
        self.tue9 = datas[17]
        self.wed1 = datas[18]
        self.wed2 = datas[19]
        self.wed3 = datas[20]
        self.wed4 = datas[21]
        self.wed5 = datas[22]
        self.wed6 = datas[23]
        self.wed7 = datas[24]
        self.wed8 = datas[25]
        self.wed9 = datas[26]
        self.thu1 = datas[27]
        self.thu2 = datas[28]
        self.thu3 = datas[29]
        self.thu4 = datas[30]
        self.thu5 = datas[31]
        self.thu6 = datas[32]
        self.thu7 = datas[33]
        self.thu8 = datas[34]
        self.thu9 = datas[35]
        self.fri1 = datas[36]
        self.fri2 = datas[37]
        self.fri3 = datas[38]
        self.fri4 = datas[39]
        self.fri5 = datas[40]
        self.fri6 = datas[41]
        self.fri7 = datas[42]
        self.fri8 = datas[43]
        self.fri9 = datas[44]
        return True

    def __init__(self, name, cls, *overall):
        self.code = name
        self.classs = cls
        self.makeData(overall)

    def __str__(self):
        return ':%s' % (self.construct())
Exemplo n.º 28
0
class Accounts(UserMixin, db.Model):

    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(100))
    middle_name = db.Column(db.String(100))
    last_name = db.Column(db.String(100))
    gender = db.Column(db.String(10))
    civil = db.Column(db.String(10))
    phone = db.Column(db.String(15))
    birth_date = db.Column(db.DateTime)
    address = db.Column(db.String(100))
    occupation = db.Column(db.String(100))

    # login
    email = db.Column(db.String(100))
    password_hash = db.Column(db.String(128))

    # timestamps
    login_date = db.Column(db.DateTime, default=db.func.current_timestamp())
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
    updated_at = db.Column(db.DateTime,
                           default=db.func.current_timestamp(),
                           onupdate=db.func.current_timestamp())

    # relationship
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'), nullable=True)
    account_notifications = db.relationship('Notifications',
                                            backref='account',
                                            lazy=True)
    account_appointments = db.relationship('Appointments',
                                           backref='account',
                                           lazy=True)

    @property
    def password(self):
        """
        Prevent pasword from being accessed
        """
        raise AttributeError('password is not a readable attribute.')

    @password.setter
    def password(self, password):
        """
        Set password to a hashed password
        """
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        """
        Check if hashed password matches actual password
        """
        return check_password_hash(self.password_hash, password)

    def serialize(self):
        return {
            'id':
            self.id,
            'first_name':
            self.first_name,
            'middle_name':
            self.middle_name,
            'last_name':
            self.last_name,
            'gender':
            self.gender,
            'civil':
            self.civil,
            'phone':
            self.phone,
            'birth_date':
            self.birth_date.strftime('%m/%d/%Y')
            if self.birth_date is not None else None,
            'email':
            self.email,
            'created_at':
            self.created_at,
            'updated_at':
            self.updated_at,
            'address':
            self.address,
            'occupation':
            self.occupation,
            'role_id':
            self.role_id
        }
Exemplo n.º 29
0
class Video(db.Model):
    __tablename__ = 'videos'
    id = db.Column(db.Integer(), primary_key=True, nullable=False)
    author_id = db.Column(db.String(),
                          db.ForeignKey('users.username'),
                          nullable=False)
    root = db.Column(db.String(), default='', nullable=False)
    filename = db.Column(db.String(), default='', nullable=False)
    duration = db.Column(db.String(), nullable=True)
    public = db.Column(db.Boolean(), nullable=True, default=False)
    title = db.Column(db.String(128), nullable=False)
    text = db.Column(db.Text(), nullable=True)
    views = db.Column(db.Integer(), nullable=False, default=0)
    thumbnail = db.Column(db.String(), nullable=True)
    hashtags = db.Column(db.String(), nullable=True)
    original_author = db.Column(db.String(), nullable=True)
    original_views = db.Column(db.Integer(), nullable=True)
    timestamp = db.Column(db.DateTime(timezone=True),
                          server_default=func.now(),
                          nullable=False)
    comments = db.relationship('Comment',
                               backref='user',
                               cascade='all,delete',
                               lazy=True)
    voting = db.relationship('Like',
                             backref='votes',
                             cascade='all,delete',
                             lazy=True)

    def __init__(self,
                 author_id,
                 title,
                 text,
                 duration=None,
                 root=None,
                 filename=None):
        self.author_id = author_id
        self.root = root
        self.title = title
        self.text = text
        self.duration = duration
        self.filename = filename

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def update(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)
        db.session.commit()

    @staticmethod
    def get_all():
        return Video.query.all()

    @staticmethod
    def get_all_public():
        return Video.query.filter_by(public=True).all()

    @staticmethod
    def get_all_private():
        return Video.query.filter_by(public=False).all()

    def __repr__(self):
        return 'Video: {}'.format(self.title)
Exemplo n.º 30
0
class Appointments(db.Model):

    # appointment info
    id = db.Column(db.Integer, primary_key=True)
    details = db.Column(db.Text)
    appointment_date = db.Column(db.DateTime)
    assigned = db.Column(db.JSON)
    meds = db.Column(db.JSON)

    # medical record
    record_number = db.Column(db.String(100))
    record_details = db.Column(db.Text)
    record_date = db.Column(db.DateTime)
    record_form = db.Column(db.JSON)
    next_appointments = db.Column(db.JSON)

    # timestamps
    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
    updated_at = db.Column(db.DateTime,
                           default=db.func.current_timestamp(),
                           onupdate=db.func.current_timestamp())

    # relationship
    status_id = db.Column(db.Integer,
                          db.ForeignKey('status.id'),
                          nullable=True)
    service_id = db.Column(db.Integer,
                           db.ForeignKey('services.id'),
                           nullable=True)
    account_id = db.Column(db.Integer,
                           db.ForeignKey('accounts.id'),
                           nullable=True)

    @hybrid_property
    def schedule(self):
        return {
            'date':
            self.appointment_date.strftime('%m/%d/%Y'),
            'time':
            self.appointment_date.strftime('%I:%M%p') + '-' +
            (self.appointment_date + timedelta(hours=1)).strftime('%I:%M%p'),
        }

    @hybrid_property
    def prescriptions(self):
        return json.loads(self.meds) if self.meds is None else json.loads(
            self.meds)

    @hybrid_property
    def form_data(self):
        return json.loads(
            self.service.form) if self.record_form is None else json.loads(
                self.record_form)

    def serialize(self):
        return {
            'id':
            self.id,
            'details':
            self.details,
            'appointment_date':
            self.appointment_date.strftime('%Y-%m-%dT%H:%M')
            if self.appointment_date is not None else None,
            'assigned':
            self.assigned,
            'account':
            self.account.first_name + ' ' + self.account.last_name,
            'record_number':
            self.record_number,
            'record_details':
            self.record_details,
            'record_form':
            self.record_form,
            'record_date':
            self.record_date.strftime('%Y-%m-%dT%H:%M')
            if self.record_date is not None else None,
            'next_appointments':
            self.next_appointments,
            'created_at':
            self.created_at,
            'updated_at':
            self.updated_at,
            'status':
            self.status.status,
            'service':
            self.service.service,
            'status_id':
            self.status_id,
            'account_id':
            self.account_id,
            'service_id':
            self.service_id,
            'meds':
            self.meds,
            'service_form':
            self.service.form
        }