Example #1
0
class User(BaseModel):
    __tablename__ = "user"

    username = db.Column(db.String(50), default="unnamed")
    first_name = db.Column(db.String(50), nullable=True)
    last_name = db.Column(db.String(50), nullable=True)
    is_active = db.Column(db.Boolean(), default=True)
    is_superuser = db.Column(db.Boolean(), default=False)
    password = db.Column(db.String(250))

    @staticmethod
    async def check_password(password, hash_password) -> bool:
        return pbkdf2_sha256.verify(password, hash_password)

    @property
    def is_authenticated(self) -> bool:
        return True

    @property
    def display_name(self) -> str:
        return f"{self.first_name} {self.last_name}"

    @staticmethod
    async def hash_password(password) -> str:
        hash = pbkdf2_sha256.hash(password)
        return hash
Example #2
0
class Notes(db.Model):

    __tablename__ = 'notes'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    created_by = db.Column(db.String(50))
    content = db.Column(db.String(200))
    created_on = db.Column(db.String(50))
    is_active = db.Column(db.Boolean())

    def __init__(self, created_by, content):
        self.created_by = created_by
        self.content = content
        self.created_on = str(datetime.utcnow())
        self.is_active = True

    def __repr__(self):
        return "<Notes {}".format(self.content)

    @staticmethod
    def view_all():
        return Notes.query.all()

    @staticmethod
    def view_by_id(note_id):
        return Notes.query.get(note_id)

    @staticmethod
    def add(object):
        db.session.add(object)

    @staticmethod
    def commit():
        db.session.commit()
Example #3
0
class Place(db.Model):
    __tablename__ = 'place'

    id = db.Column(db.Integer(), primary_key=True)
    camera_id = db.Column(db.Integer(), db.ForeignKey('%s.id' % Camera.__tablename__))
    status = db.Column(db.Boolean(), server_default='false')
    label = db.Column(db.String(), nullable=False)
    x = db.Column(db.Integer(), nullable=False)
    y = db.Column(db.Integer(), nullable=False)

    _idx = db.Index('camera_label_idx', 'camera_id', 'label', unique=True)
Example #4
0
class Assignment(db.Model):
    __tablename__ = 'assignment'
    id = db.Column(db.Integer(), primary_key=True)
    course_id = db.Column(db.Integer(), db.ForeignKey('course.id'))
    course = db.relationship("Course",
                             backref=db.backref('assignments', order_by=id))
    type_id = db.Column(db.Integer(), db.ForeignKey('assignment_type.id'))
    type = db.relationship("AssignmentType",
                           backref=db.backref('assignments', order_by=id))
    name = db.Column(db.String(255))
    points = db.Column(db.Integer())
    threshold = db.Column(db.Integer(), default=1)
    released = db.Column(db.Boolean())

    def __repr__(self):
        return self.name
Example #5
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)

    # User authentication information
    username = db.Column(db.String(50), nullable=False, unique=True)
    password = db.Column(db.String(255), nullable=False, server_default='')

    # User email information
    email = db.Column(db.String(255), nullable=False, unique=True)
    confirmed_at = db.Column(db.DateTime())

    # User information
    active = db.Column('is_active',
                       db.Boolean(),
                       nullable=False,
                       server_default='0')
    first_name = db.Column(db.String(100), nullable=False, server_default='')
    last_name = db.Column(db.String(100), nullable=False, server_default='')
class Image(db.Model):
    id = db.Column(db.String(), primary_key=True, default=lambda: str(uuid.uuid4()))
    parent_id = db.Column(db.String(), db.ForeignKey('image.id'), nullable=True)
    caption = db.Column(db.String())
    url = db.Column(db.String())
    finished = db.Column(db.Boolean(), default=False)
    created_at = db.Column(db.DateTime(), default=lambda: datetime.now().strftime("%Y-%m-%d, %H:%M:%S"))
    derivatives = db.relationship('Image',
                                  backref=db.backref('parent', uselist=False),
                                  lazy='joined',
                                  remote_side=[id],
                                  primaryjoin="Image.id == Image.parent_id",
                                  foreign_keys=[parent_id])

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

    def __repr__(self):
        return f"<Image id={self.id} caption={self.caption} url={self.url} parent_id={self.parent_id}>"
Example #7
0
class Superhero(BaseModel):
    __tablename__ = 'superhero'

    name = db.Column(db.String(400))
    height = db.Column(db.String())
    weight = db.Column(db.String())
    special_power = db.Column(db.String())
    fathers_name = db.Column(db.String(300))
    mothers_name = db.Column(db.String(300))
    main_powers = db.Column(ARRAY(db.String()))
    alive = db.Column(db.Boolean())
    race = db.Column(db.String(200))

    def __init__(self, payload):

        try:

            for key, value in payload.items():
                if key == 'main_powers':
                    continue
                if key == 'alive':
                    if value.lower() == 'yes':
                        setattr(self, key, True)
                    else:
                        setattr(self, key, False)
                    continue
                setattr(self, key, value)

            if 'main_powers' in payload:
                self.main_powers = payload['main_powers']

        except IntegrityError:

            raise InvalidRequestData(errors=[{
                'error': 'Superhero already exists',
                'field': None,
            }])

        db.session.add(self)
        db.session.commit()

    def get_details(self):
        """
        This function returns the details of an user in a dictionary
        format.

        :return dict: Details of the user
        """

        payload = dict()
        payload['name'] = self.name
        payload['height'] = self.height,
        payload['weight'] = self.weight,
        payload['special_power'] = self.special_power
        payload['fathers_name'] = self.fathers_name
        payload['mothers_name'] = self.mothers_name
        payload['alive'] = 'Yes' if self.alive else 'No'
        payload['race'] = self.race
        payload['main_powers'] = self.main_powers

        base_details = self.get_base_details()
        return {**base_details, **payload}

    @staticmethod
    def get_all_details():
        """
        This function gets the details of all the users in the database
        whose status is active

        :return list(dict): Details of all the users
        """

        superheroes_details = []
        for superhero in Superhero.get_all():
            superheroes_details.append(superhero.get_details())

        return superheroes_details

    def update(self, payload):
        """
        This function updates an user with the given data in the payload.

        :return list(dict): Details of all the users
        """

        try:

            for key, value in payload.items():
                if key == 'main_powers':
                    continue
                if key == 'alive':
                    if value.lower() == 'yes':
                        setattr(self, key, True)
                    else:
                        setattr(self, key, False)
                    continue
                setattr(self, key, value)

            if 'main_powers' in payload:
                self.main_powers = payload['main_powers']

        except IntegrityError:

            raise InvalidRequestData(errors=[{
                'error': 'Superhero already exists',
                'field': None,
            }])

        db.session.commit()
        return self.get_details()

    @staticmethod
    def delete_details(id_):
        """
        This function soft deletes an user from the database.

        :param id_: ID of the superhero to be deleted.

        :return None:
        """
        superhero = Superhero.get_one(id_)
        if superhero:
            superhero.soft_delete(superhero.id_)
            db.session.commit()

        return None