mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	Redesign corpus page and add possibility to add followers by username for owner
This commit is contained in:
		@@ -3,6 +3,7 @@ from flask import (
 | 
			
		||||
    abort,
 | 
			
		||||
    current_app,
 | 
			
		||||
    flash,
 | 
			
		||||
    jsonify,
 | 
			
		||||
    make_response,
 | 
			
		||||
    Markup,
 | 
			
		||||
    redirect,
 | 
			
		||||
@@ -49,22 +50,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
 | 
			
		||||
@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
 | 
			
		||||
@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
 | 
			
		||||
 | 
			
		||||
@@ -169,14 +182,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:
 | 
			
		||||
@@ -191,6 +202,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