Skip to content

Instantly share code, notes, and snippets.

@winzard
Created July 20, 2016 16:06
Show Gist options
  • Save winzard/6be9a04d3f1d9d50abd043d0108123f3 to your computer and use it in GitHub Desktop.
Save winzard/6be9a04d3f1d9d50abd043d0108123f3 to your computer and use it in GitHub Desktop.
Немножко примеров комментирования
class StaffUserAdmin(UserAdmin):
"""
Переопределяем админку для работы с персоналом Кристалла
"""
has_absolute_url = false
list_display = (fio_name, groups, phone, 'email', 'username')
# list_filter = ('is_staff', 'is_superuser', 'is_active',)
list_filter = []
search_fields = ('first_name', 'last_name', 'username', 'email')
form = UserChangeForm
add_form = StaffCreationForm
change_password_form = AdminPasswordChangeForm
inlines = [StaffProfileInline, ]
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2')}
),
)
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
"""
Выводим список групп пользователей
:param db_field: нас интересует только groups
:param request:
:param kwargs: подставляем queryset в кварги
:return:
"""
if not request.user.is_superuser:
if db_field.name == "groups":
self_group = request.user.groups.all()
gpin = GroupRelation.objects.filter(pk__in=self_group).values_list('subordinated__pk', flat=True)
kwargs["queryset"] = GroupRelation.objects.filter(Q(pk__in=gpin) | Q(pk__in=self_group))
return super(StaffUserAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
def get_queryset(self, request):
"""
Фильтруем сотрудников по подчиненным, чтобы не выводились люди не из своего отдела
:param request:
:return:
"""
super_qs = super(StaffUserAdmin, self).get_queryset(request).filter(is_staff=True)
if request.user.is_superuser:
return super_qs
self_group = request.user.groups.all()
gpin = GroupRelation.objects.filter(pk__in=self_group).values_list('subordinated__pk', flat=True)
return super_qs.filter(is_active=True, is_superuser=False).filter(
Q(groups__in=gpin) | Q(groups__in=self_group) | Q(groups__isnull=True)).distinct()
readonly_fields = ['is_superuser', 'user_permissions', 'last_login', 'date_joined']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment