diff --git a/forum/permissions.py b/forum/permissions.py new file mode 100644 index 0000000..9d98c82 --- /dev/null +++ b/forum/permissions.py @@ -0,0 +1,32 @@ +from rolepermissions.permissions import register_object_checker +from amadeus.roles import SystemAdmin + +@register_object_checker() +def view_forum(role, user, forum): + if (role == SystemAdmin): + return True + + if (user in forum.topic.subject.professors.all() or user in forum.topic.subject.students.all()): + return True + + return False + +@register_object_checker() +def edit_forum(role, user, forum): + if (role == SystemAdmin): + return True + + if (user in forum.topic.subject.professors.all()): + return True + + return False + +@register_object_checker() +def delete_forum(role, user, forum): + if (role == SystemAdmin): + return True + + if (user in forum.topic.subject.professors.all()): + return True + + return False diff --git a/forum/templates/forum/forum_view.html b/forum/templates/forum/forum_view.html index 18272fc..f19b088 100644 --- a/forum/templates/forum/forum_view.html +++ b/forum/templates/forum/forum_view.html @@ -34,7 +34,7 @@ - {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user == post.user %} + {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user in forum.topic.subject.professors.all %}