mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-11 16:40:40 +00:00
Integrate CorpusFollowerRoles
This commit is contained in:
@ -21,6 +21,7 @@ from app.models import (
|
||||
CorpusFile,
|
||||
CorpusFollowerAssociation,
|
||||
CorpusFollowerPermission,
|
||||
CorpusFollowerRole,
|
||||
CorpusStatus,
|
||||
User
|
||||
)
|
||||
@ -107,30 +108,16 @@ def current_user_unfollow_corpus(corpus_id):
|
||||
return '', 204
|
||||
|
||||
|
||||
@bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>/permissions/<permission_name>/add', methods=['POST'])
|
||||
def add_permission(corpus_id, follower_id, permission_name):
|
||||
try:
|
||||
permission = CorpusFollowerPermission[permission_name]
|
||||
except KeyError:
|
||||
abort(409) # f'Permission "{permission_name}" does not exist'
|
||||
@bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>/role', methods=['POST'])
|
||||
def add_permission(corpus_id, follower_id):
|
||||
corpus_follower_association = CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=follower_id).first_or_404()
|
||||
if not (corpus_follower_association.corpus.user == current_user or current_user.is_administrator()):
|
||||
abort(403)
|
||||
corpus_follower_association.add_permission(permission)
|
||||
db.session.commit()
|
||||
return '', 204
|
||||
|
||||
|
||||
@bp.route('/<hashid:corpus_id>/followers/<hashid:follower_id>/permissions/<permission_name>/remove', methods=['POST'])
|
||||
def remove_permission(corpus_id, follower_id, permission_name):
|
||||
try:
|
||||
permission = CorpusFollowerPermission[permission_name]
|
||||
except KeyError:
|
||||
return make_response(f'Permission "{permission_name}" does not exist', 409)
|
||||
corpus_follower_association = CorpusFollowerAssociation.query.filter_by(corpus_id=corpus_id, follower_id=follower_id).first_or_404()
|
||||
if not (corpus_follower_association.corpus.user == current_user or current_user.is_administrator()):
|
||||
abort(403)
|
||||
corpus_follower_association.remove_permission(permission)
|
||||
role_name = request.json.get('role')
|
||||
if role_name is None:
|
||||
abort(400)
|
||||
corpus_follower_role = CorpusFollowerRole.query.filter_by(name=role_name).first_or_404()
|
||||
corpus_follower_association.role = corpus_follower_role
|
||||
db.session.commit()
|
||||
return '', 204
|
||||
|
||||
|
Reference in New Issue
Block a user