@@ -175,18 +175,19 @@ def has_user_permission(self, user, permission=''):
175
175
Custom method to determine whether a user has been granted a permission
176
176
to access the folder (perhaps through one of its groups).
177
177
"""
178
+ grp_qs = user .groups .all ()
179
+
178
180
if not permission :
179
- lookup = models .Q (shared_folders = self ) | models .Q (groups__shared_folders = self )
180
- qs = User .objects .filter (username = user .username ).filter (lookup )
181
+ if FolderUserPermission .objects .filter (folder = self , user = user ).exists ():
182
+ return True
183
+ qs = FolderGroupPermission .objects .filter (folder = self , group__in = grp_qs )
181
184
else :
182
185
p = validate_permission (permission )
183
186
if FolderUserPermission .objects .filter (folder = self , user = user ,
184
187
permission = p ).exists ():
185
188
return True
186
-
187
- user_grp_ids = [g .id for g in user .groups .all ()]
188
189
qs = FolderGroupPermission .objects .filter (folder = self , permission = p ,
189
- group__pk__in = user_grp_ids )
190
+ group__in = grp_qs )
190
191
return qs .exists ()
191
192
192
193
def grant_group_permission (self , group , permission ):
@@ -593,18 +594,19 @@ def has_user_permission(self, user, permission=''):
593
594
Custom method to determine whether a user has been granted a permission to
594
595
access the file (perhaps through one of its groups).
595
596
"""
597
+ grp_qs = user .groups .all ()
598
+
596
599
if not permission :
597
- lookup = models .Q (shared_files = self ) | models .Q (groups__shared_files = self )
598
- qs = User .objects .filter (username = user .username ).filter (lookup )
600
+ if FileUserPermission .objects .filter (file = self , user = user ).exists ():
601
+ return True
602
+ qs = FileGroupPermission .objects .filter (file = self , group__in = grp_qs )
599
603
else :
600
604
p = validate_permission (permission )
601
605
if FileUserPermission .objects .filter (file = self , user = user ,
602
606
permission = p ).exists ():
603
607
return True
604
-
605
- user_grp_ids = [g .id for g in user .groups .all ()]
606
608
qs = FileGroupPermission .objects .filter (file = self , permission = p ,
607
- group__pk__in = user_grp_ids )
609
+ group__in = grp_qs )
608
610
return qs .exists ()
609
611
610
612
def grant_group_permission (self , group , permission ):
@@ -879,19 +881,19 @@ def has_user_permission(self, user, permission=''):
879
881
Custom method to determine whether a user has been granted a permission to
880
882
access the link file (perhaps through one of its groups).
881
883
"""
884
+ grp_qs = user .groups .all ()
885
+
882
886
if not permission :
883
- lookup = models . Q ( shared_link_files = self ) | models . Q (
884
- groups__shared_link_files = self )
885
- qs = User .objects .filter (username = user . username ). filter ( lookup )
887
+ if LinkFileUserPermission . objects . filter ( link_file = self , user = user ). exists ():
888
+ return True
889
+ qs = LinkFileGroupPermission .objects .filter (link_file = self , group__in = grp_qs )
886
890
else :
887
891
p = validate_permission (permission )
888
892
if LinkFileUserPermission .objects .filter (link_file = self , user = user ,
889
893
permission = p ).exists ():
890
894
return True
891
-
892
- user_grp_ids = [g .id for g in user .groups .all ()]
893
895
qs = LinkFileGroupPermission .objects .filter (link_file = self , permission = p ,
894
- group__pk__in = user_grp_ids )
896
+ group__in = grp_qs )
895
897
return qs .exists ()
896
898
897
899
def grant_group_permission (self , group , permission ):
0 commit comments