Redesign db models.

This commit is contained in:
Patrick Jentsch
2019-08-06 11:47:04 +02:00
parent 34b87c23a7
commit 525d53a906
2 changed files with 54 additions and 20 deletions

View File

@ -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 applications custom anonymous user by setting its class in the login_manager.anonymous_user attribute.
'''
' Flask-Login is told to use the applications custom anonymous user by setting
' its class in the login_manager.anonymous_user attribute.
'''
login_manager.anonymous_user = AnonymousUser
@login_manager.user_loader