New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Jkmarx/upgrade guardian #2936
Jkmarx/upgrade guardian #2936
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #2936 +/- ##
==========================================
+ Coverage 59.38% 59.6% +0.21%
==========================================
Files 435 435
Lines 27595 27777 +182
Branches 1273 1273
==========================================
+ Hits 16387 16556 +169
- Misses 11208 11221 +13
Continue to review full report at Codecov.
|
refinery/core/views.py
Outdated
request.user, 'dataset' | ||
).order_by('-modification_date') | ||
query_set = DataSet.objects.all().order_by('-modification_date') | ||
user_data_sets = get_objects_for_user(request.user, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think you need to query to get query_set
beforehand.
get_objects_for_user
with "core.read_meta_dataset"
will return a queryset that you can then do the .order_by('-modification_date')
on.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@scottx611x Adding the klass=queryset sped up the performance. Where we do the order_by doesn't matter.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jkmarx I don't think that the adding of klass=query_set
sped up performance. I believe that get_objects_for_user
is just a more efficient implementation than get_resources_for_user
and the performance gains are a result of that switch.
Adding klass=query_set
is redundant in this case since guardian can derive what it should be looking for from the "core.read_meta_dataset"
perms that we provide.
The first query_set
lookup can be omitted along with klass=query_set
and performance would remain the same.
- old
get_resources_for_user
>>> from django.db import connection
>>> from core.utils import get_resources_for_user
>>> get_resources_for_user(User.objects.last(), 'dataset').order_by('-modification_date')
[<DataSet: 13186: KBM-7 cells reprogrammed to induced pluripotent like state (iPS) - scott - >, <DataSet: 7237: flk1:gfp in zebrafish cells, 10 somites - scott - >, <DataSet: 7169: cloche m39 deletion allele mutants 36 hours (zebrafish) - scott - >, <DataSet: hg19-metadata-local - scott - Cool>]
>>> connection.queries
[{u'time': u'0.001', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 1'}, {u'time': u'0.001', u'sql': u'SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" INNER JOIN "auth_permission" ON ( "django_content_type"."id" = "auth_permission"."content_type_id" ) WHERE ("auth_permission"."codename" = \'read_meta_dataset\' AND "django_content_type"."app_label" = \'core\')'}, {u'time': u'0.000', u'sql': u'SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE ("django_content_type"."model" = \'dataset\' AND "django_content_type"."app_label" = \'core\')'}, {u'time': u'0.001', u'sql': u'SELECT "guardian_userobjectpermission"."object_pk" FROM "guardian_userobjectpermission" INNER JOIN "auth_permission" ON ( "guardian_userobjectpermission"."permission_id" = "auth_permission"."id" ) WHERE ("guardian_userobjectpermission"."user_id" = 3 AND "auth_permission"."content_type_id" = 50 AND "auth_permission"."codename" IN (\'read_meta_dataset\'))'}, {u'time': u'0.001', u'sql': u'SELECT "guardian_groupobjectpermission"."object_pk" FROM "guardian_groupobjectpermission" INNER JOIN "auth_group" ON ( "guardian_groupobjectpermission"."group_id" = "auth_group"."id" ) INNER JOIN "auth_user_groups" ON ( "auth_group"."id" = "auth_user_groups"."group_id" ) INNER JOIN "auth_permission" ON ( "guardian_groupobjectpermission"."permission_id" = "auth_permission"."id" ) WHERE ("auth_user_groups"."user_id" = 3 AND "auth_permission"."codename" IN (\'read_meta_dataset\') AND "auth_permission"."content_type_id" = 50)'}, {u'time': u'0.001', u'sql': u'SELECT "core_dataset"."id", "core_dataset"."uuid", "core_dataset"."name", "core_dataset"."summary", "core_dataset"."creation_date", "core_dataset"."modification_date", "core_dataset"."description", "core_dataset"."slug", "core_dataset"."file_count", "core_dataset"."file_size", "core_dataset"."accession", "core_dataset"."accession_source", "core_dataset"."title" FROM "core_dataset" WHERE ("core_dataset"."id" IN (120, 121, 117, 118, 115) OR "core_dataset"."id" IN (1)) ORDER BY "core_dataset"."modification_date" DESC LIMIT 21'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.005', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'120\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'120\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'120\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'120\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'118\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'118\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'118\')'}, {u'time': u'0.001', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'118\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'117\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'117\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'117\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'117\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.001', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'115\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'115\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}, {u'time': u'0.000', u'sql': u'SELECT "auth_permission"."id", "auth_permission"."name", "auth_permission"."content_type_id", "auth_permission"."codename" FROM "auth_permission" INNER JOIN "django_content_type" ON ( "auth_permission"."content_type_id" = "django_content_type"."id" ) WHERE "auth_permission"."codename" = \'add_dataset\' ORDER BY "django_content_type"."app_label" ASC, "django_content_type"."model" ASC, "auth_permission"."codename" ASC LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT COUNT(*) AS "__count" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'115\')'}, {u'time': u'0.000', u'sql': u'SELECT "guardian_userobjectpermission"."id", "guardian_userobjectpermission"."permission_id", "guardian_userobjectpermission"."content_type_id", "guardian_userobjectpermission"."object_pk", "guardian_userobjectpermission"."user_id" FROM "guardian_userobjectpermission" WHERE ("guardian_userobjectpermission"."permission_id" = 158 AND "guardian_userobjectpermission"."content_type_id" = 50 AND "guardian_userobjectpermission"."object_pk" = \'115\') LIMIT 1'}, {u'time': u'0.000', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 3'}]
>>> len(connection.queries)
38
get_objects_for_user
w/klass=query_set
>>> from django.db import connection
>>> from guardian.shortcuts import get_objects_for_user
>>> query_set = DataSet.objects.all().order_by('-modification_date')
>>> user_data_sets = get_objects_for_user(User.objects.last(), "core.read_meta_dataset", klass=query_set, accept_global_perms=False)
>>> connection.queries
[{u'time': u'0.001', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 1'}, {u'time': u'0.001', u'sql': u'SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" INNER JOIN "auth_permission" ON ( "django_content_type"."id" = "auth_permission"."content_type_id" ) WHERE ("auth_permission"."codename" = \'read_meta_dataset\' AND "django_content_type"."app_label" = \'core\')'}, {u'time': u'0.000', u'sql': u'SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE ("django_content_type"."model" = \'dataset\' AND "django_content_type"."app_label" = \'core\')'}, {u'time': u'0.007', u'sql': u'SELECT "guardian_userobjectpermission"."object_pk" FROM "guardian_userobjectpermission" INNER JOIN "auth_permission" ON ( "guardian_userobjectpermission"."permission_id" = "auth_permission"."id" ) WHERE ("guardian_userobjectpermission"."user_id" = 3 AND "auth_permission"."content_type_id" = 50 AND "auth_permission"."codename" IN (\'read_meta_dataset\'))'}, {u'time': u'0.007', u'sql': u'SELECT "guardian_groupobjectpermission"."object_pk" FROM "guardian_groupobjectpermission" INNER JOIN "auth_group" ON ( "guardian_groupobjectpermission"."group_id" = "auth_group"."id" ) INNER JOIN "auth_user_groups" ON ( "auth_group"."id" = "auth_user_groups"."group_id" ) INNER JOIN "auth_permission" ON ( "guardian_groupobjectpermission"."permission_id" = "auth_permission"."id" ) WHERE ("auth_user_groups"."user_id" = 3 AND "auth_permission"."codename" IN (\'read_meta_dataset\') AND "auth_permission"."content_type_id" = 50)'}]
>>> len(connection.queries)
5
get_objects_for_user
sansklass
>>> from django.db import connection
>>> from guardian.shortcuts import get_objects_for_user
>>> user_data_sets = get_objects_for_user(User.objects.last(), "core.read_meta_dataset", accept_global_perms=False)
>>> connection.queries
[{u'time': u'0.001', u'sql': u'SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 1'}, {u'time': u'0.001', u'sql': u'SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" INNER JOIN "auth_permission" ON ( "django_content_type"."id" = "auth_permission"."content_type_id" ) WHERE ("auth_permission"."codename" = \'read_meta_dataset\' AND "django_content_type"."app_label" = \'core\')'}, {u'time': u'0.000', u'sql': u'SELECT "django_content_type"."id", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE ("django_content_type"."model" = \'dataset\' AND "django_content_type"."app_label" = \'core\')'}, {u'time': u'0.001', u'sql': u'SELECT "guardian_userobjectpermission"."object_pk" FROM "guardian_userobjectpermission" INNER JOIN "auth_permission" ON ( "guardian_userobjectpermission"."permission_id" = "auth_permission"."id" ) WHERE ("guardian_userobjectpermission"."user_id" = 3 AND "auth_permission"."content_type_id" = 50 AND "auth_permission"."codename" IN (\'read_meta_dataset\'))'}, {u'time': u'0.001', u'sql': u'SELECT "guardian_groupobjectpermission"."object_pk" FROM "guardian_groupobjectpermission" INNER JOIN "auth_group" ON ( "guardian_groupobjectpermission"."group_id" = "auth_group"."id" ) INNER JOIN "auth_user_groups" ON ( "auth_group"."id" = "auth_user_groups"."group_id" ) INNER JOIN "auth_permission" ON ( "guardian_groupobjectpermission"."permission_id" = "auth_permission"."id" ) WHERE ("auth_user_groups"."user_id" = 3 AND "auth_permission"."codename" IN (\'read_meta_dataset\') AND "auth_permission"."content_type_id" = 50)'}]
>>> len(connection.queries)
5
refinery/core/views.py
Outdated
user_data_sets = get_objects_for_user(request.user, | ||
"core.read_meta_dataset", | ||
accept_global_perms=False)\ | ||
.order_by('-modification_date') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if github is doing some odd spacing, but could we clean this up if thats not the case?
Resolves #2935
This came about when researching way to improve the performance for the data set v2 api. The get_objects_for_users performance improved in the 1.4.6 release plus it supports querysets. Nothing overly dramatic, but it was a slight improvement.