class User(DB.Model):
    __tablename__ = "users"

    id = DB.Column(DB.Integer, primary_key=True, autoincrement=True) # Umbennen in uid
    username = DB.Column(DB.String(128), unique=True, nullable=False)
    email = DB.Column(DB.String(128), unique=True, nullable=False)
    password = DB.Column(DB.String(255), nullable=False)
    admin = DB.Column(DB.Boolean, default=False, nullable=False)
    active = DB.Column(DB.Boolean, default=True, nullable=False)
    created_at = DB.Column(DB.DateTime, nullable=False)

    def __init__(self, username, email, password, created_at=datetime.datetime.utcnow(), admin=False):
        self.username = username
        self.email = email
        self.password = self.generate_hash(password)
        self.admin = admin
        self.created_at = created_at
    
    def get_dict(self):
        ''' Returns the users data '''
        return {
            "id": self.id,
            "username": self.username,
            "email": self.email,
            "admin": self.admin,
            "created_at": self.created_at
        }

    @staticmethod
    def generate_hash(password):
        ''' Generates the password hash '''
        return BCRYPT.generate_password_hash(password, current_app.config.get('BCRYPT_LOG_ROUNDS')).decode()

    @staticmethod
    def encode_auth_token(user_id):
        ''' Generates the auth token '''

        payload = {
            'exp': datetime.datetime.utcnow() + datetime.timedelta(
                days=current_app.config.get('TOKEN_EXPIRATION_DAYS'),
                seconds=current_app.config.get('TOKEN_EXPIRATION_SECONDS')
            ),
            'iat': datetime.datetime.utcnow(),
            'sub': user_id
        }

        return jwt.encode(payload, current_app.config.get('SECRET_BCRYPT'), algorithm='HS256')

    @staticmethod
    def decode_auth_token(auth_token):
        ''' Decodes the auth token '''

        payload = jwt.decode(auth_token, current_app.config.get('SECRET_BCRYPT'))

        return payload['sub']
Exemple #2
0
class Job(DB.Model):
    ''' Job Model '''

    __tablename__ = "jobs"

    id = DB.Column(DB.Integer, primary_key=True, autoincrement=True)
    user_id = DB.Column(DB.Integer, nullable=False)
    task = DB.Column(DB.JSON, nullable=True)
    status = DB.Column(DB.String(128), nullable=False)
    submitted = DB.Column(DB.DateTime, nullable=False)
    last_update = DB.Column(DB.DateTime, nullable=False)
    consumed_credits = DB.Column(DB.Float, nullable=False)

    def __init__(self,
                 user_id,
                 task,
                 status="submitted",
                 submitted=datetime.utcnow(),
                 last_update=datetime.utcnow(),
                 consumed_credits=0):
        self.user_id = user_id
        self.task = task
        self.status = status
        self.submitted = submitted
        self.last_update = last_update
        self.consumed_credits = consumed_credits

    def get_dict(self):
        return {
            "job_id": self.id,
            "user_id": self.user_id,
            "task": self.task,
            "status": self.status,
            "submitted": self.submitted,
            "updated": self.last_update,
            "consumed_credits": self.consumed_credits
        }

    def get_small_dict(self):
        return {
            "job_id": self.id,
            "user_id": self.user_id,
            "status": self.status,
            "submitted": self.submitted,
            "updated": self.last_update,
            "consumed_credits": self.consumed_credits
        }
class Process(DB.Model):
    ''' Process Model '''

    __tablename__ = "processes"

    id = DB.Column(DB.Integer, primary_key=True, autoincrement=True)
    user_id = DB.Column(DB.Integer, nullable=False)
    process_id = DB.Column(DB.String(128), nullable=False)
    description = DB.Column(DB.String(512), nullable=False)
    git_uri = DB.Column(DB.String(128), nullable=True)
    git_ref = DB.Column(DB.String(128), nullable=True)
    git_dir = DB.Column(DB.String(128), nullable=True)
    process_type = DB.Column(DB.String(128), nullable=False)
    args = DB.Column(DB.JSON, nullable=True)
    created_at = DB.Column(DB.DateTime, nullable=False)

    def __init__(self,
                 user_id,
                 process_id,
                 description,
                 process_type,
                 git_uri=None,
                 git_ref=None,
                 git_dir=None,
                 args=args,
                 created_at=datetime.utcnow()):
        self.user_id = user_id
        self.process_id = process_id
        self.description = description
        self.git_uri = git_uri
        self.git_ref = git_ref
        self.git_dir = git_dir
        self.process_type = process_type
        self.args = args
        self.created_at = created_at

    def get_description(self):
        ''' Short process description '''

        return {"process_id": self.process_id, "description": self.description}

    def get_small_dict(self):
        ''' Reduced view that hides sensitive information '''

        return {
            "process_id": self.process_id,
            "description": self.description,
            "args": self.args,
            "created_at": self.created_at
        }

    def get_dict(self):
        return {
            "user_id": self.user_id,
            "process_id": self.process_id,
            "description": self.description,
            "git_uri": self.git_uri,
            "git_ref": self.git_ref,
            "git_dir": self.git_dir,
            "process_type": self.process_type,
            "args": self.args,
            "created_at": self.created_at
        }