Ejemplo n.º 1
0
class User(Model):
    """
    This model holds information about a user registered
    """

    __tablename__ = "user"

    id = Column(db.Integer, primary_key=True)
    name = Column(db.String(80), nullable=False)
    password = Column(db.String(128))
    email = Column(db.String(100), nullable=False, unique=True)
    date = Column(db.DateTime, default=datetime.now())
    votes = db.relationship("Vote", backref=db.backref("user"))
    type = Column(db.String(50), default="remote")

    def __init__(self, name, email, password, _type="remote"):
        """
        Initializes the user instance
        """
        self.name = name
        self.email = email
        if password:
            self.password = Bcrypt().generate_password_hash(password).decode()
        self.type = _type

    def __repr__(self):
        """
        Returns the object reprensentation
        """
        return "<User %r>" % self.name

    def to_json(self):
        """
        Returns a JSON object

        :return: user JSON object
        """
        user_json = {"name": self.name, "email": self.email, "date": self.date}
        return user_json

    @classmethod
    def find_by_email(cls, email):
        return cls.query.filter_by(email=email).first()

    def verify_password(self, password):
        """
        Verify the password

        :param password: password for verification
        """
        return Bcrypt().check_password_hash(self.password, password)

    def save(self):
        """
        Save a user to the database.
        This includes creating a new user and editing one.
        """
        db.session.add(self)
        db.session.commit()
Ejemplo n.º 2
0
class StudentClassSchedule(db.Model):
    """tbd"""

    __tablename__ = "student_class_schedule"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    student_id = db.Column(db.Integer, db.ForeignKey('student.id'), nullable=False)
    class_schedule_id = db.Column(db.Integer, db.ForeignKey('class_schedule.id'), nullable=False)

    # define a relationship to Student
    student = db.relationship("Student",
                           backref=db.backref("student_class_schedule", order_by=id))

    # define a relationship to Class Schedule
    class_schedule = db.relationship("ClassSchedule",
                           backref=db.backref("student_class_schedule", order_by=id))

    def __repr__(self):
        """Provide helpful representation when printed."""
        return "<StudentClassSchedule student_id = {} class_schedule_id = {}>".format(self.student_id, self.class_schedule_id)
Ejemplo n.º 3
0
class ClassSchedule(db.Model):
    """tbd"""

    __tablename__ = "class_schedule"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=True)
    day_of_week = db.Column(db.String(9), nullable=False)
    time = db.Column(db.Time, nullable=False)
    coach_id = db.Column(db.Integer, db.ForeignKey('coach.id'), nullable=True)

    coach = db.relationship("Coach",
                            backref=db.backref("class_schedule", order_by=id))

    def __repr__(self):
        """Provide helpful representation when printed."""
        return "<ClassSchedule id={} day_of_week={} time={}>".format(
            self.id, self.day_of_week, self.time)
Ejemplo n.º 4
0
class ClassInstance(db.Model):
    """tbd"""

    __tablename__ = "class_instance"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    class_schedule_id = db.Column(db.Integer,
                                  db.ForeignKey('class_schedule.id'),
                                  nullable=True)
    date = db.Column(db.DateTime, nullable=False)
    notes = db.Column(db.String(500), nullable=True)
    substitute_coach_id = db.Column(db.Integer,
                                    db.ForeignKey('coach.id'),
                                    nullable=True)

    # define a relationship to Coach
    substitute_coach = db.relationship("Coach",
                                       backref=db.backref(
                                           "substituted_classes", order_by=id))

    def __repr__(self):
        """Provide helpful representation when printed."""
        return "<ClassInstance id={} date={}>".format(self.id, self.date)
Ejemplo n.º 5
0
class DeploymentEntity(BaseEntity):
    """Deployment entity"""
    __tablename__ = "deployments"
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.String(255), nullable=False, index=True)
    name = db.Column(db.String(255), nullable=False)
    status = db.Column(db.String(30), nullable=False)
    modified = db.Column(db.DateTime, default=datetime.utcnow)
    days_duration = db.Column(db.Integer, nullable=False)
    data_url = db.Column(db.String(1000), nullable=True)
    onedata_access_token = db.Column(db.String(255), nullable=True)
    olinip = db.Column(db.String(50), nullable=True)
    vnc_password = db.Column(db.String(255), nullable=True)
    template_id = db.Column(db.Integer,
                            db.ForeignKey('templates.id'),
                            nullable=False)
    template = db.relationship('TemplateEntity',
                               backref=db.backref('deployments', lazy=True))

    def set_id(self, deployment_id: int) -> "DeploymentEntity":
        self.id = deployment_id
        return self

    def get_id(self) -> int:
        return self.id

    def set_user_id(self, user_id: str) -> "DeploymentEntity":
        self.user_id = user_id
        return self

    def get_user_id(self) -> str:
        return self.user_id

    def set_name(self, deployment_name: str) -> "DeploymentEntity":
        self.name = deployment_name
        return self

    def get_name(self) -> str:
        return self.name

    def set_status(self, deployment_status: str) -> "DeploymentEntity":
        self.status = deployment_status
        return self

    def get_status(self) -> str:
        return self.status

    def set_modified(self, modified_datetime: datetime) -> "DeploymentEntity":
        self.modified = modified_datetime
        return self

    def get_modified(self) -> datetime:
        return self.modified

    def set_days_duration(self,
                          deployment_days_duration: int) -> "DeploymentEntity":
        self.days_duration = deployment_days_duration
        return self

    def get_days_duration(self) -> int:
        return self.days_duration

    def set_data_url(self, deployment_data_url: str) -> "DeploymentEntity":
        self.data_url = deployment_data_url
        return self

    def get_data_url(self) -> str:
        return self.data_url

    def set_onedata_access_token(
            self, deployment_onedata_access_token: str) -> "DeploymentEntity":
        self.onedata_access_token = deployment_onedata_access_token
        return self

    def get_onedata_access_token(self) -> str:
        return self.onedata_access_token

    def set_olinip(self, deployment_olinip: str) -> "DeploymentEntity":
        self.olinip = deployment_olinip
        return self

    def get_olinip(self) -> str:
        return self.olinip

    def set_vnc_password(self,
                         deployment_vnc_password: str) -> "DeploymentEntity":
        self.vnc_password = deployment_vnc_password
        return self

    def get_vnc_password(self) -> str:
        return self.vnc_password

    def set_template_id(self,
                        deployment_template_id: int) -> "DeploymentEntity":
        self.template_id = deployment_template_id
        return self

    def get_template_id(self) -> int:
        return self.template_id

    def is_running(self) -> bool:
        return self.status in const.STATUSES_RUNNING

    def is_past(self) -> bool:
        return not self.is_running()

    def is_deleting(self) -> bool:
        return self.status == const.STATUS_TO_DELETE

    def to_dict(self) -> dict:
        return {
            "id": self.get_id(),
            "user_id": self.get_user_id(),
            "name": self.get_name(),
            "status": self.get_status(),
            "modified": self.get_modified().isoformat(),
            "days_duration": self.get_days_duration(),
            "data_url": self.get_data_url(),
            "onedata_access_token": self.get_onedata_access_token(),
            "olinip": self.get_olinip(),
            "vnc_password": self.get_vnc_password(),
            "template_id": self.get_template_id()
        }
Ejemplo n.º 6
0
class User(Model):
    """
    This model holds information about a user registered
    """

    __tablename__ = "user"

    id = Column(db.Integer, primary_key=True)
    name = Column(db.String(80), nullable=False)
    password = Column(db.String(128))
    verification_token = Column(db.String(128), nullable=False, unique=True)
    email = Column(db.String(100), nullable=False, unique=True)
    date = Column(db.DateTime, default=datetime.now())
    votes = db.relationship("Vote", backref=db.backref("user"))
    type = Column(db.String(50), default="remote")
    role = Column(db.String(10), default="user")

    def __init__(self, name, email, password, role="user", _type="remote"):
        """
        Initializes the user instance
        """
        self.name = name
        self.email = email
        self.verification_token = User.generate_token()
        if password:
            self.password = User.generate_password_hash(password)
        self.type = _type
        self.role = role

    def __repr__(self):
        """
        Returns the object reprensentation
        """
        return "<User %r>" % self.name

    def to_json(self):
        """
        Returns a JSON object

        :return: user JSON object
        """
        user_json = {"name": self.name, "email": self.email, "date": self.date}
        return user_json

    @classmethod
    def find_by_email(cls, email):
        return cls.query.filter_by(email=email).first()

    @classmethod
    def find_by_user_id(cls, _id):
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def find_by_verification_token(cls, verification_token):
        return cls.query.filter_by(
            verification_token=verification_token).first()

    @classmethod
    def verify_admin(cls, email):
        """
        Verify admin role
        """
        try:
            query = cls.query.filter_by(email=email, role="admin").first()
            return query
        except Exception as err:
            print("Error: ", err)

    @staticmethod
    def generate_token():
        """
        Returns a random token
        """
        return uuid4().hex

    @staticmethod
    def generate_password_hash(password):
        """
        Returns hash of password
        """
        return Bcrypt().generate_password_hash(password).decode()

    def verify_password(self, password):
        """
        Verify the password

        :param password: password for verification
        """
        return Bcrypt().check_password_hash(self.password, password)

    def save(self):
        """
        Save a user to the database.
        This includes creating a new user and editing one.
        """
        db.session.add(self)
        db.session.commit()