Exemplo n.º 1
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.Text, unique=True)
    email = db.Column(db.Text, unique=True)
    password = db.Column(db.Text)
    preferences = db.relationship("Preference",
                                  secondary=UserPreference,
                                  backref=db.backref('user'))
    podcasts = db.relationship("Podcast",
                               secondary=UserPodcast,
                               backref='user',
                               lazy='dynamic')
    playlist = db.Column(db.Text)
    liked_podcasts = db.relationship('Podcast',
                                     secondary=LikedPodcasts,
                                     backref=db.backref('users',
                                                        lazy='dynamic'),
                                     lazy='dynamic')

    ## Add a column to hold all podcasts for a user? And/or all liked podcasts? Need a through table and form/button for liking pods

    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = bcrypt.generate_password_hash(password).decode('UTF-8')

    def setpassword(self):
        self.password = bcrypt.generate_password_hash(password).decode('UTF-8')

    def __repr__(self):
        return "#{}- Username: {}".format(self.id, self.username)
Exemplo n.º 2
0
class Edge(db.Model):
    __tablename__ = "edge"
    __table_args__ = {'extend_existing': True}

    lower_id = db.Column(db.Integer,
                         db.ForeignKey("node.node_id", ondelete="CASCADE"),
                         primary_key=True)

    higher_id = db.Column(db.Integer,
                          db.ForeignKey("node.node_id", ondelete="CASCADE"),
                          primary_key=True)

    lower_node = db.relationship(
        Node,
        primaryjoin=lower_id == Node.node_id,
        backref=db.backref(
            "lower_edges",
            cascade="save-update, merge, delete, delete-orphan"))

    higher_node = db.relationship(
        Node,
        primaryjoin=higher_id == Node.node_id,
        backref=db.backref(
            "higher_edges",
            cascade="save-update, merge, delete, delete-orphan"))

    def __init__(self, n1, n2):
        self.lower_node = n1
        self.higher_node = n2
Exemplo n.º 3
0
class User(db.Model, UserMixin):

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.Text, unique=True)
    username = db.Column(db.Text, unique=True)
    first_name = db.Column(db.Text)
    last_name = db.Column(db.Text)
    image_url = db.Column(db.Text)
    header_image_url = db.Column(db.Text)
    bio = db.Column(db.Text)
    location = db.Column(db.Text)
    password = db.Column(db.Text)
    messages = db.relationship('Message', backref='user', lazy='dynamic')
    liked_messages = db.relationship("Message",
                                     secondary=UserLikes,
                                     backref=db.backref('users_liked',
                                                        lazy='dynamic'),
                                     lazy='dynamic')

    followers = db.relationship(
        "User",
        secondary=FollowersFollowee,
        primaryjoin=(FollowersFollowee.c.follower_id == id),
        secondaryjoin=(FollowersFollowee.c.followee_id == id),
        backref=db.backref('following', lazy='dynamic'),
        lazy='dynamic')

    def __init__(self, email, username, password):
        self.email = email
        self.username = username
        self.password = bcrypt.generate_password_hash(password).decode('UTF-8')

    def __repr__(self):
        return f"#{self.id}: email: {self.email} - username: {self.username}"

    def is_followed_by(self, user):
        return bool(self.followers.filter_by(id=user.id).first())

    def is_following(self, user):
        return bool(self.following.filter_by(id=user.id).first())

    def does_like(self, message):
        return bool(self.liked_messages.filter_by(id=message.id).first())

    def show_follow(self, user):
        return bool(self.id != user.id)

    @classmethod
    def authenticate(cls, username, password):
        found_user = cls.query.filter_by(username=username).first()
        if found_user:
            is_authenticated = bcrypt.check_password_hash(
                found_user.password, password)
            if is_authenticated:
                return found_user
        return False
Exemplo n.º 4
0
class MatchHero(db.Model):
    __tablename__ = 'match_hero'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    match_id = db.Column(db.Integer, db.ForeignKey('matches.id'), primary_key=True)
    hero_id = db.Column(db.Integer, db.ForeignKey('heroes.id'), primary_key=True)
    team = db.Column(db.String, nullable=False)
    win = db.Column(db.Boolean, nullable=False)
    match = db.relationship("Match", backref=db.backref('heroes'))
    hero = db.relationship("Hero", backref=db.backref('matches'))
Exemplo n.º 5
0
class Grupos(db.Model):
    grupo_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name_group = db.Column(db.String, nullable=False)
    elementos = db.relationship('Aparatos',
                                secondary=element,
                                backref=db.backref('elementos',
                                                   lazy='dynamic'))
    users = db.relationship('Usuario',
                            secondary=subs,
                            backref=db.backref('users', lazy='dynamic'))
Exemplo n.º 6
0
class Association(db.Model):
    __tablename__ = 'association'
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    recipe_id = db.Column(db.Integer, db.ForeignKey('recipes.id'), primary_key=True)
    user = db.relationship("User", backref=db.backref("association", cascade="all, delete-orphan" ))
    recipe = db.relationship("Recipe", backref=db.backref("association", cascade="all, delete-orphan" ))

    def __init__(self, user=None, recipe=None):
        self.user = user
        self.recipe =  recipe
Exemplo n.º 7
0
class Recipe_ingre(db.Model):
    __tablename__ = 'recipe_ingre'
    recipe_id = db.Column(db.Integer, db.ForeignKey('recipes.id'), primary_key=True)
    ingre_id = db.Column(db.Integer, db.ForeignKey('ingres.id'), primary_key=True)
    recipe = db.relationship("Recipe", backref=db.backref("recipe_ingre", cascade="all, delete-orphan" ))
    ingre = db.relationship("Ingre", backref=db.backref("recipe_ingre", cascade="all, delete-orphan" ))

    def __init__(self, recipe=None, ingre=None):
        self.recipe = recipe
        self.ingre =  ingre
Exemplo n.º 8
0
class Event(db.Model):
    __tablename__ = "events"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    event_descriptor_id = db.Column(db.Integer,
                                    db.ForeignKey('event_descriptors.id'),
                                    nullable=False)
    event_descriptor = db.relationship('EventDescriptor',
                                       backref=db.backref('events',
                                                          lazy='joined'))

    entity_type = db.Column(db.String(128))
    entity_id = db.Column(db.Integer)
    entity_description = db.Column(db.String(128))
    entity_2_type = db.Column(db.String(128))
    entity_2_id = db.Column(db.Integer)
    entity_2_description = db.Column(db.String(128))
    entity_3_type = db.Column(db.String(128))
    entity_3_id = db.Column(db.Integer)
    entity_3_description = db.Column(db.String(128))
    expiration_date = db.Column(db.DateTime)
    group_id = db.Column(db.Integer, db.ForeignKey('groups.id'))
    group = db.relationship('Group',
                            backref=db.backref('events', lazy='joined'))
    is_processed = db.Column(db.Boolean, default=False, nullable=False)
    creator_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    creator = db.relationship('User',
                              backref=db.backref('events', lazy='joined'))
    created_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.utcnow)
    updated_at = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.utcnow,
                           onupdate=datetime.utcnow)

    def __init__(self, event_descriptor_id: int):
        self.event_descriptor_id = event_descriptor_id

    def push_notification_data(self):
        event_descriptor = self.event_descriptor
        message_template = event_descriptor.description
        if self.entity_description:
            message_template = message_template.replace(
                "{1}", self.entity_description)
        if self.entity_2_description:
            message_template = message_template.replace(
                "{2}", self.entity_2_description)
        if self.entity_3_description:
            message_template = message_template.replace(
                "{3}", self.entity_3_description)
        devices = Device.query_active_devices_for_group(
            group=self.group, discard_user_ids=[self.creator_id]).all()
        pn_tokens = [device.pn_token for device in devices]
        return "Hi", message_template, pn_tokens
Exemplo n.º 9
0
class Interviewer_assigned(db.Model):
    __tablename__ = "interviewer_assigned"
    id = db.Column(db.Integer, primary_key=True)
    interviewer_id = db.Column(db.Integer, db.ForeignKey('interviewer.id'))
    interview_id = db.Column(db.Integer, db.ForeignKey('interview.id'))
    interview = db.relationship("Interview",
                                backref=db.backref("interviewer_assigned",
                                                   cascade="all"))
    interviewer = db.relationship("Interviewer",
                                  backref=db.backref("interviewer_assigned",
                                                     cascade="all"))
Exemplo n.º 10
0
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.Text, unique=True)
    username = db.Column(db.Text, unique=True)
    image_url = db.Column(db.Text)
    password = db.Column(db.Text)
    messages = db.relationship('Message', backref='user', lazy='dynamic')
    followers = db.relationship(
        "User",
        secondary=FollowersFollowee,
        primaryjoin=(FollowersFollowee.c.follower_id == id),
        secondaryjoin=(FollowersFollowee.c.followee_id == id),
        backref=db.backref('following', lazy='dynamic'),
        lazy='dynamic')

    def __init__(
        self,
        email,
        username,
        password,
        image_url='https://pbs.twimg.com/profile_images/524943875543420928/-0QwXz_i.jpeg'
    ):
        self.email = email
        self.username = username
        self.image_url = image_url
        self.password = bcrypt.generate_password_hash(password).decode('UTF-8')

    def is_followed_by(self, user):
        return bool(self.followers.filter_by(id=user.id).first())

    def is_following(self, user):
        return bool(self.following.filter_by(id=user.id).first())
Exemplo n.º 11
0
class Project(db.Model):
    __tablename__ = "project"
    project_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    release_date = db.Column(db.Date, nullable=False)
    website_url = db.Column(db.Text, nullable=False)
    logo_url = db.Column(db.Text, nullable=False)
    description = db.Column(db.Text, nullable=False)
    platforms = db.relationship("Platform",
                                secondary=project_platform,
                                lazy="subquery",
                                backref=db.backref("projects", lazy=True))

    def to_dict(self):
        project_dict = {
            "project_id": self.project_id,
            "name": self.name,
            "release_date": self.release_date.strftime("%Y-%m-%d"),
            "website_url": self.website_url,
            "logo_url": self.logo_url,
            "description": self.description,
            "platforms": [platform.to_dict() for platform in self.platforms]
        }
        return project_dict

    def to_partial_dict(self):
        project_dict = {
            "project_id": self.project_id,
            "name": self.name,
            "logo_url": self.logo_url,
        }
        return project_dict
Exemplo n.º 12
0
class UnFollow_Schedule(Base):
    __tablename__ = "unfollow_schedule"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    accountid = db.Column(db.Integer, ForeignKey(Account.id), nullable=False)
    start_time = db.Column(db.DateTime, nullable=False)
    end_time = db.Column(db.DateTime, nullable=False)
    max_unfollows = db.Column(db.Integer, nullable=False, default=0)
    option = db.Column(db.Boolean, nullable=False, default=False)
    account = relationship("Account",
                           backref=db.backref('children_unfollow_schedule',
                                              cascade='all,delete'))

    def __init__(self, accountid, start_time, end_time, max_unfollows, option):
        self.accountid = accountid
        self.start_time = start_time
        self.end_time = end_time
        self.max_unfollows = max_unfollows
        self.option = option

    def get_id(self):
        return self.id

    def __repr__(self):
        return '<UnFollow_Schedule {0}>'.format(self.id)
Exemplo n.º 13
0
class User(UserMixin, db.Model):
    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True, nullable=False)
    active = db.Column(db.Boolean(), nullable=False, default=True)
    apikey = db.Column(db.String(36),
                       index=True,
                       unique=True,
                       nullable=False,
                       default=generate_apikey)
    email = db.Column(db.String(255), nullable=False, unique=True)
    first_name = db.Column(db.String(50), nullable=False)
    last_name = db.Column(db.String(50), nullable=False)
    password = db.Column(db.String(130), nullable=False)
    roles = db.relationship('Role',
                            secondary=roles_users_association,
                            backref=db.backref('users', lazy='dynamic'))
    username = db.Column(db.String(255), nullable=False, unique=True)

    def __str__(self):
        return str(self.username)

    def to_dict(self):
        return {
            'id': self.id,
            'active': self.active,
            'email': self.email,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'roles': sorted([r.name for r in self.roles]),
            'username': self.username
        }
Exemplo n.º 14
0
class Product(db.Model):
    __tablename__ = 'product'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    receipt_id = db.Column(db.Integer,
                           db.ForeignKey('receipt.id'),
                           nullable=False)
    receipt = db.relationship('Receipt',
                              backref=db.backref('products',
                                                 lazy=True,
                                                 cascade='all, delete-orphan'))
    quantity = db.Column(db.Integer, nullable=False)
    unit_price = db.Column(db.Float, nullable=False)

    def __init__(self, receipt_id, quantity, unit_price):
        self.receipt_id = receipt_id
        self.quantity = quantity
        self.unit_price = unit_price

    def to_json(self):
        return {
            'id': self.id,
            'receipt_id': self.receipt_id,
            'quantity': self.quantity,
            'unit_price': self.unit_price
        }
Exemplo n.º 15
0
class Investor(db.Model):

    __tablename__ = "investors"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text)
    url = db.Column(db.Text)
    country = db.Column(db.Text)
    markets = db.relationship('Market',
                              secondary=InvestorsMarkets,
                              backref=db.backref('investors', lazy='dynamic'),
                              lazy='dynamic')

    def __init__(self, name, url, country):
        self.name = name
        self.url = url
        self.country = country

    def get_market_names(self):
        return ", ".join([market.name for market in self.markets])

    @classmethod
    def get_investors_in_market(cls, market_name):
        return db.session.query(Investor, InvestorsMarkets, Market).filter(
            Investor.id == InvestorsMarkets.c.investor_id).filter(
                InvestorsMarkets.c.market_id == Market.id).filter(
                    Market.name == market_name)
Exemplo n.º 16
0
class Event(db.Model):
    __tablename__ = 'events'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), nullable=False)
    location = db.Column(db.String(256))
    description = db.Column(db.String(1024))
    duration = db.Column(db.Integer, nullable=False)
    url = db.Column(db.String(32), nullable=False, unique=True)
    color = db.Column(db.String(6), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    availability_id = db.Column(db.Integer,
                                db.ForeignKey('availability.id'),
                                nullable=False)
    availability = db.relationship('Availability',
                                   innerjoin=True,
                                   lazy='joined',
                                   cascade="all, delete-orphan",
                                   single_parent=True,
                                   backref=db.backref('event', uselist=False))

    def __iter__(self):
        values = vars(self)
        for attr in self.__table__.columns.keys():
            if attr in values:
                yield attr, values[attr]

    def logme(self):
        return dict(self)
Exemplo n.º 17
0
class User(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.Text, unique=True)
    password = db.Column(db.Text)
    first_name = db.Column(db.Text)
    last_name = db.Column(db.Text)
    messages = db.relationship(
        "Message", secondary=UserMessages, backref=db.backref("users")
    )

    def __init__(self, first_name, last_name, username, password):
        self.first_name = first_name
        self.last_name = last_name
        self.username = username
        self.password = bcrypt.generate_password_hash(password).decode("UTF-8")

    @classmethod
    def authenticate(cls, username, password):
        found_user = cls.query.filter_by(username=username).first()
        if found_user:
            is_authenticated = bcrypt.check_password_hash(found_user.password, password)
            if is_authenticated:
                return found_user
        return False
Exemplo n.º 18
0
class Position(db.Model):
    __tablename__ = "positions"

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(50))
    description = db.Column(db.String(140))
    # shifts connected to Position
    assigned_shifts = db.relationship('Shift',
                                      backref='Position', lazy='dynamic')
    # Organization associated with shift
    organization_id = db.Column(db.Integer, db.ForeignKey('organizations.id'))
    # Users many to many relationship with position
    assigned_users = db.relationship(
        'User',
        secondary=position_assignments,
        backref=db.backref('Position', lazy='dynamic'))

    color = db.Column(db.String(7))

    def __init__(self, title, description, organization_id):
        self.title = title
        self.organization_id = organization_id
        self.description = description
        self.color = random_color()

    def __repr__(self):
        return '<title: {}>'.format(self.title)
Exemplo n.º 19
0
class Interview(db.Model):
    __tablename__ = "interview"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(32))
    start_time = db.Column(db.DateTime)
    end_time = db.Column(db.DateTime)
    candidate_id = db.Column(db.Integer,
                             db.ForeignKey('candidates.id'),
                             unique=True)
    candidates = db.relationship("Candidates",
                                 backref=db.backref("interview",
                                                    uselist=False))
    interviewer = db.relationship("Interviewer",
                                  secondary="interviewer_assigned",
                                  cascade="all")

    # Class constuctor
    def __init__(self, title, start_time, end_time):
        self.title = title
        self.start_time = start_time
        self.end_time = end_time

    # Returning class attribute in json format
    def to_json(self):
        return {
            "id": self.id,
            "candidate_id": self.candidate_id,
            "title": self.title,
            "start_time": self.start_time,
            "end_time": self.end_time
        }
Exemplo n.º 20
0
class User(db.Model, UserMixin):

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.Text, unique=True)
    username = db.Column(db.Text, unique=True)
    name = db.Column(db.Text)
    image_url = db.Column(db.Text)
    header_image_url = db.Column(db.Text)
    bio = db.Column(db.Text)
    # HEY THE BIO IS RIGHT HERE
    location = db.Column(db.Text)
    password = db.Column(db.Text)
    messages = db.relationship('Message', backref='user', lazy='dynamic')
    followers = db.relationship(
        "User",
        secondary=FollowersFollowee,
        primaryjoin=(FollowersFollowee.c.follower_id == id),
        secondaryjoin=(FollowersFollowee.c.followee_id == id),
        backref=db.backref('following', lazy='dynamic'),
        lazy='dynamic')

    def __init__(self,
                 email,
                 username,
                 password,
                 image_url='/static/images/default-pic.png'):
        self.email = email
        self.username = username
        self.image_url = image_url
        self.password = bcrypt.generate_password_hash(password).decode('UTF-8')

    likes = db.relationship("Message",
                            secondary=UserLikedMessages,
                            backref=db.backref('liked_by', lazy='dynamic'),
                            lazy='dynamic')

    def __repr__(self):
        return f"#{self.id}: email: {self.email} - username: {self.username}"

    def is_followed_by(self, user):
        return bool(self.followers.filter_by(id=user.id).first())

    def is_following(self, user):
        return bool(self.following.filter_by(id=user.id).first())
Exemplo n.º 21
0
class Patent(db.Model):
    __tablename__ = "patent"
    id = db.Column(db.Integer, primary_key=True)
    human_id = db.Column(db.Integer, db.ForeignKey('human.id'), nullable=False)
    title = db.Column(db.String(200), nullable=False)
    description = db.Column(db.String(250), nullable=False)
    patent_number = db.Column(db.String(20), nullable=False)
    inventors = db.Column(db.String(250), nullable=False)
    issue_date = db.Column(db.DateTime, nullable=True)
    patent_office_id = db.Column(db.Integer, db.ForeignKey('patent_office.id'))
    patent_office = db.relationship('PatentOffice', backref=db.backref('patent', lazy='dynamic'))
    patent_status_id = db.Column(db.Integer, db.ForeignKey('patent_status.id'))
    patent_status = db.relationship('PatentStatus', backref=db.backref('patent', lazy='dynamic'))
    patent_url = db.Column(db.String(100), nullable=True)

    def __repr__(self):
        return self.status
Exemplo n.º 22
0
class Device(db.Model):
    __tablename__ = "devices"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    device_id = db.Column(db.String(128), unique=True, nullable=False)
    device_type = db.Column(db.String(128), nullable=False)
    active = db.Column(db.Boolean, default=True, nullable=False)
    pn_token = db.Column(db.String(256), unique=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    user = db.relationship('User', backref=db.backref('devices', lazy='joined'))
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)

    def __init__(self, device_id: str, device_type: str, pn_token: str=None, active: bool=True, user=None, created_at: datetime=datetime.utcnow()):
        self.device_id = device_id
        self.device_type = device_type  # "apple" "android"
        self.pn_token = pn_token
        self.active = active
        self.user = user
        self.created_at = created_at
        self.updated_at = created_at

    # noinspection PyPep8
    @staticmethod
    def query_active_devices_for_user(user: User):
        return Device.query.filter(Device.user_id == user.id, Device.active == True, Device.pn_token.isnot(None))

    # noinspection PyPep8
    @staticmethod
    def query_active_devices_for_group(group: Group, discard_user_ids:List[int]=None):
        discard_user_ids = discard_user_ids or []
        user_ids = [user.user_id for user in group.associated_users if user.user_id not in discard_user_ids]
        return Device.query.filter(Device.user_id.in_(tuple(user_ids)), Device.active == True,
                                   Device.pn_token.isnot(None))

    @staticmethod
    def create_or_update(device_id, device_type: str, user:User=None, active: bool = True, pn_token: str=None):
        device = Device.first_by(device_id=device_id)
        if not device:
            device = Device(device_id=device_id, device_type=device_type, user=user, active=active, pn_token=pn_token)
            db.session.add(device)
        else:
            device.device_type = device_type
            device.active = active
            if user:
                device.user = user
            if pn_token:
                device.pn_token = pn_token
        return device

    @staticmethod
    def first_by(**kwargs):
        """Get first db device that match to device_id"""
        return Device.query.filter_by(**kwargs).first()

    @staticmethod
    def first(*criterion):
        """Get first db entity that match to criterium"""
        return Device.query.filter(*criterion)
Exemplo n.º 23
0
class Post(db.Model):
    __tablename__ = 'blog_post'
    id = db.Column('post_id', db.Integer, primary_key=True)
    uuid = db.Column('uuid', db.String(SIZE_UUID), unique=True)
    slug = db.Column('slug', db.String(SIZE_TITLE), unique=True, index=True)
    description = db.Column('description', db.String(SIZE_META), default='')
    keywords = db.Column('keywords', db.String(SIZE_META), default='')
    status = db.Column('status', db.SmallInteger, default=POST_STATUS_DRAFT)
    added = db.Column('added', db.DateTime)
    published = db.Column('published', db.DateTime)
    sticked = db.Column('sticked', db.Boolean, default=False)
    ping = db.Column('ping', db.Boolean, default=False)
    comments_enabled = db.Column('comments_enabled', db.Boolean, default=True)
    comments_moderated = db.Column('comments_moderated',
                                   db.Boolean,
                                   default=False)
    template = db.Column('template',
                         db.SmallInteger,
                         default=POST_TEMPLATE_TEXT)
    title = db.Column('title', db.String(SIZE_TITLE), index=True, default='')
    teaser = db.Column('teaser', db.Text, default='')
    content = db.Column('content', db.Text, default='')
    prev = db.Column('prev', db.Text, default='')
    tags = db.relationship('Tag',
                           secondary=tags,
                           backref=db.backref('posts', lazy='dynamic'))
    categories = db.relationship('Category',
                                 secondary=categories,
                                 backref=db.backref('posts', lazy='dynamic'))
    user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))

    def __init__(self):
        self.uuid = str(uuid4())
        self.added = datetime.utcnow()

    def __repr__(self):
        return '<Post: %s>' % self.title

    @staticmethod
    def exist(slug):
        if Post.query.filter_by(slug=slug).first() is None:
            return False
        else:
            return True
Exemplo n.º 24
0
class Quote(db.Model):
    __tablename__ = "quote"
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.String, nullable=False)
    author_id = db.Column(db.Integer, db.ForeignKey('author.id'))
    author = db.relationship(
        'Author',
        backref=db.backref('quotes', lazy='dynamic'),
    )
    posted_at = db.Column(db.DateTime)
Exemplo n.º 25
0
class User(db.Model):
    __tablename__ = "user"
    user_id = db.Column(db.String(36), primary_key=True)
    username = db.Column(db.String(255), unique=True, nullable=False)
    hashed_password = db.Column(db.String(64), nullable=False)
    birthdate = db.Column(db.DateTime)
    profiles = db.relationship(
        "Profile", secondary=user_profile, lazy="subquery",
        backref=db.backref("user_profiles", lazy=True)
    )

    def to_json(self):
        user_dict = {
            "accountId": self.user_id,
            "profiles": [],
            "hashedCredentials": self.username + ":" + self.hashed_password
        }
        for profile in self.profiles:
            user_dict["profiles"].append(profile.name)
        return user_dict

    def encode_auth_token(self):
        """Generates the auth token"""
        now = datetime.datetime.utcnow()
        delta = datetime.timedelta(
            days=current_app.config.get("TOKEN_EXPIRATION_DAYS"),
            seconds=current_app.config.get("TOKEN_EXPIRATION_SECONDS")
        )
        try:
            payload = {
                "exp": now + delta,
                "iat": now,
                "sub": self.user_id
            }
            return jwt.encode(
                payload,
                current_app.config.get("SECRET_KEY"),
                algorithm="HS256"
            )
        except Exception as e:
            return e

    @staticmethod
    def decode_auth_token(auth_token):
        """Decodes the auth token"""
        try:
            payload = jwt.decode(
                auth_token,
                current_app.config.get("SECRET_KEY")
            )
            return (True, payload["sub"])
        except jwt.ExpiredSignatureError:
            return (False, "Signature expired. Please log in again.")
        except jwt.InvalidTokenError:
            return (False, "Invalid token. Please log in again.")
Exemplo n.º 26
0
class Tag(db.Model):
    __tablename__ = "tags"

    id = db.Column(db.Integer, primary_key=True)
    tag = db.Column(db.Text)
    messages = db.relationship("Message",
                               secondary=MessageTags,
                               backref=db.backref("tags"))

    def __init__(self, tag):
        self.tag = tag
Exemplo n.º 27
0
class Graph(db.Model):
    id = db.Column(db.String(7), primary_key=True, unique=True)
    tags = db.relationship('Tag',
                           secondary=tags,
                           backref=db.backref('graphs', lazy='dynamic'))

    def __init__(self, idx):
        self.id = idx

    def __repr__(self):
        return '<Graph {}>'.format(self.id)
Exemplo n.º 28
0
class Meetup(OutputMixin, db.Model):
    __tablename__ = "meetup"

    id = Column(
        UUID(as_uuid=True),
        primary_key=True,
        server_default=sqlalchemy.text("uuid_generate_v4()"),
    )
    name = Column(db.String(128), nullable=False)
    logo = Column(db.String(1000), nullable=False)
    url = Column(db.String(2048), nullable=False)
    description = Column(db.String(50000), nullable=False)
    topics = db.relationship(
        "Topic",
        secondary=meetup_topic_table,
        backref=db.backref("meetup", lazy="dynamic"),
    )
    events = db.relationship(
        "Event",
        secondary=meetup_event_table,
        backref=db.backref("meetup", lazy="dynamic"),
    )
    channel = db.relationship(
        "Channel",
        secondary=meetup_channel_table,
        backref=db.backref("meetup", lazy="dynamic"),
    )
    created = Column(db.DateTime, default=datetime.utcnow, nullable=False)
    updated = Column(db.DateTime, default=datetime.utcnow, nullable=False)
    deleted = Column(db.DateTime, nullable=True)
    source = Column(db.String(50), nullable=False)

    def __init__(self, name, logo, url, description, topics, events, channel, source):
        self.name = name
        self.logo = logo
        self.url = url
        self.description = description
        self.topics = topics
        self.events = events
        self.channel = channel
        self.source = source
Exemplo n.º 29
0
class Exercise(db.Model):
	__tablename__ = 'exercises'

	id = db.Column(db.Integer, primary_key=True)
	name = db.Column(db.Text, unique = True)
	description = db.Column(db.Text)
	bodyparts = db.relationship('BodyPart', secondary=BodyPartExercise, backref=db.backref('exercises'))


	def __init__(self,name,description):
		self.name = name
		self.description = description
Exemplo n.º 30
0
class User(db.Model):

    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    email = db.Column(db.String, nullable=False)
    password = db.Column(db.String, nullable=False)
    posts = db.relationship("BlogPost", backref="author")
    followed = db.relationship('User',
                               secondary=followers,
                               primaryjoin=(followers.c.follower_id == id),
                               secondaryjoin=(followers.c.followed_id == id),
                               backref=db.backref('followers', lazy='dynamic'),
                               lazy='dynamic')

    def __init__(self, name, email, password):
        self.name = name
        self.email = email
        self.password = bcrypt.generate_password_hash(password).decode('utf-8')

    def __repr__(self):
        return '<name - {}>'.format(self.name)

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return str(self.id)

    def follow(self, user):
        self.followed.append(user)
        return self

    def unfollow(self, user):
        self.followed.remove(user)
        return self

    def is_following(self, user):
        return self.followed.filter(
            followers.c.followed_id == user.id).count() > 0

    def followed_posts(self):
        return BlogPost.query.join(
            followers, (followers.c.followed_id == BlogPost.author_id)).filter(
                followers.c.follower_id == self.id).order_by(
                    BlogPost.timestamp.desc())