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'),
    )

Reply via email to