Blinkenbunt Account Manager
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

42 lines
1.3 KiB

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)