Skip to content
Snippets Groups Projects
Commit 525d53a9 authored by Patrick Jentsch's avatar Patrick Jentsch
Browse files

Redesign db models.

parent 34b87c23
No related branches found
No related tags found
No related merge requests found
......@@ -25,10 +25,12 @@ class Role(db.Model):
A Role can be associated with many User rows.
"""
__tablename__ = 'roles'
# Primary key
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
default = db.Column(db.Boolean, default=False, index=True)
name = db.Column(db.String(64), unique=True)
permissions = db.Column(db.Integer)
# Relationships
users = db.relationship('User', backref='role', lazy='dynamic')
def __init__(self, **kwargs):
......@@ -101,12 +103,15 @@ class User(UserMixin, db.Model):
Model for Users that are registered to Opaque.
"""
__tablename__ = 'users'
# Primary key
id = db.Column(db.Integer, primary_key=True)
confirmed = db.Column(db.Boolean, default=False)
email = db.Column(db.String(64), unique=True, index=True)
username = db.Column(db.String(64), unique=True, index=True)
password_hash = db.Column(db.String(128))
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
confirmed = db.Column(db.Boolean, default=False)
username = db.Column(db.String(64), unique=True, index=True)
# Relationships
jobs = db.relationship('Job', backref='job', lazy='dynamic')
def __repr__(self):
"""
......@@ -204,21 +209,33 @@ class AnonymousUser(AnonymousUserMixin):
return False
class Job():
class Job(db.Model):
"""
Class to define Jobs.
"""
__tablename__ = 'jobs'
# Primary key
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(32))
description = db.Column(db.String(64))
service = db.Column(db.String(64), index=True)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), index=True)
requested_cpus = db.Column(db.Integer, default=None)
requested_memory = db.Column(db.Integer, default=None)
service_args = db.Column(db.String(255)) # JSON string representation {'lang': new_ocr_job_form.language.data, 'version': new_ocr_job_form.version. }
status = db.Column(db.String(64))
cmd_args = db.Column(db.String(255)) # For extra cmd arguments
'''
' Requested ressources.
' Example: {"n_cores": 2,
' "mem_mb": 4096
' }
'''
ressources = db.Column(db.String(255))
service = db.Column(db.String(64))
'''
' Service specific arguments in JSON format.
' Example: {"args": ["--keep-intermediates", "skip-binarization"],
' "lang": "eng",
' "version": "latest"
' }
'''
service_args = db.Column(db.String(255))
status = db.Column(db.String(8))
title = db.Column(db.String(32))
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
def __init__(self, **kwargs):
super(Job, self).__init__(**kwargs)
......@@ -230,7 +247,11 @@ class Job():
return '<Job %r>' % self.title
login_manager.anonymous_user = AnonymousUser # Flask-Login is told to use the application’s custom anonymous user by setting its class in the login_manager.anonymous_user attribute.
'''
' Flask-Login is told to use the application’s custom anonymous user by setting
' its class in the login_manager.anonymous_user attribute.
'''
login_manager.anonymous_user = AnonymousUser
@login_manager.user_loader
......
"""Initial commit
"""initial migration
Revision ID: 1d405e6a9d7b
Revision ID: 717796966c8c
Revises:
Create Date: 2019-08-05 16:36:07.187004
Create Date: 2019-08-06 11:39:51.067875
"""
from alembic import op
......@@ -10,7 +10,7 @@ import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '1d405e6a9d7b'
revision = '717796966c8c'
down_revision = None
branch_labels = None
depends_on = None
......@@ -20,8 +20,8 @@ def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('roles',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=64), nullable=True),
sa.Column('default', sa.Boolean(), nullable=True),
sa.Column('name', sa.String(length=64), nullable=True),
sa.Column('permissions', sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
......@@ -29,21 +29,34 @@ def upgrade():
op.create_index(op.f('ix_roles_default'), 'roles', ['default'], unique=False)
op.create_table('users',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('confirmed', sa.Boolean(), nullable=True),
sa.Column('email', sa.String(length=64), nullable=True),
sa.Column('username', sa.String(length=64), nullable=True),
sa.Column('password_hash', sa.String(length=128), nullable=True),
sa.Column('role_id', sa.Integer(), nullable=True),
sa.Column('confirmed', sa.Boolean(), nullable=True),
sa.Column('username', sa.String(length=64), nullable=True),
sa.ForeignKeyConstraint(['role_id'], ['roles.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
op.create_index(op.f('ix_users_username'), 'users', ['username'], unique=True)
op.create_table('jobs',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('description', sa.String(length=64), nullable=True),
sa.Column('ressources', sa.String(length=255), nullable=True),
sa.Column('service', sa.String(length=64), nullable=True),
sa.Column('service_args', sa.String(length=255), nullable=True),
sa.Column('status', sa.String(length=8), nullable=True),
sa.Column('title', sa.String(length=32), nullable=True),
sa.Column('user_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('id')
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('jobs')
op.drop_index(op.f('ix_users_username'), table_name='users')
op.drop_index(op.f('ix_users_email'), table_name='users')
op.drop_table('users')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment