Skip to content

Commit b82788f

Browse files
committed
improve: OwnerAdmin
1 parent d8e407b commit b82788f

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

main/admin.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def users_to_tuple(users):
3131
return users_to_tuple(User.objects.all())
3232

3333
all_friends = list(current_user.friends.all())
34-
if len(all_friends) > 0:
34+
if len(all_friends) > 0 and current_user not in all_friends:
3535
all_friends.append(current_user)
3636

3737
return users_to_tuple(all_friends)
@@ -47,11 +47,22 @@ class OwnerAdmin(admin.ModelAdmin):
4747
readonly_fields = ['owner']
4848
list_filter = []
4949

50+
def get_queryset(self, request):
51+
queryset = super().get_queryset(request)
52+
current_user = request.user
53+
if current_user.is_superuser:
54+
return queryset
55+
56+
friends = list(current_user.friends.all())
57+
if current_user not in friends:
58+
friends.append(current_user)
59+
60+
return queryset.filter(owner__in=friends)
61+
5062
def get_search_results(self, request, queryset, search_term):
51-
owner_username = request.GET.get('owner')
52-
is_owner_friend = request.user.friends.filter(username=owner_username).exists()
63+
is_filter_by_owner = 'owner' in request.GET
5364

54-
if not (request.user.is_superuser or is_owner_friend):
65+
if not (request.user.is_superuser or is_filter_by_owner):
5566
queryset = queryset.filter(owner__id=request.user.id)
5667

5768
return super().get_search_results(request, queryset, search_term)
@@ -61,15 +72,6 @@ def save_model(self, request, obj, form, change):
6172
obj.owner = request.user
6273
super().save_model(request, obj, form, change)
6374

64-
def has_view_permission(self, request, obj=None):
65-
if obj is not None:
66-
is_owner_friend = request.user.friends.filter(pk=obj.owner_id).exists()
67-
else:
68-
is_owner_friend = False
69-
70-
return super().has_view_permission(request, obj) \
71-
and (self._is_owner(request.user, obj) or is_owner_friend)
72-
7375
def has_change_permission(self, request, obj=None):
7476
return super().has_change_permission(request, obj) and self._is_owner(request.user, obj)
7577

0 commit comments

Comments
 (0)