Re: Problem UserAdmin with GenericStackedInline in Django 1.5c2

2013-03-01 Thread Witold Greń
Hm.. I am not extending User Model.

I lost one class, this is real example:

Create APPs: core

SETTINGS:

#Django 1.5

AUTH_USER_MODEL = 'core.Partners'



MODELS:

# -*- coding: utf-8 -*-

from django.db import models

from django.contrib.contenttypes.models import ContentType

from django.contrib.contenttypes import generic

from django.utils.translation import ugettext_lazy as _

from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, 
PermissionsMixin

from django.conf import settings


class CreateModified(models.Model):

date_create = models.DateTimeField(auto_now_add=True)

date_modified = models.DateTimeField(auto_now=True)

user_create_fk = models.ForeignKey(settings.AUTH_USER_MODEL, 
related_name='%(app_label)s_%(class)s_usercreate', blank=True,null=True)

user_modified_fk = models.ForeignKey(settings.AUTH_USER_MODEL, 
related_name='%(app_label)s_%(class)s_userchange', blank=True,null=True)

class Meta:

abstract = True

class Addresses(CreateModified):

"""

Fields extends from CreateModified

date_create = models.DateTimeField(auto_now_add=True)

date_modified = models.DateTimeField(auto_now=True)

THIS IS PROBLEM:

user_create_fk = models.ForeignKey(settings.AUTH_USER_MODEL, 
related_name='%(app_label)s_%(class)s_usercreate', blank=True,null=True)

user_modified_fk = models.ForeignKey(settings.AUTH_USER_MODEL, 
related_name='%(app_label)s_%(class)s_userchange', blank=True,null=True)

"""

name = models.CharField(max_length=200, verbose_name='Nazwa')

street = models.CharField(max_length=200, verbose_name='Ulica')

no_house = models.IntegerField(verbose_name='Numer budynku')

no_local = models.IntegerField(verbose_name='Numer lokalu', blank=True, 
null=True)

postal_code = models.CharField(max_length=200, verbose_name='Kod 
pocztowy')

city = models.CharField(max_length=200, verbose_name='Miasto')

region = models.CharField(max_length=200, verbose_name='Województwo')

content_type = models.ForeignKey(ContentType,verbose_name='Rodzaj 
modelu', related_name="content_type_%(class)s",)

object_id = models.PositiveIntegerField(verbose_name='Rodzaj obiekt', 
db_index=True)

content_object = generic.GenericForeignKey('content_type', 'object_id')



class Partners(CreateModified, AbstractBaseUser, PermissionsMixin):

login = models.CharField(max_length=200, verbose_name='Login', 
help_text=_('Required. 30 characters or fewer. Letters, numbers and 
@/./+/-/_ characters'), unique=True, db_index=True)

company = models.BooleanField(verbose_name='Firma/Prywatny')

company_name = models.CharField(max_length=200, verbose_name='Nazwa 
firmy', blank=True, null=True)

www = models.URLField(verbose_name='Strona internetowa', blank=True, 
null=True)

name = models.CharField(max_length=200, verbose_name='Imię', blank=True, 
null=True)

surname = models.CharField(max_length=200, verbose_name='Nazwisko', 
blank=True, null=True)

phone = models.CharField(max_length=200, verbose_name='Telefon', blank=
True, null=True)

email = models.EmailField(verbose_name='Email', blank=True, null=True)

regulations = models.BooleanField(verbose_name='Regulamin', default=True
)

date_of_birth = models.DateField(verbose_name='Data urodzenia', blank=
True, null=True)

is_staff = models.BooleanField(_('staff status'), default=True, 
help_text=_('Designates whether the user can log into this admin site.'))

is_active = models.BooleanField(_('active'), default=True, 
help_text=_('Designates 
whether this user should be treated as active. Unselect this instead of 
deleting accounts.'))

date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)

objects = PartnersManager()


USERNAME_FIELD = 'login'

REQUIRED_FIELDS = []


def get_full_name(self):

return '%s %s' % (self.name, self.surname)


def get_short_name(self):

return self.login


def __unicode__(self):

return self.login


class Meta:

verbose_name = "Użytkownik"

verbose_name_plural = "Użytkownicy"

ordering = ['id']

get_latest_by = "id"



FORMS:

# -*- coding: utf-8 -*-

from django import forms

from django.contrib.auth.forms import ReadOnlyPasswordHashField

from core.models import Partners, Addresses

from django.forms import widgets

from django.utils.translation import ugettext_lazy as _


class PartnersCreationForm(forms.ModelForm):

"""A form for creating new users. Includes all the required fields, 
plus a repeated password."""

password1 = forms.CharField(label='Password', 
widget=forms.PasswordInput)

password2 = forms.CharField(label='Password confirmation', 
widget=forms.PasswordInput)


class Meta:

model = Partners

fields = ('login',)


def clean_password2(self):

# Check that the two password entries match

password1 = self.cleaned_data.get("pas

Re: Problem UserAdmin with GenericStackedInline in Django 1.5c2

2013-02-27 Thread carlos
Hi maybe you forget this

# Re-register UserAdminadmin.site.unregister(User)admin.site.register(User,
UserAdmin)

https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#extending-the-existing-user-model



On Wed, Feb 27, 2013 at 2:35 AM, Witold Greń  wrote:

> Hi, I have a problem UserAdmin with GenericStackedInline in Django 1.5c2.
>
> #model.py
>
> from django.contrib.auth.models import BaseUserManager, AbstractBaseUser,
> PermissionsMixin
>
> from django.conf import settings
>
> #etc...
>
>
> class Addresses(models.Model):
>
> """
>
> Dane adresowe.
>
> """
>
> name = models.CharField(max_length=200, verbose_name='Nazwa')
>
> street = models.CharField(max_length=200, verbose_name='Ulica')
>
> no_house = models.IntegerField(verbose_name='Numer budynku')
>
> no_local = models.IntegerField(verbose_name='Numer lokalu', blank=True,
> null=True)
>
> postal_code = models.CharField(max_length=200, verbose_name='Kod
> pocztowy')
>
> city = models.CharField(max_length=200, verbose_name='Miasto')
>
> region = models.CharField(max_length=200, verbose_name='Województwo')
>
> content_type = models.ForeignKey(ContentType,verbose_name='Rodzaj
> modelu', related_name="content_type_%(class)s",)
>
> object_id = models.PositiveIntegerField(verbose_name='Rodzaj obiekt',
> db_index=True)
>
> content_object = generic.GenericForeignKey('content_type', 'object_id'
> )
>
>
>
> class Partners(AbstractBaseUser, PermissionsMixin):
>
> """
>
> Użytkownik
>
> """
>
> login = models.CharField(max_length=200, verbose_name='Login',
> help_text=_('Required. 30 characters or fewer. Letters, numbers and
> @/./+/-/_ characters'), unique=True, db_index=True)
>
> company = models.BooleanField(verbose_name='Firma/Prywatny')
>
> company_name = models.CharField(max_length=200, verbose_name='Nazwa
> firmy', blank=True, null=True)
>
> www = models.URLField(verbose_name='Strona internetowa', blank=True,
> null=True)
>
> name = models.CharField(max_length=200, verbose_name='Imię', blank=
> True, null=True)
>
> surname = models.CharField(max_length=200, verbose_name='Nazwisko',
> blank=True, null=True)
>
> phone = models.CharField(max_length=200, verbose_name='Telefon',
> blank=True, null=True)
>
> email = models.EmailField(verbose_name='Email', blank=True, null=True)
>
> regulations = models.BooleanField(verbose_name='Regulamin', default=
> True)
>
> date_of_birth = models.DateField(verbose_name='Data urodzenia', blank=
> True, null=True)
>
> is_staff = models.BooleanField(_('staff status'), default=True,
> help_text=_('Designates whether the user can log into this admin site.'))
>
> is_active = models.BooleanField(_('active'), default=True,
> help_text=_('Designates whether this user should be treated as active.
> Unselect this instead of deleting accounts.'))
>
> date_joined = models.DateTimeField(_('date joined'), auto_now_add=True
> )
>
>
>
> objects = PartnersManager()
>
>
> USERNAME_FIELD = 'login'
>
> REQUIRED_FIELDS = []
>
>
> def get_full_name(self):
>
> return '%s %s' % (self.name, self.surname)
>
>
> def get_short_name(self):
>
> return self.login
>
>
> def __unicode__(self):
>
> return self.login
>
>
> class Meta:
>
> verbose_name = "Użytkownik"
>
> verbose_name_plural = "Użytkownicy"
>
> ordering = ['id']
>
> get_latest_by = "id"
>
>
>
> #admim.py:
>
> from django.contrib.auth.admin import UserAdmin
>
> from core.forms import PartnersChangeForm, PartnersCreationForm
>
> #etc...
>
>
> class AddressAdminInline(generic.GenericStackedInline):
>
> model = Addresses
>
> ct_field = "content_type"
>
> ct_fk_field = "object_id"
>
> extra = 1
>
> max_num = 1
>
>
>
> class PartnersAdmin(UserAdmin):
>
> form = PartnersChangeForm
>
> add_form = PartnersCreationForm
>
> list_display = ('login', 'name', 'surname', 'is_superuser')
>
> list_filter = ('is_superuser',)
>

Problem UserAdmin with GenericStackedInline in Django 1.5c2

2013-02-27 Thread Witold Greń
Hi, I have a problem UserAdmin with GenericStackedInline in Django 1.5c2.

#model.py

from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, 
PermissionsMixin

from django.conf import settings

#etc...


class Addresses(models.Model):

"""

Dane adresowe.

"""

name = models.CharField(max_length=200, verbose_name='Nazwa')

street = models.CharField(max_length=200, verbose_name='Ulica')

no_house = models.IntegerField(verbose_name='Numer budynku')

no_local = models.IntegerField(verbose_name='Numer lokalu', blank=True, 
null=True)

postal_code = models.CharField(max_length=200, verbose_name='Kod 
pocztowy')

city = models.CharField(max_length=200, verbose_name='Miasto')

region = models.CharField(max_length=200, verbose_name='Województwo')

content_type = models.ForeignKey(ContentType,verbose_name='Rodzaj 
modelu', related_name="content_type_%(class)s",)

object_id = models.PositiveIntegerField(verbose_name='Rodzaj obiekt', 
db_index=True)

content_object = generic.GenericForeignKey('content_type', 'object_id')



class Partners(AbstractBaseUser, PermissionsMixin):

"""

Użytkownik

"""

login = models.CharField(max_length=200, verbose_name='Login', 
help_text=_('Required. 30 characters or fewer. Letters, numbers and 
@/./+/-/_ characters'), unique=True, db_index=True)

company = models.BooleanField(verbose_name='Firma/Prywatny')

company_name = models.CharField(max_length=200, verbose_name='Nazwa 
firmy', blank=True, null=True)

www = models.URLField(verbose_name='Strona internetowa', blank=True, 
null=True)

name = models.CharField(max_length=200, verbose_name='Imię', blank=True, 
null=True)

surname = models.CharField(max_length=200, verbose_name='Nazwisko', 
blank=True, null=True)

phone = models.CharField(max_length=200, verbose_name='Telefon', blank=
True, null=True)

email = models.EmailField(verbose_name='Email', blank=True, null=True)

regulations = models.BooleanField(verbose_name='Regulamin', default=True
)

date_of_birth = models.DateField(verbose_name='Data urodzenia', blank=
True, null=True)

is_staff = models.BooleanField(_('staff status'), default=True, 
help_text=_('Designates whether the user can log into this admin site.'))

is_active = models.BooleanField(_('active'), default=True, 
help_text=_('Designates 
whether this user should be treated as active. Unselect this instead of 
deleting accounts.'))

date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)



objects = PartnersManager()


USERNAME_FIELD = 'login'

REQUIRED_FIELDS = []


def get_full_name(self):

return '%s %s' % (self.name, self.surname)


def get_short_name(self):

return self.login


def __unicode__(self):

return self.login


class Meta:

verbose_name = "Użytkownik"

verbose_name_plural = "Użytkownicy"

ordering = ['id']

get_latest_by = "id"



#admim.py:

from django.contrib.auth.admin import UserAdmin

from core.forms import PartnersChangeForm, PartnersCreationForm

#etc...


class AddressAdminInline(generic.GenericStackedInline):

model = Addresses

ct_field = "content_type"

ct_fk_field = "object_id"

extra = 1

max_num = 1



class PartnersAdmin(UserAdmin):

form = PartnersChangeForm

add_form = PartnersCreationForm

list_display = ('login', 'name', 'surname', 'is_superuser')

list_filter = ('is_superuser',)

save_on_top = True

inlines = [

AddressAdminInline

]

fieldsets = (

(None, {

'fields': ('login', 'password')

}),

('Personal info', {

'fields': ('email', 'www', 'date_of_birth')

}),

('Personal info 2', {

'fields': ('company','company_name', 'name', 'surname', 'phone', 
'regulations' )

}),

('Permissions', {

'fields': ('is_superuser', 'is_staff', 'is_active', 'groups', 
'user_permissions')

}),

('Important dates', {

'fields': ('last_login',)

}),

)

add_fieldsets = (

(None, {

'classes': ('wi