From 895abbcc0e1abe7573bee7d56202391e8ae2b0bc Mon Sep 17 00:00:00 2001 From: Max Yakovenko Date: Tue, 31 Jul 2018 11:26:24 +0300 Subject: [PATCH] reffactor logic for model creation and update --- accounts_ext/admin.py | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/accounts_ext/admin.py b/accounts_ext/admin.py index a612a06..7bb804f 100644 --- a/accounts_ext/admin.py +++ b/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):