class Posts(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Text, nullable=False)
    date_posted = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    start_date = db.Column(db.Date, nullable=False)
    end_date = db.Column(db.Date, nullable=False)
    country = db.Column(db.Text, nullable=False)
    city = db.Column(db.Text, nullable=False)
    latitude = db.Column(db.Float, nullable=False)
    longitude = db.Column(db.Float, nullable=False)
    content = db.Column(db.Text, nullable=False)
    subscribers = db.relationship('Subscribed',
                                  foreign_keys=[Subscribed.post_id],
                                  backref=db.backref('post', lazy='joined'),
                                  lazy='dynamic',
                                  cascade='all, delete-orphan')
    notifiers = db.relationship('Notification',
                                foreign_keys=[Notification.post_id],
                                backref=db.backref('post', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan')

    def __repr__(self):
        return f"Posts('{self.date_posted}')"
示例#2
0
class ProjectTeams(db.Model):
    __tablename__ = "project_teams"
    team_id = db.Column(db.Integer,
                        db.ForeignKey("teams.id"),
                        primary_key=True)
    project_id = db.Column(db.Integer,
                           db.ForeignKey("projects.id"),
                           primary_key=True)
    role = db.Column(db.Integer, nullable=False)

    project = db.relationship("Project",
                              backref=db.backref("teams",
                                                 cascade="all, delete-orphan"))
    team = db.relationship(Team,
                           backref=db.backref("projects",
                                              cascade="all, delete-orphan"))

    def create(self):
        """ Creates and saves the current model to the DB """
        db.session.add(self)
        db.session.commit()

    def save(self):
        """ Save changes to db"""
        db.session.commit()

    def delete(self):
        """ Deletes the current model from the DB """
        db.session.delete(self)
        db.session.commit()
示例#3
0
class Service(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    description = db.Column(db.String(256))
    price = db.Column(db.Float, nullable=True)
    duration = db.Column(db.Interval, nullable=True)
    performers = db.relationship('Performer', secondary=performer_service,
                                 back_populates='services', lazy='dynamic')
    business_id = db.Column(db.Integer, db.ForeignKey(
        'business.id',
        onupdate="CASCADE",
        ondelete="CASCADE"
    ), nullable=False)
    business = db.relationship("Business", back_populates='services')
    appointments = db.relationship('Appointment', back_populates='service')

    def to_obj(self):
        return {
            'id': self.id,
            'name': self.name,
            'description': self.description,
            'price': self.price,
            'duration': str(self.duration),
            'performers': list(map(lambda x: x.id, self.performers))
        }

    @staticmethod
    def get(service_id):
        return db.session.query(Service).get(service_id)
示例#4
0
class BlogComment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    created = db.Column(db.DateTime,
                        server_default=db.func.now(),
                        onupdate=db.func.now())
    modified = db.Column(db.DateTime, server_default=db.func.now())

    # title = db.Column(db.String(128))
    author = db.Column(db.String(128))
    author_email = db.Column(db.String(128))
    author_website = db.Column(db.String(128), nullable=True)

    content = db.Column(db.Text)

    by_author = db.Column(db.Boolean, default=False)

    replied_to_id = db.Column(db.Integer,
                              db.ForeignKey('blog_comment.id'),
                              index=True)
    replied_to = db.relationship(lambda: BlogComment,
                                 remote_side=id,
                                 backref=db.backref('sub_comments',
                                                    lazy='dynamic'))

    post_id = db.Column(db.Integer, db.ForeignKey(BlogPost.id), index=True)
    post = db.relationship(BlogPost,
                           backref=db.backref('comments', lazy='dynamic'))
示例#5
0
class Member(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(30), nullable=False)
    last_name = db.Column(db.String(30), nullable=False)
    institution = db.Column(db.String(120), nullable=False)
    is_executive_assistant = db.Column(db.Boolean)
    is_archived = db.Column(db.Boolean)
    executive_assistant_id = db.Column(db.Integer, db.ForeignKey('member.id'))
    executive_assistant = db.relationship('Member',
                                          backref='member_executive_assistant',
                                          uselist=False,
                                          remote_side=[id],
                                          lazy=True)
    emails = db.relationship('Email', backref='member', lazy=True)
    phone_numbers = db.relationship('PhoneNumber', backref='member', lazy=True)
    lists = db.relationship('List',
                            secondary=list_memberships,
                            backref=db.backref('members', lazy=True),
                            lazy=True)
    cure_center_profile = db.relationship('CureCenterProfile',
                                          backref='member',
                                          uselist=False)

    def __repr__(self):
        return f"<Member(first='{self.first_name}', last='{self.last_name}')>"
示例#6
0
class TeamMembers(db.Model):
    __tablename__ = "team_members"
    team_id = db.Column(db.Integer,
                        db.ForeignKey("teams.id", name="fk_teams"),
                        primary_key=True)
    user_id = db.Column(db.BigInteger,
                        db.ForeignKey("users.id", name="fk_users"),
                        primary_key=True)
    function = db.Column(db.Integer,
                         nullable=False)  # either 'editor' or 'manager'
    active = db.Column(db.Boolean, default=False)

    member = db.relationship(User,
                             backref=db.backref("teams",
                                                cascade="all, delete-orphan"))
    team = db.relationship("Team",
                           backref=db.backref("members",
                                              cascade="all, delete-orphan"))

    def create(self):
        """ Creates and saves the current model to the DB """
        db.session.add(self)
        db.session.commit()

    def delete(self):
        """ Deletes the current model from the DB """
        db.session.delete(self)
        db.session.commit()
示例#7
0
class ClientSession(db.Model):
    __tablename__ = "Client_sessions"

    id = db.Column(db.Integer, primary_key=True)
    client_weight = db.Column(db.Integer, nullable=True)
    comment = db.Column(db.String, nullable=True)
    name = db.Column(db.String, nullable=False)
    slug = db.Column(db.String, nullable=False)
    order = db.Column(db.Integer, nullable=False)
    completed = db.Column(db.Boolean, nullable=False)
    # many to one relationship with CLient_templates table
    client_template_id = db.Column(db.Integer,
                                   db.ForeignKey('Client_templates.id'),
                                   nullable=False)
    # one to many relationship with Client_exercises table
    exercises = db.relationship('ClientExercise',
                                cascade="all, delete-orphan",
                                lazy=True,
                                order_by="ClientExercise.order")
    # one to many relationship with Training_entries table
    training_entries = db.relationship('TrainingEntry',
                                       cascade="all, delete-orphan",
                                       lazy=True,
                                       order_by="TrainingEntry.order")
    completed_date = db.Column(db.String, nullable=True)
示例#8
0
class LabelValue(db.Model):
    __tablename__ = "label_value"

    id = db.Column("id", db.Integer(), primary_key=True)

    label_id = db.Column(
        "label_id", db.Integer(), db.ForeignKey("label.id"), nullable=False
    )

    value = db.Column("value", db.String(200), nullable=False)

    created_at = db.Column(
        "created_at", db.DateTime(), nullable=False, default=db.func.now()
    )

    last_modified = db.Column(
        "last_modified",
        db.DateTime(),
        nullable=False,
        default=db.func.now(),
        onupdate=db.func.utc_timestamp(),
    )

    __table_args__ = (
        db.UniqueConstraint("label_id", "value", name="_label_id_value_uc"),
    )

    label = db.relationship("Label", backref="LabelValue")
    segmentations = db.relationship(
        "Segmentation", secondary=annotation_table, back_populates="values"
    )

    def set_label_value(self, value):
        self.value = value
示例#9
0
class Project(db.Model):
    __tablename__ = "project"

    id = db.Column("id", db.Integer(), primary_key=True)

    name = db.Column("name", db.String(32), nullable=False, unique=True)

    creator_user_id = db.Column(
        "creator_user_id", db.Integer(), db.ForeignKey("user.id"), nullable=False
    )

    api_key = db.Column("api_key", db.String(32), nullable=False, unique=True)

    created_at = db.Column(
        "created_at", db.DateTime(), nullable=False, default=db.func.now()
    )

    last_modified = db.Column(
        "last_modified",
        db.DateTime(),
        nullable=False,
        default=db.func.now(),
        onupdate=db.func.utc_timestamp(),
    )

    users = db.relationship(
        "User", secondary=user_project_table, back_populates="projects"
    )
    data = db.relationship("Data", backref="Project")
    labels = db.relationship("Label", backref="Project")
    creator_user = db.relationship("User")
示例#10
0
class UserSong(db.Model):
    __tablename__ = 'user_song'
    user_id = db.Column('user_id',
                        db.Integer(),
                        db.ForeignKey('user.id', ondelete='CASCADE'),
                        primary_key=True)
    song_id = db.Column('song_id',
                        db.Integer(),
                        db.ForeignKey('song.id', ondelete='RESTRICT'),
                        primary_key=True)

    time_played = db.Column('time_played', db.DateTime(), primary_key=True)

    user = db.relationship("User",
                           backref=db.backref('user_song', lazy='dynamic'))

    song = db.relationship("Song")

    def __init__(self, user, song, time_played):
        self.user = user
        self.song = song
        self.time_played = time_played

    def __repr__(self):
        return '<User %s Song %s>' % (self.user.username, self.song.spot_id)
示例#11
0
class Business(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=True, unique=True)
    phone = db.Column(db.String(80), nullable=True)
    address = db.Column(db.String(256), nullable=True)
    user_id = db.Column(db.Integer, db.ForeignKey(
        'user.id',
        onupdate="CASCADE",
        ondelete="CASCADE"
    ), nullable=False)
    services = db.relationship("Service", back_populates='business')
    performers = db.relationship("Performer", back_populates='business')

    def to_obj(self):
        return {
            'id': self.id,
            'name': self.name,
            'address': self.address,
            'phone': self.phone,
            'performers': list(map(lambda x: x.to_obj(), self.performers)),
            'services': list(map(lambda x: x.to_obj(), self.services))
        }

    @staticmethod
    def get(user_id):
        return db.session.query(Business).filter(Business.user_id == user_id).first()
示例#12
0
class ClientTemplate(db.Model):
    __tablename__ = "Client_templates"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    slug = db.Column(db.String, nullable=False)
    start_date = db.Column(db.String, nullable=False)
    end_date = db.Column(db.String, nullable=True)
    # many to one relationship with Users table
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    user = db.relationship('User',
                           lazy=True,
                           uselist=False,
                           single_parent=True,
                           primaryjoin="User.id==ClientTemplate.user_id")
    completed = db.Column(db.Boolean, nullable=False)
    active = db.Column(db.Boolean, nullable=False)
    # one to many relationship with Client_sessions
    sessions = db.relationship('ClientSession',
                               cascade="all, delete-orphan",
                               lazy=True,
                               order_by="ClientSession.order")
    # one to many relationship with Check_ins table
    check_in = db.relationship(
        'CheckIn',
        lazy=True,
        uselist=False,
        single_parent=True,
        primaryjoin="CheckIn.client_template_id==ClientTemplate.id")
示例#13
0
class CoachExercise(db.Model):
    __tablename__ = "Coach_exercises"

    id = db.Column(db.Integer, primary_key=True)
    # 1 to 1 relationship with Exercises
    exercise_id = db.Column(db.Integer, db.ForeignKey('Exercises.id'), nullable=False)
    category = db.relationship(Exercise, lazy=True, uselist=False, single_parent=True, primaryjoin="Exercise.id==CoachExercise.exercise_id")
    name = db.relationship(Exercise, lazy=True, uselist=False, single_parent=True, primaryjoin="Exercise.id==CoachExercise.exercise_id")
    # many to 1 relationship with Coach_sessions table
    coach_session_id = db.Column(db.Integer, db.ForeignKey('Coach_sessions.id'), nullable=False)
    order = db.Column(db.Integer, nullable=False)  
示例#14
0
class Album(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    name_id = db.Column(db.String(255), nullable=False)
    total_tracks = db.Column(db.Integer)
    year = db.Column(db.Integer)
    disc_number = db.Column(db.Integer, server_default=u'1')
    total_discs = db.Column(db.Integer, server_default=u'1')

    songs = db.relationship('Song', lazy="joined")
    artist_id = db.Column(db.Integer, db.ForeignKey('artist.id'))
    artist = db.relationship('Artist',
                             lazy='joined',
                             cascade='all, delete-orphan',
                             single_parent=True)

    count_songs = db.Column(db.Integer)
    count_played = db.Column(db.Integer)
    played_at = db.Column(db.DateTime, server_default=db.func.now())
    count_rated = db.Column(db.Integer)
    rated_at = db.Column(db.DateTime, server_default=db.func.now())
    rating = db.Column(db.Float)

    created_at = db.Column(db.DateTime, server_default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           server_default=db.func.now(),
                           onupdate=db.func.now())

    def __init__(self, name, artist):
        self.name = name
        self.name_id = name.lower().strip()
        self.artist = artist

    def __json__(self):
        return [
            'id',
            'name',
            'total_tracks',
            'disc_number',
            'year',
            'artist',
            'count_songs',
            'count_played',
            'played_at',
            'count_rated',
            'rated_at',
            'rating',
        ]

    def __repr__(self):
        return '<{} {}>'.format(self.__class__.__name__, self.id)
示例#15
0
class User(db.Model, UserMixin):
    id = db.Column(db.String(200), primary_key=True)
    player_name = db.Column(db.String(20), unique=True, nullable=False)
    accounts = db.relationship('Accounts', backref='user', lazy=True)
    settings = db.relationship('Settings', backref='user', lazy=True)
    clan_recruitment_posts = db.relationship('Clan_recruitment_post',
                                             backref='user',
                                             lazy=True)
    player_recruitment_posts = db.relationship('Player_recruitment_post',
                                               backref='user',
                                               lazy=True)

    def __repr__(self):
        return f"User('{self.player_name}'"
示例#16
0
class Group(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    contact_id = db.Column(db.Integer,
                           db.ForeignKey('member.id'),
                           nullable=False)
    contact = db.relationship('Member',
                              backref='group_contact',
                              uselist=False,
                              lazy=True)
    name = db.Column(db.String(30), nullable=False)
    members = db.relationship('Member', backref='group', lazy=True)

    def __repr__(self):
        return f"<Group(name='{self.name}')>"
示例#17
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    img = db.Column(db.String, nullable=False)
    body = db.Column(db.String, nullable=False)
    date_posted = db.Column(db.DateTime, default=datetime.utcnow)
    likes = db.relationship('Like', backref='post', lazy=True)
    comments = db.relationship('Comment', backref='post', lazy=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def get_users(self):
        return [like.user_id for like in self.likes]

    def __repr__(self):
        return self.body[:10]
示例#18
0
class Location(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), nullable=False)
    patterns = db.relationship('Pattern', backref='location', lazy=True)
    period = db.relationship('Period',
                             secondary=location_period,
                             lazy='subquery',
                             backref=db.backref('locations', lazy=True))

    def toDict(self):
        return {
            c.key: getattr(self, c.key)
            for c in inspect(self).mapper.column_attrs
        }
示例#19
0
class Performer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    services = db.relationship('Service', secondary=performer_service,
                               back_populates='performers', lazy='dynamic')
    phone = db.Column(db.String(80), nullable=True)
    photo_id = db.Column(UUIDType(binary=False), db.ForeignKey(
        'image.id',
        onupdate="CASCADE",
        ondelete="SET NULL"
    ), nullable=True)
    description = db.Column(db.String(256))
    business_id = db.Column(db.Integer, db.ForeignKey(
        'business.id',
        onupdate="CASCADE",
        ondelete="CASCADE"
    ), nullable=False)
    work_beg = db.Column(db.Interval, nullable=False, default=timedelta(hours=9))
    work_end = db.Column(db.Interval, nullable=False, default=timedelta(hours=18))
    lunch_beg = db.Column(db.Interval, nullable=False, default=timedelta(hours=12))
    lunch_end = db.Column(db.Interval, nullable=False, default=timedelta(hours=13))
    non_working_days = db.Column(
        db.ARRAY(db.Integer), nullable=False, default=[])
    business = db.relationship("Business", back_populates='performers')
    appointments = db.relationship('Appointment', back_populates='performer')

    def to_obj(self):
        return {
            'id': self.id,
            'name': self.name,
            'phone': self.phone,
            'photo': self.photo_id,
            'description': self.description,
            'services': list(map(lambda x: x.id, self.services))
        }

    def get_working_hours(self):
        if not self.work_beg:
            return timedelta(hours=9), timedelta(hours=18)
        return self.work_beg, self.work_end

    def get_lunch_hours(self):
        if not self.lunch_beg:
            return timedelta(hours=12), timedelta(hours=13)
        return self.lunch_beg, self.lunch_end

    @staticmethod
    def get(performer_id):
        return db.session.query(Performer).get(performer_id)
示例#20
0
class User(db.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)
    cart_items = db.relationship('Product',
                                 secondary=cart,
                                 lazy='subquery',
                                 backref=db.backref('in_cart_of', lazy=True))
    uploaded_products = db.relationship('Product',
                                        backref='uploaded_by',
                                        lazy=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}')"
示例#21
0
class CollectionMembership(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    book_id = db.Column(db.Integer, db.ForeignKey("book.id"))
    collection_id = db.Column(
        db.Integer, db.ForeignKey("collection.id", ondelete="CASCADE"))
    date_added = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.utcnow())

    collection = db.relationship("Collection",
                                 back_populates="book_memberships")
    book = db.relationship("Book", back_populates="collection_memberships")

    def __repr__(self):
        return f"<Membership(id='{self.id}', book_title='{self.book.title}', collection_name='{self.collection.name}', date_added='{self.date_added}')>"
示例#22
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    gender = db.Column(db.String(20), nullable=False)
    birth_date = db.Column(db.Date())
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    posts = db.relationship('Posts', backref='traveler', lazy='dynamic')
    followed = db.relationship('Follow', foreign_keys=[Follow.follower_id], backref=db.backref('follower', lazy='joined'),
                               lazy='dynamic', cascade='all, delete-orphan')
    followers = db.relationship('Follow',
                                foreign_keys=[Follow.followed_id],
                                backref=db.backref('followed', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan')
    subscribes = db.relationship('Subscribe', foreign_keys=[Subscribe.user_id], backref=db.backref('subscriber', lazy='joined'),
                               lazy='dynamic', cascade='all, delete-orphan')
    notifications = db.relationship('Notification', foreign_keys=[Notification.user_id], backref=db.backref('user', lazy='joined'),
                               lazy='dynamic', cascade='all, delete-orphan')
    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"

    def follow(self, user):
        if not self.is_following(user):
            f = Follow(follower=self, followed=user)
            db.session.add(f)

    def unfollow(self, user):
        f = self.followed.filter_by(followed_id=user.id).first()
        if f:
            db.session.delete(f)

    def is_following(self, user):
        if user.id is None:
            return False

        return self.followed.filter_by(
            followed_id=user.id).first() is not None

    def is_followed_by(self, user):
        if user.id is None:
            return False

        return self.followers.filter_by(
            follower_id=user.id).first() is not None
示例#23
0
class Subscribe(db.Model):
    id = db.Column(db.Integer, unique=True, primary_key=True)
    post_id = db.Column(db.Integer,
                        db.ForeignKey('travel.id', ondelete='CASCADE'))
    subscriber_id = db.Column(db.Integer,
                              db.ForeignKey('user.id', ondelete='CASCADE'))
    notifications = db.relationship('Notification',
                                    backref='subscribe',
                                    cascade='all, delete-orphan',
                                    passive_deletes=True)
    follow_id = db.Column(db.Integer,
                          db.ForeignKey('follow.id', ondelete='CASCADE'),
                          nullable=False)

    def to_json(self):
        json_sub = {
            'post_id':
            self.post_id,
            'subscriber_id':
            self.subscriber_id,
            'notifications': [{
                'date': i.date_posted,
                'id': i.id
            } for i in self.notifications]
        }
        return json_sub
示例#24
0
class Follow(db.Model):
    id = db.Column(db.Integer, primary_key=True, unique=True)
    follower_id = db.Column(db.Integer,
                            db.ForeignKey('user.id', ondelete='CASCADE'),
                            nullable=False)
    followed_id = db.Column(db.Integer,
                            db.ForeignKey('user.id', ondelete='CASCADE'),
                            nullable=False)
    subscribes = db.relationship('Subscribe',
                                 backref='follow',
                                 lazy='dynamic',
                                 cascade='all, delete-orphan',
                                 passive_deletes=True)

    def to_json(self):
        json_user = {
            'follower_id': self.follower_id,
            'followed_id': self.followed_id,
            'follower_username': self.follower.username,
            'followed_username': self.followed.username,
            'follower_image': self.follower.image_file,
            'followed_image': self.followed.image_file,
            'subscribed_travels': len(self.subscribes.all())
        }
        return json_user
示例#25
0
class State(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(25), nullable=False, unique=True)
    counties = db.relationship('County', backref='county_state', lazy=True)

    def __repr__(self):
        return f"<State {self.id}: {self.name}>"
示例#26
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(12), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20),
                           nullable=False,
                           default="default.jpg")
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship("Post", backref="author", lazy=True)

    # Generate a token
    def get_reset_token(self, expires_sec=1800):
        s = Serializer(app.config["SECRET_KEY"], expires_sec)
        return s.dumps({"user_id": self.id}).decode("utf-8")

    # Verify the token and accept only a token (static decorator)
    @staticmethod
    def verify_reset_token(token):
        s = Serializer(app.config["SECRET_KEY"])
        try:
            user_id = s.loads(token)["user_id"]
        except:
            return None
        return User.query.get(user_id)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"
示例#27
0
class User(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String, nullable=False)
    last_name = db.Column(db.String, nullable=False)
    email = db.Column(db.String, nullable=False, unique=True)
    password = db.Column(db.String, nullable=False)
    approved = db.Column(db.Boolean, nullable=True)
    check_in = db.Column(db.Boolean, nullable=True)
    coach_id = db.Column(db.Integer, nullable=True)
    access_token = db.Column(db.String, nullable=True)
    role = db.Column(db.String, nullable=False)
    verification_token = db.Column(db.String, nullable=True)
    verified = db.Column(db.Boolean, nullable=False)
    reset_token = db.Column(db.String, nullable=True)
    album_id = db.Column(db.String, nullable=True)
    album_deletehash = db.Column(db.String, nullable=True)

    # 1 to many relationship with Client_templates
    client_templates = db.relationship('ClientTemplate',
                                       cascade="all, delete-orphan",
                                       lazy='dynamic')

    def encode_auth_token(self, sub):
        """
        Generates the Auth Token
        :sub: a dictionary containing any valid values
        :return: string
        """
        try:
            payload = {
                'exp':
                datetime.datetime.utcnow() +
                datetime.timedelta(days=0, hours=2),
                'iat':
                datetime.datetime.utcnow(),
                'sub':
                sub
            }
            return jwt.encode(payload,
                              app.config.get('SECRET_KEY'),
                              algorithm='HS256').decode(encoding="utf-8")
        except Exception as e:
            return e

    @staticmethod
    def decode_auth_token(auth_token):
        """
        Decodes the auth token
        :param auth_token:
        :return: integer|string
        """
        try:
            payload = jwt.decode(auth_token, app.config.get('SECRET_KEY'))
            return payload['sub']
        except jwt.ExpiredSignatureError:
            return 'Expired'
        except jwt.InvalidTokenError:
            return 'Invalid'
示例#28
0
class Clan(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date_updated = db.Column(db.DateTime,
                             nullable=False,
                             default=datetime.utcnow)
    tag = db.Column(db.String(20), nullable=False)
    name = db.Column(db.String(50), nullable=False)
    invite_type = db.Column(db.String(50), nullable=False)
    description = db.Column(db.String(200), nullable=False)
    location = db.Column(db.JSON, nullable=False)
    badge_url = db.Column(db.JSON, nullable=False)
    clan_level = db.Column(db.Integer, nullable=False)
    clan_points = db.Column(db.Integer, nullable=False)
    clan_versus_points = db.Column(db.Integer, nullable=False)
    required_trophies = db.Column(db.Integer, nullable=True)
    war_frequency = db.Column(db.Integer, nullable=False)
    war_win_streak = db.Column(db.Integer, nullable=False)
    war_wins = db.Column(db.Integer, nullable=False)
    war_ties = db.Column(db.Integer, nullable=False)
    war_losses = db.Column(db.Integer, nullable=False)
    is_warlog_public = db.Column(db.Boolean, nullable=False)
    war_league = db.Column(db.JSON, nullable=True)
    member_count = db.Column(db.Integer, nullable=False)
    labels = db.Column(db.JSON, nullable=True)
    member_list = db.relationship('Clan_members_list',
                                  backref="clan",
                                  lazy=True)
示例#29
0
class Conversation(db.Model):
    conversation_id = db.Column(db.Integer, primary_key=True)
    trainer_uuid = db.Column(db.String, unique=True, nullable=False)
    user_uuid = db.Column(db.String, unique=True, nullable=False)
    timestamp = db.Column(db.DateTime, default=datetime.datetime.now())
    messages = db.relationship("Message")

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

    @classmethod
    def get_by_trainer_uuid(cls, trainer_uuid):
        return cls.query.filter_by(trainer_uuid=trainer_uuid).first()

    @classmethod
    def get_user_by_user_uuid(cls, user_uuid):
        return cls.query.filter_by(user_uuid=user_uuid).first()

    @classmethod
    def get_all_messages(cls):
        return Message.query.join(Conversation).all()

    @classmethod
    def does_exist(cls, trainer_uuid, user_uuid):
        from backend.models.trainer import Trainer
        trainer_conversation = Conversation.get_by_trainer_uuid(trainer_uuid)
        user_conversation = Conversation.get_user_by_user_uuid(user_uuid)
        if trainer_conversation.id is user_conversation.id:
            return trainer_conversation
        else:
            return False
示例#30
0
class Travel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Text, nullable=False)
    date_posted = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    start_date = db.Column(db.Date, nullable=False)
    end_date = db.Column(db.Date, nullable=False)
    country = db.Column(db.Text, nullable=False)
    city = db.Column(db.Text, nullable=False)
    latitude = db.Column(db.Float, nullable=False)
    longitude = db.Column(db.Float, nullable=False)
    content = db.Column(db.Text, nullable=False)
    comment = db.Column(db.Text, nullable=False)
    image_file = db.Column(db.Text,
                           nullable=False,
                           default="default_post.jpeg")
    subscribers = db.relationship('Subscriptions',
                                  backref='subscribers',
                                  lazy='dynamic',
                                  cascade='all, delete-orphan')

    def update(self, data):
        for attr in data:
            setattr(self, attr, data[attr])
        db.session.commit()
        for sub in self.subscribers.all():
            sub.send_notification()

    def _repr_(self):
        return f"Travel('{self.start_date}', '{self.end_date}', '{self.content}')"