Browse Source

add setter for hashed password, use it in admin

master
Fr3deric 5 years ago
parent
commit
4e1a21ee81
  1. 9
      bam/admin.py
  2. 4
      bam/models.py

9
bam/admin.py

@ -1,22 +1,28 @@
from django.contrib import admin from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django import forms from django import forms
from .models import Account from .models import Account
class AccountInlineForm(forms.ModelForm): class AccountInlineForm(forms.ModelForm):
hased_email_set = forms.EmailField(label='Set hashed email address') hashed_email_set = forms.EmailField(label='Set hashed email address')
class Meta: class Meta:
model = Account model = Account
fields = ['hashed_email'] fields = ['hashed_email']
def save(self, commit):
self.instance.set_hashed_email(self.cleaned_data['hashed_email_set'])
return super().save(commit)
class AccountInline(admin.StackedInline): class AccountInline(admin.StackedInline):
model = Account model = Account
can_delete = False can_delete = False
form = AccountInlineForm form = AccountInlineForm
readonly_fields = ['hashed_email']
class UserAdmin(BaseUserAdmin): class UserAdmin(BaseUserAdmin):
@ -25,3 +31,4 @@ class UserAdmin(BaseUserAdmin):
admin.site.unregister(User) admin.site.unregister(User)
admin.site.register(User, UserAdmin) admin.site.register(User, UserAdmin)
admin.site.register(Account)

4
bam/models.py

@ -1,5 +1,6 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
class Account(models.Model): class Account(models.Model):
@ -8,3 +9,6 @@ class Account(models.Model):
def __str__(self): def __str__(self):
return '%s' % (self.user.username) return '%s' % (self.user.username)
def set_hashed_email(self, email):
self.hashed_email = make_password(email)

Loading…
Cancel
Save