implement viewmixins.StaffOrSelfLoginRequiredMixin
This commit is contained in:
		
							parent
							
								
									546441d499
								
							
						
					
					
						commit
						3c4d34cce5
					
				
					 1 changed files with 42 additions and 0 deletions
				
			
		
							
								
								
									
										42
									
								
								viewmixins.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								viewmixins.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | ||||||
|  | """ | ||||||
|  | This module defines mixins for gnuviechadmin views. | ||||||
|  | 
 | ||||||
|  | """ | ||||||
|  | from __future__ import unicode_literals | ||||||
|  | 
 | ||||||
|  | from django.http import HttpResponseForbidden | ||||||
|  | from django.utils.translation import ugettext as _ | ||||||
|  | 
 | ||||||
|  | from braces.views import LoginRequiredMixin | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class StaffOrSelfLoginRequiredMixin(LoginRequiredMixin): | ||||||
|  |     """ | ||||||
|  |     Mixin that makes sure that a user is logged in and matches the current | ||||||
|  |     customer or is a staff user. | ||||||
|  | 
 | ||||||
|  |     """ | ||||||
|  | 
 | ||||||
|  |     def dispatch(self, request, *args, **kwargs): | ||||||
|  |         if ( | ||||||
|  |             request.user.is_staff or | ||||||
|  |             request.user == self.get_customer_object() | ||||||
|  |         ): | ||||||
|  |             return super(StaffOrSelfLoginRequiredMixin, self).dispatch( | ||||||
|  |                 request, *args, **kwargs | ||||||
|  |             ) | ||||||
|  |         return HttpResponseForbidden( | ||||||
|  |             _('You are not allowed to view this page.') | ||||||
|  |         ) | ||||||
|  | 
 | ||||||
|  |     def get_customer_object(self): | ||||||
|  |         """ | ||||||
|  |         Views based on this mixin have to implement this method to return | ||||||
|  |         the customer that must be an object of the same class as the | ||||||
|  |         django.contrib.auth user type. | ||||||
|  | 
 | ||||||
|  |         :return: customer | ||||||
|  |         :rtype: settings.AUTH_USER_MODEL | ||||||
|  | 
 | ||||||
|  |         """ | ||||||
|  |         raise NotImplemented("subclass has to implement get_customer_object") | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue