add tables for files

This commit is contained in:
Patrick Jentsch
2019-10-16 16:52:05 +02:00
parent 8158c742d9
commit abe2ed1666
8 changed files with 54 additions and 277 deletions

View File

@ -250,6 +250,28 @@ class AnonymousUser(AnonymousUserMixin):
return False
class JobInput(db.Model):
"""
Class to define Files.
"""
__tablename__ = 'job_inputs'
# Primary key
id = db.Column(db.Integer, primary_key=True)
filename = db.Column(db.String(255))
job_id = db.Column(db.Integer, db.ForeignKey('jobs.id'))
class JobResult(db.Model):
"""
Class to define Files.
"""
__tablename__ = 'job_results'
# Primary key
id = db.Column(db.Integer, primary_key=True)
filename = db.Column(db.String(255))
job_id = db.Column(db.Integer, db.ForeignKey('jobs.id'))
class Job(db.Model):
"""
Class to define Jobs.
@ -272,6 +294,15 @@ class Job(db.Model):
status = db.Column(db.String(16))
title = db.Column(db.String(32))
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
# Relationships
inputs = db.relationship('JobInput',
backref='job',
lazy='dynamic',
cascade='save-update, merge, delete')
results = db.relationship('JobResult',
backref='job',
lazy='dynamic',
cascade='save-update, merge, delete')
def __init__(self, **kwargs):
super(Job, self).__init__(**kwargs)
@ -329,6 +360,17 @@ class Job(db.Model):
db.session.commit()
class CorpusFile(db.Model):
"""
Class to define Files.
"""
__tablename__ = 'corpus_files'
# Primary key
id = db.Column(db.Integer, primary_key=True)
filename = db.Column(db.String(255))
corpus_id = db.Column(db.Integer, db.ForeignKey('corpora.id'))
class Corpus(db.Model):
"""
Class to define a corpus.
@ -340,6 +382,11 @@ class Corpus(db.Model):
description = db.Column(db.String(255))
title = db.Column(db.String(32))
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
# Relationships
files = db.relationship('CorpusFile',
backref='relation',
lazy='dynamic',
cascade='save-update, merge, delete')
def __init__(self, **kwargs):
super(Corpus, self).__init__(**kwargs)

View File

@ -1,9 +1,10 @@
from flask import abort, current_app, flash, redirect, render_template, url_for
from . import services
from flask_login import current_user, login_required
from werkzeug.utils import secure_filename
from . import services
from .forms import NewNLPJobForm, NewOCRJobForm
from ..models import Job
from .. import db
from ..models import Job, JobInput
import json
import os
@ -53,7 +54,10 @@ def service(service_handle):
else:
for file in new_job_form.files.data:
''' TODO: Use secure filename '''
file.save(os.path.join(dir, file.filename))
filename = secure_filename(file.filename)
file.save(os.path.join(dir, filename))
job_input = JobInput(filename=filename, job=job)
db.session.add(job_input)
job.status = 'submitted'
db.session.commit()
flash('Job created!')