Add CorpusFollowerList and functions

This commit is contained in:
Patrick Jentsch
2023-02-20 10:40:33 +01:00
parent 5837e05024
commit 2dc41fd387
8 changed files with 234 additions and 38 deletions

View File

@ -18,7 +18,7 @@ from app.models import (
Corpus,
CorpusFile,
CorpusFollowerAssociation,
CorpusFollowPermission,
CorpusFollowerPermission,
CorpusStatus,
User
)
@ -30,7 +30,7 @@ from .forms import (
)
@bp.route('/<hashid:corpus_id>/enable_is_public', methods=['POST'])
@bp.route('/<hashid:corpus_id>/is_public/enable', methods=['POST'])
@login_required
def enable_corpus_is_public(corpus_id):
corpus = Corpus.query.get_or_404(corpus_id)
@ -41,7 +41,7 @@ def enable_corpus_is_public(corpus_id):
return '', 204
@bp.route('/<hashid:corpus_id>/disable_is_public', methods=['POST'])
@bp.route('/<hashid:corpus_id>/is_public/disable', methods=['POST'])
@login_required
def disable_corpus_is_public(corpus_id):
corpus = Corpus.query.get_or_404(corpus_id)
@ -89,30 +89,30 @@ def unfollow_corpus(corpus_id):
return '', 204
@bp.route('/<hashid:corpus_id>/followers/<hashid:user_id>/permissions/add', methods=['POST'])
def add_permission(corpus_id, user_id, permission):
corpus_follow_association = CorpusFollowerAssociation.query.filter_by(followed_corpus_id=corpus_id, following_user_id=user_id).first_or_404()
permission = request.args.get('permission', type=int)
corpus = corpus_follow_association.followed_corpus
@bp.route('/<hashid:corpus_id>/followers/<hashid:corpus_follower_id>/permissions/<permission_name>/add', methods=['POST'])
def add_permission(corpus_id, corpus_follower_id, permission_name):
if permission_name not in [x.name for x in CorpusFollowerPermission]:
abort(400)
corpus_follower_association = CorpusFollowerAssociation.query.filter_by(followed_corpus_id=corpus_id, id=corpus_follower_id).first_or_404()
corpus = corpus_follower_association.followed_corpus
if not (corpus.user == current_user or current_user.is_administrator()):
abort(403)
if permission is None or permission not in iter(CorpusFollowPermission):
abort(400)
corpus_follow_association.add_permission(permission)
permission_value = CorpusFollowerPermission[permission_name].value
corpus_follower_association.add_permission(permission_value)
db.session.commit()
return '', 204
@bp.route('/<hashid:corpus_id>/followers/<hashid:user_id>/permissions/remove', methods=['POST'])
def remove_permission(corpus_id, user_id, permission):
corpus_follow_association = CorpusFollowerAssociation.query.filter_by(followed_corpus_id=corpus_id, following_user_id=user_id).first_or_404()
permission = request.args.get('permission')
corpus = corpus_follow_association.followed_corpus
@bp.route('/<hashid:corpus_id>/followers/<hashid:corpus_follower_id>/permissions/<permission_name>/remove', methods=['POST'])
def remove_permission(corpus_id, corpus_follower_id, permission_name):
if permission_name not in [x.name for x in CorpusFollowerPermission]:
abort(400)
corpus_follower_association = CorpusFollowerAssociation.query.filter_by(followed_corpus_id=corpus_id, id=corpus_follower_id).first_or_404()
corpus = corpus_follower_association.followed_corpus
if not (corpus.user == current_user or current_user.is_administrator()):
abort(403)
if permission is None or permission not in iter(CorpusFollowPermission):
abort(400)
corpus_follow_association.remove_permission(permission)
permission_value = CorpusFollowerPermission[permission_name].value
corpus_follower_association.remove_permission(permission_value)
db.session.commit()
return '', 204