Created
July 20, 2016 16:06
-
-
Save winzard/6be9a04d3f1d9d50abd043d0108123f3 to your computer and use it in GitHub Desktop.
Немножко примеров комментирования
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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