mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-11 16:40:40 +00:00
Merge branch 'development' into public-corpus
This commit is contained in:
@ -62,7 +62,9 @@ def connect(auth):
|
||||
if corpus is None:
|
||||
# return {'code': 404, 'msg': 'Not Found'}
|
||||
raise ConnectionRefusedError('Not Found')
|
||||
if not (corpus.user == current_user or current_user.is_administrator()):
|
||||
if not (corpus.user == current_user
|
||||
or current_user.is_following_corpus(corpus)
|
||||
or current_user.is_administrator()):
|
||||
# return {'code': 403, 'msg': 'Forbidden'}
|
||||
raise ConnectionRefusedError('Forbidden')
|
||||
if corpus.status not in [
|
||||
|
@ -18,18 +18,6 @@ from . import bp
|
||||
from .forms import ChangeCorpusSettingsForm, CreateCorpusFileForm, CreateCorpusForm, UpdateCorpusFileForm
|
||||
|
||||
|
||||
def user_can_read_corpus(user, corpus):
|
||||
return corpus.user == user or user.is_administrator() or corpus.is_public
|
||||
|
||||
|
||||
def user_can_update_corpus(user, corpus):
|
||||
return corpus.user == user or user.is_administrator()
|
||||
|
||||
|
||||
def user_can_delete_corpus(user, corpus):
|
||||
return user_can_update_corpus(user, corpus)
|
||||
|
||||
|
||||
@bp.route('')
|
||||
@login_required
|
||||
def corpora():
|
||||
@ -70,7 +58,10 @@ def create_corpus():
|
||||
@login_required
|
||||
def corpus(corpus_id):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
if not user_can_read_corpus(current_user, corpus):
|
||||
if not (corpus.user == current_user
|
||||
or current_user.is_administrator()
|
||||
or current_user.is_following_corpus(corpus)
|
||||
or corpus.is_public):
|
||||
abort(403)
|
||||
corpus_settings_form = ChangeCorpusSettingsForm(
|
||||
data=corpus.to_json_serializeable(),
|
||||
@ -81,17 +72,20 @@ def corpus(corpus_id):
|
||||
db.session.commit()
|
||||
flash('Your changes have been saved')
|
||||
return redirect(url_for('.corpus', corpus_id=corpus.id))
|
||||
# following_users = [
|
||||
# u.to_json_serializeable() for u
|
||||
# in corpus.following_users
|
||||
# ]
|
||||
return render_template(
|
||||
'corpora/corpus.html.j2',
|
||||
corpus_settings_form=corpus_settings_form,
|
||||
corpus=corpus,
|
||||
# following_users=following_users,
|
||||
title='Corpus'
|
||||
)
|
||||
if corpus.user == current_user or current_user.is_administrator():
|
||||
return render_template(
|
||||
'corpora/corpus.html.j2',
|
||||
corpus_settings_form=corpus_settings_form,
|
||||
corpus=corpus,
|
||||
title='Corpus'
|
||||
)
|
||||
else:
|
||||
print('public')
|
||||
return render_template(
|
||||
'corpora/corpus_public.html.j2',
|
||||
corpus=corpus,
|
||||
title='Corpus'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@ -99,7 +93,7 @@ def corpus(corpus_id):
|
||||
# @login_required
|
||||
# def update_corpus(corpus_id):
|
||||
# corpus = Corpus.query.get_or_404(corpus_id)
|
||||
# if not user_can_update_corpus(current_user, corpus):
|
||||
# if not (corpus.user == current_user or current_user.is_administrator()):
|
||||
# abort(403)
|
||||
# return render_template(
|
||||
# 'corpora/update_corpus.html.j2',
|
||||
@ -118,7 +112,7 @@ def delete_corpus(corpus_id):
|
||||
db.session.commit()
|
||||
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
if not user_can_delete_corpus(current_user, corpus):
|
||||
if not (corpus.user == current_user or current_user.is_administrator()):
|
||||
abort(403)
|
||||
thread = Thread(
|
||||
target=_delete_corpus,
|
||||
@ -132,7 +126,10 @@ def delete_corpus(corpus_id):
|
||||
@login_required
|
||||
def analyse_corpus(corpus_id):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
if not user_can_read_corpus(current_user, corpus):
|
||||
if not (corpus.user == current_user
|
||||
or current_user.is_administrator()
|
||||
or current_user.is_following_corpus(corpus)
|
||||
or corpus.is_public):
|
||||
abort(403)
|
||||
return render_template(
|
||||
'corpora/analyse_corpus.html.j2',
|
||||
@ -151,7 +148,7 @@ def build_corpus(corpus_id):
|
||||
db.session.commit()
|
||||
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
if not user_can_update_corpus(current_user, corpus):
|
||||
if not (corpus.user == current_user or current_user.is_administrator()):
|
||||
abort(403)
|
||||
# Check if the corpus has corpus files
|
||||
if not corpus.files.all():
|
||||
@ -169,7 +166,7 @@ def build_corpus(corpus_id):
|
||||
@login_required
|
||||
def create_corpus_file(corpus_id):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
if not user_can_update_corpus(current_user, corpus):
|
||||
if not (corpus.user == current_user or current_user.is_administrator()):
|
||||
abort(403)
|
||||
form = CreateCorpusFileForm()
|
||||
if form.is_submitted():
|
||||
@ -334,13 +331,3 @@ def remove_permission(corpus_id, user_id, permission):
|
||||
db.session.commit()
|
||||
return 'ok'
|
||||
|
||||
@bp.route('/public/<hashid:corpus_id>')
|
||||
def public_corpus(corpus_id):
|
||||
corpus = Corpus.query.get_or_404(corpus_id)
|
||||
corpus_files = [cf.to_json_serializeable() for cf in CorpusFile.query.filter_by(corpus_id = corpus_id).all()]
|
||||
return render_template(
|
||||
'corpora/public_corpus.html.j2',
|
||||
corpus=corpus,
|
||||
corpus_files=corpus_files,
|
||||
title=corpus.title
|
||||
)
|
||||
|
Reference in New Issue
Block a user