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