Guest User

Untitled

a guest
Mar 5th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. from .models import UserModel, UserProfileModel
  2. from django import forms
  3. from django.contrib import admin
  4. from django.contrib.auth.models import Group
  5. from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
  6. from django.contrib.auth.forms import ReadOnlyPasswordHashField
  7.  
  8. class UserCreationForm(forms.ModelForm):
  9. password = forms.CharField(label='Password',widget=forms.PasswordInput)
  10. passwordrepeat = forms.CharField(label='Confirm Password',widget=forms.PasswordInput)
  11. class Meta:
  12. model = UserModel
  13. fields = ('email',)
  14. def clean_password(self):
  15. # Check that the two password entries match
  16. password = self.cleaned_data.get('password')
  17. passwordrepeat = self.cleaned_data.get('passwordrepeat')
  18. if password and passwordrepeat and password != passwordrepeat:
  19. raise forms.ValidationError("Passwords do not match")
  20. return passwordrepeat
  21. def save(self, commit=True):
  22. # Save the provided password in hashed format
  23. user = super(UserCreationForm, self).save(commit=False)
  24. user.set_password(self.clean_password['password'])
  25. if commit:
  26. user.save()
  27. return user
  28.  
  29. class UserUpdateForm(forms.ModelForm):
  30. password = ReadOnlyPasswordHashField()
  31. class Meta:
  32. model = UserModel
  33. fields = ('email','password','is_active','is_admin')
  34. def clean_password(self):
  35. # Regardless of what the user provides, return the initial value.
  36. # This is done here, rather than on the field, because the
  37. # field does not have access to the initial value
  38. return self.initial['password']
  39.  
  40. class UserProfileInline(admin.StackedInline):
  41. model = UserProfileModel
  42. fields = ('user_fname','user_lname','user_type',)
  43. can_delete = False
  44. verbose_name_plural = 'Profile'
  45. fk_name = 'user'
  46.  
  47. class UserAdmin(BaseUserAdmin):
  48. # The forms to add and change user instances
  49. update_form = UserUpdateForm
  50. create_form = UserCreationForm
  51. # The fields to be used in displaying UserModel.
  52. # These override the definitions on the base UserAdmin
  53. # that reference specific fields on auth.User.
  54. list_display = ('email','dt_joined','dt_updated','is_active','is_admin')
  55. list_filter = ('is_admin','dt_joined','dt_updated','is_active')
  56. fieldsets = (
  57. (None, {'fields': ('email','password',)}),
  58. ('Permissions', {'fields':('is_admin','is_active')}),
  59. )
  60. inlines = (UserProfileInline, )
  61. # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
  62. # overrides get_fieldsets to use this attribute when creating a user.
  63. add_fieldsets = (
  64. (None, {
  65. 'classes':('wide',),
  66. 'fields':('email','password','is_admin','is_superadmin','is_active')
  67. }
  68. ),
  69. )
  70. search_fields = ('email',)
  71. ordering = ('email',)
  72. filter_horizontal = ()
  73. def get_inline_instances(self, request, obj=None):
  74. if not obj:
  75. return list()
  76. return super(UserAdmin, self).get_inline_instances(request, obj)
  77.  
  78. admin.site.register(UserModel, UserAdmin)
  79. admin.site.unregister(Group)
  80.  
  81. # User Manager and User Model
  82. class UserManager(BaseUserManager):
  83. class Meta:
  84. verbose_name = 'Manager'
  85. def create_user(self,email,password=None):
  86. if not email:
  87. raise ValueError('Users must have an email address')
  88. user = self.model(email=self.normalize_email(email))
  89. user.set_password(password)
  90. user.save(using=self._db)
  91. return user
  92. def create_adminuser(self,email,password):
  93. user = self.create_user(email,password=password)
  94. user.is_admin = True
  95. user.is_superadmin = False
  96. user.save(using=self._db)
  97. return user
  98. def create_superuser(self,email,password):
  99. user = self.create_user(email,password=password)
  100. user.is_admin = True
  101. user.is_superadmin = True
  102. user.save(using=self._db)
  103. return user
  104.  
  105. class UserModel(AbstractBaseUser): # For the Company Employees
  106. id=models.AutoField(primary_key=True) # Have set this explicitly for clarity purposes
  107. email=models.EmailField(max_length=255,unique=True,verbose_name='Email Address')
  108. dt_joined=models.DateTimeField(auto_now_add=True,verbose_name='Date Joined')
  109. dt_updated=models.DateTimeField(auto_now=True,verbose_name='Date Updated')
  110. is_active=models.BooleanField(default=True)
  111. is_admin=models.BooleanField(default=False)
  112. is_superadmin=models.BooleanField(default=False)
  113. objects=UserManager()
  114. USERNAME_FIELD='email'
  115. REQUIRED_FIELDS=[]
  116. class Meta:
  117. verbose_name = 'User'
  118. def __unicode__(self):
  119. return self.email
  120. def __str__(self):
  121. return self.email
  122. def get_short_name(self):
  123. return self.email
  124. def has_perm(self,perm,obj=None):
  125. return True
  126. def has_module_perms(self,app_label):
  127. return True
  128. def email_user(self,subject,message,from_email=None,**kwargs):
  129. send_mail(subject, message, from_email, [self.email], **kwargs)
  130. @property
  131. def is_staff(self):
  132. return self.is_admin
Add Comment
Please, Sign In to add comment