@@ -31,7 +31,7 @@ def users_to_tuple(users):
31
31
return users_to_tuple (User .objects .all ())
32
32
33
33
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 :
35
35
all_friends .append (current_user )
36
36
37
37
return users_to_tuple (all_friends )
@@ -47,11 +47,22 @@ class OwnerAdmin(admin.ModelAdmin):
47
47
readonly_fields = ['owner' ]
48
48
list_filter = []
49
49
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
+
50
62
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
53
64
54
- if not (request .user .is_superuser or is_owner_friend ):
65
+ if not (request .user .is_superuser or is_filter_by_owner ):
55
66
queryset = queryset .filter (owner__id = request .user .id )
56
67
57
68
return super ().get_search_results (request , queryset , search_term )
@@ -61,15 +72,6 @@ def save_model(self, request, obj, form, change):
61
72
obj .owner = request .user
62
73
super ().save_model (request , obj , form , change )
63
74
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
-
73
75
def has_change_permission (self , request , obj = None ):
74
76
return super ().has_change_permission (request , obj ) and self ._is_owner (request .user , obj )
75
77
0 commit comments