Skip to content
Snippets Groups Projects
admin.py 1.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • # -*- coding: utf-8 -*-
    from __future__ import absolute_import, unicode_literals
    
    from django import forms
    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
    from django.contrib.auth.forms import UserChangeForm, UserCreationForm
    
    from .models import User
    
    
    class MyUserChangeForm(UserChangeForm):
        class Meta(UserChangeForm.Meta):
            model = User
    
    
    class MyUserCreationForm(UserCreationForm):
    
        error_message = UserCreationForm.error_messages.update({
            'duplicate_username': 'This username has already been taken.'
        })
    
        class Meta(UserCreationForm.Meta):
            model = User
    
        def clean_username(self):
            username = self.cleaned_data["username"]
            try:
                User.objects.get(username=username)
            except User.DoesNotExist:
                return username
            raise forms.ValidationError(self.error_messages['duplicate_username'])
    
    
    @admin.register(User)
    class UserAdmin(AuthUserAdmin):
        form = MyUserChangeForm
        add_form = MyUserCreationForm
    
        list_display = [
            'username',
            'email',
            'date_joined',
            'last_login',
            'privacy_level',
        ]
        list_filter = [
            'privacy_level',
        ]