mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	Merge branch 'public-corpus' of gitlab.ub.uni-bielefeld.de:sfb1288inf/nopaque into public-corpus
This commit is contained in:
		@@ -1,9 +1,9 @@
 | 
			
		||||
from datetime import datetime, timedelta
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from flask import (
 | 
			
		||||
    abort,
 | 
			
		||||
    current_app,
 | 
			
		||||
    flash,
 | 
			
		||||
    make_response,
 | 
			
		||||
    jsonify,
 | 
			
		||||
    Markup,
 | 
			
		||||
    redirect,
 | 
			
		||||
    render_template,
 | 
			
		||||
@@ -13,15 +13,13 @@ from flask import (
 | 
			
		||||
)
 | 
			
		||||
from flask_login import current_user, login_required
 | 
			
		||||
from threading import Thread
 | 
			
		||||
import jwt
 | 
			
		||||
import os
 | 
			
		||||
from .decorators import corpus_follower_permission_required, corpus_owner_or_admin_required
 | 
			
		||||
from app import db, hashids
 | 
			
		||||
from app import db
 | 
			
		||||
from app.models import (
 | 
			
		||||
    Corpus,
 | 
			
		||||
    CorpusFile,
 | 
			
		||||
    CorpusFollowerAssociation,
 | 
			
		||||
    CorpusFollowerPermission,
 | 
			
		||||
    CorpusFollowerRole,
 | 
			
		||||
    CorpusStatus,
 | 
			
		||||
    User
 | 
			
		||||
@@ -43,22 +41,34 @@ def fake_add():
 | 
			
		||||
    return ''
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@bp.route('/<hashid:corpus_id>/is_public/enable', methods=['POST'])
 | 
			
		||||
@bp.route('/<hashid:corpus_id>/is_public', methods=['POST'])
 | 
			
		||||
@login_required
 | 
			
		||||
@corpus_owner_or_admin_required()
 | 
			
		||||
def enable_corpus_is_public(corpus_id):
 | 
			
		||||
def update_corpus_is_public(corpus_id):
 | 
			
		||||
    is_public = request.json
 | 
			
		||||
    if not isinstance(is_public, bool):
 | 
			
		||||
        response = jsonify('The request body must be a boolean')
 | 
			
		||||
        response.status_code = 400
 | 
			
		||||
        abort(response)
 | 
			
		||||
    corpus = Corpus.query.get_or_404(corpus_id)
 | 
			
		||||
    corpus.is_public = True
 | 
			
		||||
    corpus.is_public = is_public
 | 
			
		||||
    db.session.commit()
 | 
			
		||||
    return '', 204
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@bp.route('/<hashid:corpus_id>/is_public/disable', methods=['POST'])
 | 
			
		||||
@bp.route('/<hashid:corpus_id>/followers/add', methods=['POST'])
 | 
			
		||||
@login_required
 | 
			
		||||
@corpus_owner_or_admin_required()
 | 
			
		||||
def disable_corpus_is_public(corpus_id):
 | 
			
		||||
def add_corpus_followers(corpus_id):
 | 
			
		||||
    usernames = request.json
 | 
			
		||||
    if not (isinstance(usernames, list) or all(isinstance(u, str) for u in usernames)):
 | 
			
		||||
        response = jsonify('The request body must be a list of strings')
 | 
			
		||||
        response.status_code = 400
 | 
			
		||||
        abort(response)
 | 
			
		||||
    corpus = Corpus.query.get_or_404(corpus_id)
 | 
			
		||||
    corpus.is_public = False
 | 
			
		||||
    for username in usernames:
 | 
			
		||||
        user = User.query.filter_by(username=username, is_public=True).first_or_404()
 | 
			
		||||
        user.follow_corpus(corpus)
 | 
			
		||||
    db.session.commit()
 | 
			
		||||
    return '', 204
 | 
			
		||||
 | 
			
		||||
@@ -159,14 +169,12 @@ def create_corpus():
 | 
			
		||||
@login_required
 | 
			
		||||
def corpus(corpus_id):
 | 
			
		||||
    corpus = Corpus.query.get_or_404(corpus_id)
 | 
			
		||||
    exp_date = (datetime.utcnow() + timedelta(days=7)).strftime('%b %d, %Y')
 | 
			
		||||
    roles = [x.name for x in CorpusFollowerRole.query.all()]
 | 
			
		||||
    corpus_follower_roles = CorpusFollowerRole.query.all()
 | 
			
		||||
    if corpus.user == current_user or current_user.is_administrator():
 | 
			
		||||
        return render_template(
 | 
			
		||||
            'corpora/corpus.html.j2',
 | 
			
		||||
            corpus=corpus,
 | 
			
		||||
            exp_date=exp_date,
 | 
			
		||||
            roles=roles,
 | 
			
		||||
            corpus_follower_roles=corpus_follower_roles,
 | 
			
		||||
            title='Corpus'
 | 
			
		||||
        )
 | 
			
		||||
    if current_user.is_following_corpus(corpus) or corpus.is_public:
 | 
			
		||||
@@ -183,6 +191,7 @@ def corpus(corpus_id):
 | 
			
		||||
        )
 | 
			
		||||
    abort(403)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@bp.route('/<hashid:corpus_id>/generate-corpus-share-link', methods=['GET', 'POST'])
 | 
			
		||||
@login_required
 | 
			
		||||
@corpus_follower_permission_required('GENERATE_SHARE_LINK')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user