mirror of
https://github.com/jazzband/django-ddp.git
synced 2026-05-26 16:04:08 +00:00
Cleanup Collection.user_ids_for_object(obj) method.
* Removed `include_superusers` argument, replaced with class level `always_allow_superusers` attribute. * Removed unused `base_qs` argument. * Don't test for obj being a primary key when running query since obj is assumed to be an object in the prior lines of code anyway.
This commit is contained in:
parent
789fe1b9e7
commit
dfd52ebb32
1 changed files with 10 additions and 5 deletions
15
dddp/api.py
15
dddp/api.py
|
|
@ -197,6 +197,7 @@ class Collection(APIMixin):
|
||||||
qs_filter = None
|
qs_filter = None
|
||||||
order_by = None
|
order_by = None
|
||||||
user_rel = None
|
user_rel = None
|
||||||
|
always_allow_superusers = True
|
||||||
|
|
||||||
def get_queryset(self, base_qs=None):
|
def get_queryset(self, base_qs=None):
|
||||||
"""Return a filtered, ordered queryset for this collection."""
|
"""Return a filtered, ordered queryset for this collection."""
|
||||||
|
|
@ -237,9 +238,9 @@ class Collection(APIMixin):
|
||||||
)
|
)
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
def user_ids_for_object(self, obj, base_qs=None, include_superusers=True):
|
def user_ids_for_object(self, obj):
|
||||||
"""Find user IDs related to object/pk in queryset."""
|
"""Find user IDs related to object/pk in queryset."""
|
||||||
qs = base_qs or self.queryset
|
qs = self.queryset
|
||||||
if self.user_rel:
|
if self.user_rel:
|
||||||
user_ids = set()
|
user_ids = set()
|
||||||
if obj.pk is None:
|
if obj.pk is None:
|
||||||
|
|
@ -253,7 +254,7 @@ class Collection(APIMixin):
|
||||||
in enumerate(user_rels)
|
in enumerate(user_rels)
|
||||||
}
|
}
|
||||||
|
|
||||||
if include_superusers:
|
if self.always_allow_superusers:
|
||||||
user_ids.update(
|
user_ids.update(
|
||||||
get_user_model().objects.filter(
|
get_user_model().objects.filter(
|
||||||
is_superuser=True, is_active=True,
|
is_superuser=True, is_active=True,
|
||||||
|
|
@ -261,8 +262,12 @@ class Collection(APIMixin):
|
||||||
)
|
)
|
||||||
|
|
||||||
for rel_user_ids in qs.filter(
|
for rel_user_ids in qs.filter(
|
||||||
pk=hasattr(obj, 'pk') and obj.pk or obj,
|
pk=obj.pk,
|
||||||
).annotate(**user_rel_map).values_list(*user_rel_map.keys()).get():
|
).annotate(
|
||||||
|
**user_rel_map
|
||||||
|
).values_list(
|
||||||
|
*user_rel_map.keys()
|
||||||
|
).get():
|
||||||
user_ids.update(rel_user_ids)
|
user_ids.update(rel_user_ids)
|
||||||
user_ids.difference_update([None])
|
user_ids.difference_update([None])
|
||||||
return user_ids
|
return user_ids
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue