mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-03 20:02:47 +00:00 
			
		
		
		
	Big update, corpus analysis reworked, versioned services, preliminary work for contributions
This commit is contained in:
		@@ -93,12 +93,12 @@ def connect(auth):
 | 
			
		||||
 | 
			
		||||
@socketio.on('disconnect', namespace=NAMESPACE)
 | 
			
		||||
def disconnect():
 | 
			
		||||
    if 'd' not in session:
 | 
			
		||||
        return
 | 
			
		||||
    session['d']['cqi_client_lock'].acquire()
 | 
			
		||||
    try:
 | 
			
		||||
        session['d']['cqi_client'].disconnect()
 | 
			
		||||
    except cqi.errors.CQiException:
 | 
			
		||||
        pass
 | 
			
		||||
    except BrokenPipeError:
 | 
			
		||||
    except (BrokenPipeError, cqi.errors.CQiException):
 | 
			
		||||
        pass
 | 
			
		||||
    session['d']['cqi_client_lock'].release()
 | 
			
		||||
    corpus = Corpus.query.get(session['d']['corpus_id'])
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,10 @@ def cqi_over_socketio(f):
 | 
			
		||||
        f_args = {}
 | 
			
		||||
        # Check for missing args and if all provided args are of the right type
 | 
			
		||||
        for param in signature(f).parameters.values():
 | 
			
		||||
            if param.annotation == cqi.CQiClient:
 | 
			
		||||
            if param.name == 'corpus_name':
 | 
			
		||||
                f_args[param.name] = f'NOPAQUE_{session["d"]["corpus_id"]}'
 | 
			
		||||
                continue
 | 
			
		||||
            if param.name == 'cqi_client':
 | 
			
		||||
                f_args[param.name] = session['d']['cqi_client']
 | 
			
		||||
                continue
 | 
			
		||||
            if param.default is param.empty:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
from flask import (abort, current_app, flash, make_response, redirect,
 | 
			
		||||
                   render_template, url_for, send_from_directory)
 | 
			
		||||
from flask_login import current_user, login_required
 | 
			
		||||
from werkzeug.utils import secure_filename
 | 
			
		||||
from . import bp
 | 
			
		||||
from . import tasks
 | 
			
		||||
from .forms import (AddCorpusFileForm, AddCorpusForm, EditCorpusFileForm,
 | 
			
		||||
@@ -29,18 +30,20 @@ def add_corpus():
 | 
			
		||||
        db.session.flush()
 | 
			
		||||
        db.session.refresh(corpus)
 | 
			
		||||
        try:
 | 
			
		||||
            os.makedirs(corpus.path)
 | 
			
		||||
            corpus.makedirs()
 | 
			
		||||
        except OSError as e:
 | 
			
		||||
            current_app.logger.error(f'Could not add corpus: {e}')
 | 
			
		||||
            current_app.logger.error(e)
 | 
			
		||||
            db.session.rollback()
 | 
			
		||||
            flash('Internal Server Error', 'error')
 | 
			
		||||
            abort(500)
 | 
			
		||||
        else:
 | 
			
		||||
            db.session.commit()
 | 
			
		||||
            flash(f'Corpus "{corpus.title}" added!', 'corpus')
 | 
			
		||||
            return redirect(url_for('.corpus', corpus_id=corpus.id))
 | 
			
		||||
    return render_template('corpora/add_corpus.html.j2', form=form,
 | 
			
		||||
                           title='Add corpus')
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash(f'Corpus "{corpus.title}" added', 'corpus')
 | 
			
		||||
        return redirect(url_for('.corpus', corpus_id=corpus.id))
 | 
			
		||||
    return render_template(
 | 
			
		||||
        'corpora/add_corpus.html.j2',
 | 
			
		||||
        form=form,
 | 
			
		||||
        title='Add corpus'
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@bp.route('/import', methods=['GET', 'POST'])
 | 
			
		||||
@@ -174,7 +177,7 @@ def add_corpus_file(corpus_id):
 | 
			
		||||
        if not form.validate():
 | 
			
		||||
            return make_response(form.errors, 400)
 | 
			
		||||
        # Save the file
 | 
			
		||||
        form.file.data.save(os.path.join(corpus.path, form.file.data.filename))
 | 
			
		||||
        filename = secure_filename(form.file.data.filename)
 | 
			
		||||
        corpus_file = CorpusFile(
 | 
			
		||||
            address=form.address.data,
 | 
			
		||||
            author=form.author.data,
 | 
			
		||||
@@ -182,9 +185,10 @@ def add_corpus_file(corpus_id):
 | 
			
		||||
            chapter=form.chapter.data,
 | 
			
		||||
            corpus=corpus,
 | 
			
		||||
            editor=form.editor.data,
 | 
			
		||||
            filename=form.file.data.filename,
 | 
			
		||||
            filename=filename,
 | 
			
		||||
            institution=form.institution.data,
 | 
			
		||||
            journal=form.journal.data,
 | 
			
		||||
            mimetype='application/vrt+xml',
 | 
			
		||||
            pages=form.pages.data,
 | 
			
		||||
            publisher=form.publisher.data,
 | 
			
		||||
            publishing_year=form.publishing_year.data,
 | 
			
		||||
@@ -192,12 +196,25 @@ def add_corpus_file(corpus_id):
 | 
			
		||||
            title=form.title.data
 | 
			
		||||
        )
 | 
			
		||||
        db.session.add(corpus_file)
 | 
			
		||||
        db.session.flush(objects=[corpus_file])
 | 
			
		||||
        db.session.refresh(corpus_file)
 | 
			
		||||
        try:
 | 
			
		||||
            form.file.data.save(corpus_file.path)
 | 
			
		||||
        except OSError as e:
 | 
			
		||||
            current_app.logger.error(e)
 | 
			
		||||
            db.session.rollback()
 | 
			
		||||
            flash('Internal Server Error', 'error')
 | 
			
		||||
            return make_response({'redirect_url': url_for('.add_corpus_file', corpus_id=corpus.id)}, 500)  # noqa
 | 
			
		||||
        corpus.status = 'unprepared'
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        flash(f'Corpus file "{corpus_file.filename}" added!', 'corpus')
 | 
			
		||||
        flash(f'Corpus file "{corpus_file.title}" added!', 'corpus')
 | 
			
		||||
        return make_response({'redirect_url': url_for('.corpus', corpus_id=corpus.id)}, 201)  # noqa
 | 
			
		||||
    return render_template('corpora/add_corpus_file.html.j2', corpus=corpus,
 | 
			
		||||
                           form=form, title='Add corpus file')
 | 
			
		||||
    return render_template(
 | 
			
		||||
        'corpora/add_corpus_file.html.j2',
 | 
			
		||||
        corpus=corpus,
 | 
			
		||||
        form=form,
 | 
			
		||||
        title='Add corpus file'
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@bp.route('/<hashid:corpus_id>/files/<hashid:corpus_file_id>/delete')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user