Example #1
0
    def items(self):
        articles_pks = self.articles.filter(
            published=True,
            language__in=utils.served_langs()).values_list('pk', flat=True)

        categories = self.categories.filter(published=True,
                                            language__in=utils.served_langs())
        articles_from_categories_pks = Article.objects.filter(
            published=True,
            language__in=utils.served_langs(),
            category__in=categories).values_list('pk', flat=True)

        pks = list(articles_pks) + list(articles_from_categories_pks)

        articles = Article.objects.filter(pk__in=pks)[:self.articles_limit]
        return articles
Example #2
0
def pageView(request, slug, homepage=False):
    if homepage:
        try:
            page = Page.objects.get(homepage=True,
                                    published=True,
                                    language__in=served_langs())
            return page.get_view(request)
        except Page.DoesNotExist:
            raise Http404

    try:
        page = Page.objects.get(homepage=False,
                                slug=slug,
                                published=True,
                                language__in=served_langs())
        return page.get_view(request)
    except Page.DoesNotExist:
        raise Http404
Example #3
0
 def get_object(self):
     queryset = self.get_queryset()
     filters = {}
     filters[self.lookup_field] = self.kwargs[self.lookup_field]
     try:
         filters['language'] = current_lang()
         obj = queryset.get(**filters)
     except CategoriesModule.DoesNotExist:
         del filters['language']
         filters['language__in'] = served_langs()
         obj = get_object_or_404(queryset, **filters)
     return obj
Example #4
0
def contentView(request, path):
    path = path.split('/')
    try:
        # first slice of path must be PageCategory
        root_category_page = Page.objects \
            .instance_of(PageCategory) \
            .get(slug=path[0], published=True, language__in=served_langs())
        if root_category_page.deps_published is False:
            raise Http404
    except Page.DoesNotExist:
        raise Http404

    remaining_path = path[1:]
    parent = root_category_page.category
    for i, slug in enumerate(remaining_path):
        if i == len(remaining_path) - 1:
            # last slice can be Article or Category
            try:
                category = Category.objects.get(slug=slug,
                                                published=True,
                                                parent=parent,
                                                language__in=served_langs())
                return Response({
                    'component_name':
                    'Category',
                    'component_data':
                    CategorySerializer(category, context={
                        'request': request
                    }).data,
                    'meta':
                    category.meta
                })
            except Category.DoesNotExist:
                pass
            try:
                article = Article.objects.get(slug=slug,
                                              published=True,
                                              category=parent,
                                              language__in=served_langs())
                return Response({
                    'component_name':
                    'Article',
                    'component_data':
                    ArticleSerializer(article, context={
                        'request': request
                    }).data,
                    'meta':
                    article.meta
                })
            except Article.DoesNotExist:
                raise Http404
        else:
            # not-last slice must be Category
            try:
                category = Category.objects.get(slug=slug,
                                                published=True,
                                                parent=parent,
                                                language__in=served_langs())
                parent = category
            except Category.DoesNotExist:
                raise Http404
Example #5
0
 def items(self):
     return self.categories.filter(published=True,
                                   language__in=utils.served_langs())
Example #6
0
 def articles(self):
     return self._articles.filter(published=True,
                                  language__in=utils.served_langs())