# -*- coding: utf-8 -*- from django.contrib.auth import get_user_model from django.core.urlresolvers import resolve from django.utils.timezone import now from django.utils.translation import get_language from django.views.generic import ListView, DetailView from parler.views import ViewUrlMixin, TranslatableSlugMixin from aldryn_apphooks_config.mixins import AppConfigMixin from .models import Service, ServiceCategory, SERVICE_CURRENT_SERVICE_IDENTIFIER from .settings import get_setting User = get_user_model() class BaseServiceView(ViewUrlMixin, AppConfigMixin): def get_queryset(self): language = get_language() queryset = self.model._default_manager.active_translations(language_code=language) if self.config and self.config.category_slug: self._category = ServiceCategory.objects.active_translations(get_language(), slug=self.config.category_slug).latest('pk') queryset = queryset.filter(categories=self._category.pk) if not getattr(self.request, 'toolbar', False) or not self.request.toolbar.edit_mode: queryset = queryset.published() return queryset.on_site() def render_to_response(self, context, **response_kwargs): response_kwargs['current_app'] = resolve(self.request.path).namespace return super(BaseServiceView, self).render_to_response(context, **response_kwargs) class ServiceDetailView(TranslatableSlugMixin, BaseServiceView, DetailView): model = Service context_object_name = 'post' template_name = 'service/service_detail.html' slug_field = 'slug' view_url_name = 'service:service-detail' def get_context_data(self, **kwargs): context = super(PostDetailView, self).get_context_data(**kwargs) context['meta'] = self.get_object().as_meta() context['use_placeholder'] = get_setting('USE_PLACEHOLDER') setattr(self.request, SERVICE_CURRENT_SERVICE_IDENTIFIER, self.get_object()) return context