from django.views import View from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin from django.contrib import messages class IsAuthenticated(LoginRequiredMixin, View): redirect_field_name = 'redirect_to' permission_denied_message = 'Please login to proceed' def handle_no_permission(self): messages.error(self.request, self.permission_denied_message) return super().handle_no_permission() class IsPlaceSubmitter(UserPassesTestMixin, View): place_submitter_error_message = None def get_place(self): pass def test_func(self): """ Check if user is eligible to modify place. """ if not hasattr(self.request, 'user'): return False if self.request.user.is_superuser: return True # Check if currently logged in user was the submitter place_obj = self.get_place() if place_obj and hasattr(place_obj, 'submitted_by') and self.request.user == place_obj.submitted_by: return True if self.place_submitter_error_message: messages.error(self.request, self.place_submitter_error_message) return False