From 679a4b38a47d01ce5c07f0f502cbce79b6ab1895 Mon Sep 17 00:00:00 2001 From: Martin Koistinen Date: Fri, 17 Jul 2015 11:01:43 -0400 Subject: [PATCH 1/5] Don't use gettext_lazy in views --- aldryn_jobs/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aldryn_jobs/views.py b/aldryn_jobs/views.py index c4e0ce7..c1296e6 100644 --- a/aldryn_jobs/views.py +++ b/aldryn_jobs/views.py @@ -6,7 +6,7 @@ from django.http import Http404 from django.shortcuts import redirect from django.utils.translation import ( - ugettext_lazy as _, get_language_from_request + ugettext as _, get_language_from_request ) from django.views.generic import DetailView, ListView from aldryn_apphooks_config.mixins import AppConfigMixin From e526c70a04106f9f2d7fe017bf54fc12c37c1d09 Mon Sep 17 00:00:00 2001 From: Martin Koistinen Date: Fri, 17 Jul 2015 11:02:39 -0400 Subject: [PATCH 2/5] Use Parler's mixins, don't reinvent the wheel --- aldryn_jobs/views.py | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/aldryn_jobs/views.py b/aldryn_jobs/views.py index c1296e6..c8e1398 100644 --- a/aldryn_jobs/views.py +++ b/aldryn_jobs/views.py @@ -12,6 +12,7 @@ from aldryn_apphooks_config.mixins import AppConfigMixin from aldryn_apphooks_config.utils import get_app_instance from menus.utils import set_language_changer +from parler.views import TranslatableSlugMixin from .forms import JobApplicationForm from .models import JobCategory, JobOpening @@ -54,10 +55,11 @@ def set_language_changer(self, category): set_language_changer(self.request, category.get_absolute_url) -class JobOpeningDetail(AppConfigMixin, DetailView): +class JobOpeningDetail(AppConfigMixin, TranslatableSlugMixin, DetailView): form_class = JobApplicationForm template_name = 'aldryn_jobs/jobs_detail.html' slug_url_kwarg = 'job_opening_slug' + queryset = JobOpening.objects.all() def dispatch(self, request, *args, **kwargs): self.request = request @@ -66,29 +68,6 @@ def dispatch(self, request, *args, **kwargs): self.set_language_changer(self.object) return super(JobOpeningDetail, self).dispatch(request, *args, **kwargs) - def get_object(self, queryset=None): - if queryset is None: - queryset = self.get_queryset() - slug = self.kwargs.get(self.slug_url_kwarg, None) - slug_field = self.get_slug_field() - language = get_language_from_request(self.request, check_path=True) - queryset = ( - queryset.filter(category__app_config__namespace=self.namespace) - .language(language) - .translated(language, **{slug_field: slug}) - ) - - job_opening = None - try: - job_opening = queryset.get() - except JobOpening.DoesNotExist: - pass - finally: - if (not job_opening or (not job_opening.get_active() and - not self.request.user.is_staff)): - raise Http404(_("Opening is no longer valid.")) - return job_opening - def get_form_class(self): return self.form_class @@ -111,13 +90,6 @@ def get_form(self, form_class): """ return form_class(**self.get_form_kwargs()) - def get_queryset(self): - # not active as well, see `get_object` for more detail - language = get_language_from_request(self.request, check_path=True) - return JobOpening.objects.language(language).translated( - language - ).select_related('category') - def set_language_changer(self, job_opening): """Translate the slug while changing the language.""" set_language_changer(self.request, job_opening.get_absolute_url) From 8bdcda6d6ef734e473e76dcd5fb791f845675f9c Mon Sep 17 00:00:00 2001 From: Martin Koistinen Date: Fri, 17 Jul 2015 11:03:16 -0400 Subject: [PATCH 3/5] Allow fallbacks to work --- aldryn_jobs/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aldryn_jobs/views.py b/aldryn_jobs/views.py index c8e1398..7c7f2bf 100644 --- a/aldryn_jobs/views.py +++ b/aldryn_jobs/views.py @@ -28,7 +28,7 @@ def get_queryset(self): return ( JobOpening.objects.active() .language(language) - .translated(language) + .active_translations(language) .select_related('category') .order_by('category__id') ) From 12653efd04ac79e383684b10549da73881fe0e11 Mon Sep 17 00:00:00 2001 From: Martin Koistinen Date: Fri, 17 Jul 2015 11:03:25 -0400 Subject: [PATCH 4/5] Refactor for clarity --- aldryn_jobs/views.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/aldryn_jobs/views.py b/aldryn_jobs/views.py index 7c7f2bf..f91cc8d 100644 --- a/aldryn_jobs/views.py +++ b/aldryn_jobs/views.py @@ -41,9 +41,13 @@ def get_queryset(self): category_slug = self.kwargs['category_slug'] try: - self.category = JobCategory.objects.language(language).translated( - language, slug=category_slug - ).namespace(self.namespace).get() + self.category = ( + JobCategory.objects + .language(language).active_translations( + language, slug=category_slug) + .namespace(self.namespace) + .get() + ) except JobCategory.DoesNotExist: raise Http404 From 5bd32c801f11b687494573014fb7a39cfb5b009f Mon Sep 17 00:00:00 2001 From: Martin Koistinen Date: Fri, 17 Jul 2015 11:13:00 -0400 Subject: [PATCH 5/5] Use namespacing --- aldryn_jobs/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aldryn_jobs/views.py b/aldryn_jobs/views.py index f91cc8d..21f7831 100644 --- a/aldryn_jobs/views.py +++ b/aldryn_jobs/views.py @@ -27,6 +27,7 @@ def get_queryset(self): language = get_language_from_request(self.request, check_path=True) return ( JobOpening.objects.active() + .filter(category__app_config=self.config) .language(language) .active_translations(language) .select_related('category')