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 import get_user_model
from django.contrib.auth.models import Group as GroupBase from django.contrib.auth.models import Group as GroupBase
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin, GroupAdmin 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 django.utils.translation import ugettext_lazy as _
from import_export import resources from import_export import resources
from jet.filters import RelatedFieldAjaxListFilter, DateRangeFilter from jet.filters import RelatedFieldAjaxListFilter, DateRangeFilter
from core.admin import SafeModelAdmin from core.admin import SafeModelAdmin
from referral.admin import RefarralAdminInline from referral.admin import ReferralAdminInline
from .forms import UserChangeForm, UserCreationForm from .forms import UserChangeForm, UserCreationForm
from .models import Profile, Company, Group from .models import Profile, Company, Group
@ -24,20 +26,24 @@ class CustomUserResource(resources.ModelResource):
@admin.register(get_user_model()) @admin.register(get_user_model())
class UserAdmin(SafeModelAdmin, BaseUserAdmin): class UserAdmin(SafeModelAdmin, BaseUserAdmin):
inlines = [
RefarralAdminInline inlines = (
] ReferralAdminInline,
)
fieldsets = ( fieldsets = (
(None, {'fields': ('email', 'username', 'password','referral_user')}), (None, {'fields': ('email', 'username', 'password','referral_code')}),
(_('Permissions'), {'fields': ('status', 'is_superuser', (_('Permissions'), {'fields': ('status', 'is_superuser',
'groups', 'user_permissions')}), 'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'confirmed_at')}), (_('Important dates'), {'fields': ('last_login', 'confirmed_at')}),
) )
add_fieldsets = ( add_fieldsets = (
(None, { (None, {
'classes': ('wide',), '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') list_display = ('email', 'username', 'status')
@ -47,6 +53,7 @@ class UserAdmin(SafeModelAdmin, BaseUserAdmin):
('create_at', DateRangeFilter), ('create_at', DateRangeFilter),
('updated_at', DateRangeFilter), ('updated_at', DateRangeFilter),
) )
search_fields = ('username', 'first_name', 'last_name', 'email') search_fields = ('username', 'first_name', 'last_name', 'email')
ordering = ('username',) ordering = ('username',)
list_editable = ('status',) list_editable = ('status',)
@ -56,6 +63,26 @@ class UserAdmin(SafeModelAdmin, BaseUserAdmin):
resource_class = CustomUserResource 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) @admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin): class ProfileAdmin(admin.ModelAdmin):

Loading…
Cancel
Save