diff options
author | Stevan Radaković <stevan.radakovic@linaro.org> | 2015-11-17 17:42:51 +0100 |
---|---|---|
committer | Stevan Radaković <stevan.radakovic@linaro.org> | 2015-11-17 17:44:24 +0100 |
commit | eb51f4dccc888264955bf2064cadc7c7d02b3617 (patch) | |
tree | 16630daa815d01adce1cf758007be71d748de101 | |
parent | 805c429ad676aaeafbafeb90113ec67f2f20e631 (diff) |
Add django1.6 support for custom QuerySets.
django 1.6 does not support from_queryset method which was
extensively used for new query_app. Also, QuerySet object has
changed locations between django 1.6 and 1.7.
See card https://projects.linaro.org/browse/LAVA-387
Change-Id: I68b3750b7c903f573a8d20d36b94a5ee97735b23
-rw-r--r-- | django_restricted_resource/managers.py | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/django_restricted_resource/managers.py b/django_restricted_resource/managers.py index 96c1295..d7b3363 100644 --- a/django_restricted_resource/managers.py +++ b/django_restricted_resource/managers.py @@ -20,6 +20,8 @@ Module with model manager for RestrictedResource """ +import django + from django.contrib.auth.models import (User, AnonymousUser, Group) from django.db.models import Q from django.db import models @@ -27,7 +29,13 @@ from django.db import models from django_restricted_resource.utils import filter_bogus_users -class RestrictedResourceQuerySet(models.QuerySet): +if django.VERSION < (1, 7): + QuerySet = models.query.QuerySet +else: + QuerySet = models.QuerySet + + +class RestrictedResourceQuerySet(QuerySet): """ Model manager for RestrictedResource and subclasses that has additional methods. @@ -116,6 +124,35 @@ class RestrictedResourceQuerySet(models.QuerySet): assert group is not None return self.filter(group=group) +if django.VERSION >= (1, 7): + + RestrictedResourceManager = models.Manager.from_queryset( + RestrictedResourceQuerySet) + +else: + # TODO: Remove once the support for django 1.6 has been dropped. + + class RestrictedResourceManager(models.Manager): + def get_query_set(self): + return RestrictedResourceQuerySet(self.model, using=self._db) + + def owned_by_principal(self, principal): + return self.get_query_set().owned_by_principal(principal) + + def accessible_by_principal(self, principal): + return self.get_query_set().accessible_by_principal(principal) + + def accessible_by_anyone(self): + return self.get_query_set().accessible_by_anyone() + + def _accessible_by_user(self, user): + return self.get_query_set()._accessible_by_user(user) + + def _accessible_by_group(self, group): + return self.get_query_set()._accessible_by_group(group) + + def _owned_by_user(self, user): + return self.get_query_set()._owned_by_user(user) -RestrictedResourceManager = models.Manager.from_queryset( - RestrictedResourceQuerySet) + def _owned_by_group(self, group): + return self.get_query_set()._owned_by_group(group) |