reffactor logic for model creation and update

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent 8c7085338a
commit 895abbcc0e
  1. 39
      accounts_ext/admin.py

@ -2,12 +2,14 @@ from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group as GroupBase
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin, GroupAdmin
from django.urls import reverse_lazy
from django.utils.html import format_html, escape
from django.utils.translation import ugettext_lazy as _
from import_export import resources
from jet.filters import RelatedFieldAjaxListFilter, DateRangeFilter
from core.admin import SafeModelAdmin
from referral.admin import RefarralAdminInline
from referral.admin import ReferralAdminInline
from .forms import UserChangeForm, UserCreationForm
from .models import Profile, Company, Group
@ -24,20 +26,24 @@ class CustomUserResource(resources.ModelResource):
@admin.register(get_user_model())
class UserAdmin(SafeModelAdmin, BaseUserAdmin):
inlines = [
RefarralAdminInline
]
inlines = (
ReferralAdminInline,
)
fieldsets = (
(None, {'fields': ('email', 'username', 'password','referral_user')}),
(None, {'fields': ('email', 'username', 'password','referral_code')}),
(_('Permissions'), {'fields': ('status', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'confirmed_at')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2', 'referral_user', 'status', 'is_superuser'),
'fields': (
'username', 'email', 'password1', 'password2', 'referral_code', 'status', 'is_superuser'
),
}),
)
list_display = ('email', 'username', 'status')
@ -47,6 +53,7 @@ class UserAdmin(SafeModelAdmin, BaseUserAdmin):
('create_at', DateRangeFilter),
('updated_at', DateRangeFilter),
)
search_fields = ('username', 'first_name', 'last_name', 'email')
ordering = ('username',)
list_editable = ('status',)
@ -56,6 +63,26 @@ class UserAdmin(SafeModelAdmin, BaseUserAdmin):
resource_class = CustomUserResource
def get_inline_instances(self, request, obj=None):
add_path = reverse_lazy(
'admin:{}_{}_add'.format(
self.model._meta.app_label,
self.model._meta.object_name.lower()
)
)
if request.path == add_path:
self.inlines = ()
else:
self.inlines = (
ReferralAdminInline,
)
return super().get_inline_instances(request, obj)
def get_field_queryset(self, db, db_field, request):
queryset = super().get_field_queryset(db, db_field, request)
if db_field.name == "referral_code":
queryset = queryset.exclude(referral_owner__id=request.resolver_match.kwargs.get('object_id', None))
return queryset
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):

Loading…
Cancel
Save