38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
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
|