You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

121 lines
3.6 KiB

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.translation import ugettext_lazy as _
from import_export import resources
from jet.filters import DateRangeFilter
from rangefilter.filter import DateTimeRangeFilter
from core.admin import SafeModelAdmin
from referral.admin import ReferralAdminInline
from .forms import UserChangeForm, UserCreationForm
from .models import Profile, Company, Group
class CustomUserResource(resources.ModelResource):
class Meta:
model = get_user_model()
fields = ('id', 'username', 'email', 'status',)
export_order = (
'id', 'username', 'email', 'status'
)
@admin.register(get_user_model())
class UserAdmin(SafeModelAdmin, BaseUserAdmin):
inlines = (
ReferralAdminInline,
)
fieldsets = (
(None, {'fields': ('email', 'username', 'password', 'referral_user')}),
(_('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'
),
}),
)
list_display = ('email', 'username', 'status')
list_filter = (
'status', 'is_superuser', 'groups',
('confirmed_at', DateRangeFilter),
('create_at', DateRangeFilter),
('updated_at', DateTimeRangeFilter),
)
search_fields = ('username', 'first_name', 'last_name', 'email')
ordering = ('username',)
list_editable = ('status',)
filter_horizontal = ()
form = UserChangeForm
add_form = UserCreationForm
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):
search_fields = ('first_name', 'last_name', 'phone')
list_display = ('user', 'first_name', 'last_name', 'phone')
list_filter = (
('birthday', DateRangeFilter),
)
exclude = ('status',)
def has_delete_permission(self, request, obj=None):
return False
def has_add_permission(self, request):
return False
@admin.register(Company)
class CompanyAdmin(admin.ModelAdmin):
search_fields = ('company_name', 'inn', 'ogrn'),
list_display = ('user', 'company_name', 'type')
list_filter = ('type',)
def has_delete_permission(self, request, obj=None):
return False
def has_add_permission(self, request):
return False
admin.site.unregister(GroupBase)
@admin.register(Group)
class GroupAdmin(GroupAdmin):
pass