From f3a38f5877ef21bb868083613694d0a4b29ac900 Mon Sep 17 00:00:00 2001 From: dotsbb Date: Wed, 18 Sep 2013 13:12:34 +0200 Subject: [PATCH 1/3] ORM Query refactoring access.py One query instead of two queries to database. --- rosetta/access.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/rosetta/access.py b/rosetta/access.py index b3641bc..b51c27c 100644 --- a/rosetta/access.py +++ b/rosetta/access.py @@ -28,9 +28,4 @@ def is_superuser_staff_or_in_translators_group(user): elif user.is_superuser and user.is_staff: return True else: - try: - from django.contrib.auth.models import Group - translators = Group.objects.get(name='translators') - return translators in user.groups.all() - except Group.DoesNotExist: - return False + return user.groups.filter(name="translators").exists() From 7afdffb34ab7a3c7e99c273cdf7b6d0b363cd521 Mon Sep 17 00:00:00 2001 From: Alexey Subbotin Date: Wed, 18 Sep 2013 13:37:16 +0200 Subject: [PATCH 2/3] just single quotes --- rosetta/access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosetta/access.py b/rosetta/access.py index b51c27c..6cc511f 100644 --- a/rosetta/access.py +++ b/rosetta/access.py @@ -28,4 +28,4 @@ def is_superuser_staff_or_in_translators_group(user): elif user.is_superuser and user.is_staff: return True else: - return user.groups.filter(name="translators").exists() + return user.groups.filter(name='translators').exists() From a5ea8cc35e40f985215182590c2647def10c0e31 Mon Sep 17 00:00:00 2001 From: Marco Bonetti Date: Wed, 18 Sep 2013 14:38:48 +0200 Subject: [PATCH 3/3] Small refactoring of tests --- CHANGES | 1 + rosetta/conf/settings.py | 4 ++++ rosetta/tests/tests.py | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 0968efe..0f6e49b 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,7 @@ Version 0.7.3 * Missing context variable in catalog list (Issue #87 - Thanks @kunitoki) * Added support for Yandex translation API (Issue #89 - Thanks @BlackWizard) See supported languages and limitations here: https://github.com/mbi/django-rosetta/pull/89 * Removed support for the signed_cookies SESSION_ENGINE + SessionRosettaStorage in Django 1.6, because serialization of POFiles would fail +* Simplified the group membership test (Issue #90 - Thanks @dotsbb) Version 0.7.2 ------------- diff --git a/rosetta/conf/settings.py b/rosetta/conf/settings.py index 0c9ace3..38df0db 100644 --- a/rosetta/conf/settings.py +++ b/rosetta/conf/settings.py @@ -60,3 +60,7 @@ STORAGE_CLASS = getattr(settings, 'ROSETTA_STORAGE_CLASS', 'rosetta.storage.Cach ROSETTA_CACHE_NAME = getattr(settings, 'ROSETTA_CACHE_NAME', 'default' if settings.CACHES.get('rosetta', None) is None else 'rosetta') + +# Require users to be authenticated (and Superusers or in group "translators"). +# Set this to False at your own risk +ROSETTA_REQUIRES_AUTH = getattr(settings, 'ROSETTA_REQUIRES_AUTH', True) diff --git a/rosetta/tests/tests.py b/rosetta/tests/tests.py index 2a126e1..d731883 100644 --- a/rosetta/tests/tests.py +++ b/rosetta/tests/tests.py @@ -57,6 +57,7 @@ class RosettaTestCase(TestCase): self.__session_engine = settings.SESSION_ENGINE self.__storage_class = rosetta_settings.STORAGE_CLASS + self.__require_auth = rosetta_settings.ROSETTA_REQUIRES_AUTH shutil.copy(self.dest_file, self.dest_file + '.orig') @@ -64,6 +65,7 @@ class RosettaTestCase(TestCase): settings.LANGUAGES = self.__old_settings_languages settings.SESSION_ENGINE = self.__session_engine rosetta_settings.STORAGE_CLASS = self.__storage_class + rosetta_settings.ROSETTA_REQUIRES_AUTH = self.__require_auth shutil.move(self.dest_file + '.orig', self.dest_file) def test_1_ListLoading(self): @@ -581,7 +583,7 @@ class RosettaTestCase(TestCase): r = self.client.get(reverse('rosetta-pick-file')) self.assertTrue('
  • ' in str(r.content)) - def test_1_unsupported_p3_django_16_storage(self): + def test_29_unsupported_p3_django_16_storage(self): if self.django_version_minor >= 6 and self.django_version_major >= 1: self.assertTrue('django.contrib.sessions.middleware.SessionMiddleware' in settings.MIDDLEWARE_CLASSES)