|
|
|
from django.contrib import admin
|
|
|
|
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
from django.contrib.auth.hashers import make_password
|
|
|
|
from django import forms
|
|
|
|
from .models import Account
|
|
|
|
|
|
|
|
|
|
|
|
class AccountInlineForm(forms.ModelForm):
|
|
|
|
hashed_email_set = forms.EmailField(label='Set hashed email address',
|
|
|
|
required=False)
|
|
|
|
hashed_email_clear = forms.BooleanField(label='Clear hashed email address',
|
|
|
|
required=False)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = Account
|
|
|
|
fields = ['hashed_email']
|
|
|
|
|
|
|
|
def save(self, commit):
|
|
|
|
if len(self.cleaned_data['hashed_email_set']) > 0:
|
|
|
|
self.instance.set_hashed_email(
|
|
|
|
self.cleaned_data['hashed_email_set']
|
|
|
|
)
|
|
|
|
elif self.cleaned_data['hashed_email_clear']:
|
|
|
|
self.instance.hashed_email = ''
|
|
|
|
return super().save(commit)
|
|
|
|
|
|
|
|
|
|
|
|
class AccountInline(admin.StackedInline):
|
|
|
|
model = Account
|
|
|
|
can_delete = False
|
|
|
|
form = AccountInlineForm
|
|
|
|
readonly_fields = ['hashed_email']
|
|
|
|
|
|
|
|
|
|
|
|
class UserAdmin(BaseUserAdmin):
|
|
|
|
inlines = (AccountInline,)
|
|
|
|
|
|
|
|
|
|
|
|
admin.site.unregister(User)
|
|
|
|
admin.site.register(User, UserAdmin)
|
|
|
|
admin.site.register(Account)
|