You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

52 lines
2.0 KiB

# -*- 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)
print self.config
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