diff --git a/files/permissions.py b/files/permissions.py new file mode 100644 index 0000000..cf56bca --- /dev/null +++ b/files/permissions.py @@ -0,0 +1,22 @@ +from rolepermissions.permissions import register_object_checker +from amadeus.roles import SystemAdmin + +@register_object_checker() +def edit_file(role, user, file): + if (role == SystemAdmin): + return True + + if (user in file.topic.subject.professors.all()): + return True + + return False + +@register_object_checker() +def delete_file(role, user, file): + if (role == SystemAdmin): + return True + + if (user in file.topic.subject.professors.all()): + return True + + return False \ No newline at end of file diff --git a/files/views.py b/files/views.py index 56c18ca..5a754f8 100644 --- a/files/views.py +++ b/files/views.py @@ -181,7 +181,7 @@ class UpdateFile(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.UpdateView) def dispatch(self, *args, **kwargs): file = get_object_or_404(TopicFile, slug = self.kwargs.get('slug')) - if(not has_object_permission('edit_file', self.request.user, file) or not(self.request.user in file.topic.subject.professors.all())): + if(not has_object_permission('edit_file', self.request.user, file) and not(self.request.user in file.topic.subject.professors.all())): return self.handle_no_permission() return super(UpdateFile, self).dispatch(*args, **kwargs) -- libgit2 0.21.2