I want to check if a user is in a specific group on initilisation of the class based view.
Then use that variable in a number of methods like get_form()and get_context_data()
However I get an error:
File "/projects/hr_project/entries/views.py", line 117, in get_form_class
if self.is_manager:
AttributeError: 'EntryCreateView' object has no attribute 'is_manager'
Here is the class based view:
class EntryCreateView(
LoginRequiredMixin,
FormView,
MessagePermissionRequiredMixin,):
'''Class based view to enter new timesheet entries
'''
form_class = None
template_name = 'entries/entry_form.html'
permission_required = None
permission_denied_message = 'You do not have the permission to create an entry for that user'
def dispatch(self, request, *args, **kwargs):
# Initialise variables and check permissions once
# Set the intial date
if self.kwargs.get('date'):
self.date = self.kwargs.get('date')
else:
self.date = self.get_form().fields['date'].initial
self.date = str(self.date)
self.date_val = datetime.strptime(self.date, '%Y-%m-%d')
self.is_manager = False
manager_group = Group.objects.get(name='Managers')
if manager_group in request.user.groups.all():
self.is_manager = True
# Set the user and permission
self.permission = True
self.user = request.user
if self.is_manager:
# Check user is manager
self.user = self.kwargs.get('user')
else:
if self.kwargs.get('user') == request.user.id:
self.user = self.kwargs.get('user')
else:
self.permission = False
super().dispatch(request, *args, **kwargs)
def has_permission(self):
''''Override how permissions are checked
'''
return self.permission
def get_context_data(self, *args, **kwargs):
context_data = super().get_context_data(*args, **kwargs)
return context_data
self.is_manager = Falsein dispatch, then you should be able to accessself.is_manageringet_form_class. If you're getting an attribute error, it suggests thatself.is_manager = Falsedid not run in your actual code. Your example code doesn't make sense, since the dispatch method doesn't return anything.self.get_form()is made in thedispatchmethod. That is causing the problem.