Well, I'm using new-admin, and I've extended the auth.user class:
class User(auth.User):
primary_group = meta.ForeignKey(auth.Group, default = 1,
verbose_name = 'primary group')
new_password = meta.CharField(maxlength = 40, blank = True)
fullname = meta.CharField(maxlength = 40, blank = True)
department = meta.ForeignKey(Department, default = 1)
country = meta.ForeignKey(Country, default = 1,
help_text = 'Country the user belongs to')
available = meta.IntegerField(maxlength = 3, default = 100,
verbose_name = 'available (%)',
help_text = 'Percentage of hours per week')
cost = meta.IntegerField(maxlength = 4, default = 500,
help_text = 'SEK per hour')
employee = meta.PositiveSmallIntegerField(unique = True,
help_text = 'Employee number')
notes = meta.TextField(blank = True)
def __repr__(self):
return "%s %s" % (self.first_name, self.last_name)
def _pre_save(self):
self.set_password(self.new_password)
self.new_password = ''
self.fullname = self.first_name + " " + self.last_name
def _module_get_users_by_group(group_id):
"""Return list of users in (primary) group."""
return [(u['id'], u['username'])
for u in get_values(fields = ['id', 'username'],
primary_group__id__exact = group_id)]
class META:
replaces_module = 'auth.users'
admin = meta.Admin(
fields = (
( None, {'fields': ('username', 'password', 'new_password')}),
('Personal info',
{'fields' : ('first_name', 'last_name', 'fullname', 'email',
'department', 'country',
'available', 'cost', 'employee',
'last_login', 'date_joined'), 'classes':
'collapse'}),
('Permissions',
{'fields' : ('is_staff', 'is_active', 'is_superuser',
'primary_group', 'groups', 'user_permissions'),
'classes': 'collapse'}),
('Notes', {'fields' : ('notes',), 'classes' : 'collapse'}),
),
list_display = ('username', 'first_name', 'last_name',
'primary_group',
'email', 'department', 'country'),
list_filter = ('is_staff', 'is_superuser', 'is_active',
'primary_group',
'department', 'country'),
search_fields = ('username', 'first_name', 'last_name', 'email'),
)