Exemple #1
0
    def get_articles(self, request):
        if not self.article_count:
            return Article.objects.none()

        if self.dynamic_category_config and settings.ALDRYN_NEWSBLOG_CATEGORIES_FROM_REQUEST:
            attribute_obj = None
            for attribute in settings.ALDRYN_NEWSBLOG_CATEGORIES_FROM_REQUEST.split('.'):
                if attribute_obj is None:
                    attribute_obj = getattr(request, attribute)
                else:
                    attribute_obj = getattr(attribute_obj, attribute)

            if attribute_obj is not None:
                categories = attribute_obj.all()
        else:
            categories = self.category_config.all()

        queryset = Article.objects
        if not self.get_edit_mode(request):
            queryset = queryset.published()
        languages = get_valid_languages_from_request(
            self.app_config.namespace, request)
        if self.language not in languages:
            return queryset.none()
        queryset = queryset.translated(*languages).filter(
            app_config=self.app_config,
            is_featured=True)
        if categories.count() != 0:
            queryset = queryset.filter(
                categories__in=categories
            )
        return queryset[:self.article_count]
Exemple #2
0
 def get_articles(self, article, request):
     """
     Returns a queryset of articles that are related to the given article.
     """
     languages = get_valid_languages_from_request(
         article.app_config.namespace, request)
     qs = article.related.translated(*languages)
     if not self.get_edit_mode(request):
         qs = qs.published()
     return qs
Exemple #3
0
 def get_articles(self, article, request):
     """
     Returns a queryset of articles that are related to the given article.
     """
     languages = get_valid_languages_from_request(
         article.app_config.namespace, request)
     qs = article.related.translated(*languages)
     if not self.get_edit_mode(request):
         qs = qs.published()
     return qs
Exemple #4
0
 def get_articles(self, request):
     if not self.article_count:
         return Article.objects.none()
     queryset = Article.objects
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     languages = get_valid_languages_from_request(self.app_config.namespace,
                                                  request)
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config, is_featured=True)
     return queryset[:self.article_count]
Exemple #5
0
 def get_articles(self, request):
     if not self.article_count:
         return Article.objects.none()
     queryset = Article.objects
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     languages = get_valid_languages_from_request(
         self.app_config.namespace, request)
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config,
         is_featured=True)
     return queryset[:self.article_count]
Exemple #6
0
 def get_articles(self, request):
     """
     Returns a queryset of the latest N articles. N is the plugin setting:
     latest_articles.
     """
     queryset = Article.objects
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     languages = get_valid_languages_from_request(self.app_config.namespace,
                                                  request)
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config)
     return queryset[:self.latest_articles]
Exemple #7
0
 def get_articles(self, request):
     """
     Returns a queryset of the latest N articles. N is the plugin setting:
     latest_articles.
     """
     queryset = Article.objects
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     languages = get_valid_languages_from_request(
         self.app_config.namespace, request)
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config)
     return queryset[:self.latest_articles]
Exemple #8
0
 def get_articles(self, request):
     queryset = Article.objects
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     languages = get_valid_languages_from_request(self.app_config.namespace,
                                                  request)
     if self.language not in languages:
         return queryset.none()
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config, tags=self.tag)
     if self.article_count > 0:
         queryset = queryset[:self.article_count]
     return queryset
Exemple #9
0
 def get_queryset(self, article, request):
     """
     Returns a queryset of articles that have common categories with the given article.
     """
     languages = get_valid_languages_from_request(
         article.app_config.namespace, request)
     if self.language not in languages:
         return Article.objects.none()
     filter_categories = article.categories.exclude(
         pk__in=models.Subquery(self.exclude_categories.values('pk')))
     queryset = Article.objects.filter(
         categories__in=filter_categories).exclude(
             pk=article.pk).translated(*languages)
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     return queryset.distinct()
Exemple #10
0
 def get_articles(self, request):
     """
     Return a queryset of the latest articles, filtered by the category set in the plugin
     settings and sliced to the desired count.
     """
     queryset = Article.objects
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     languages = get_valid_languages_from_request(self.app_config.namespace,
                                                  request)
     if self.language not in languages:
         return queryset.none()
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config).filter(categories=self.category)
     if self.article_count > 0:
         queryset = queryset[:self.article_count]
     return queryset
Exemple #11
0
    def get_articles(self, request):
        """
        Returns a queryset of the latest N articles in one or more of the M categories.
        N is the plugin setting: latest_articles.
        M is the plugin setting: categories
        """
        queryset = Article.objects.published()
        queryset = queryset.all().filter(categories__in=self.categories.all())

        if not self.latest_articles:
            return Article.objects.none()
        languages = get_valid_languages_from_request(self.app_config.namespace,
                                                     request)
        if self.language not in languages:
            return queryset.none()
        queryset = queryset.translated(*languages).filter(
            app_config=self.app_config)

        return queryset[:self.latest_articles]
Exemple #12
0
    def get_articles(self, request):
        """
        Returns a queryset of the latest N articles. N is the plugin setting:
        latest_articles.
        """

        if self.dynamic_category_config and settings.ALDRYN_NEWSBLOG_CATEGORIES_FROM_REQUEST:

            attribute_obj = None
            for attribute in settings.ALDRYN_NEWSBLOG_CATEGORIES_FROM_REQUEST.split('.'):
                if attribute_obj is None:
                    attribute_obj = getattr(request, attribute)
                else:
                    attribute_obj = getattr(attribute_obj, attribute)

            if attribute_obj is not None:
                categories = attribute_obj.all()
        else:
            categories = self.category_config.all()

        queryset = Article.objects
        featured_qs = Article.objects.all().filter(is_featured=True)

        if not self.get_edit_mode(request):
            queryset = queryset.published()
            featured_qs = featured_qs.published()
        languages = get_valid_languages_from_request(
            self.app_config.namespace, request)
        if self.language not in languages:
            return queryset.none()
        queryset = queryset.translated(*languages).filter(
            app_config=self.app_config)
        featured_qs = featured_qs.translated(*languages).filter(
            app_config=self.app_config)
        exclude_featured = featured_qs.values_list(
            'pk', flat=True)[:self.exclude_featured]
        queryset = queryset.exclude(pk__in=list(exclude_featured))

        if categories.count() != 0:
            queryset = queryset.filter(
                categories__in=categories
            )
        return queryset[:self.latest_articles]
Exemple #13
0
 def get_articles(self, article, request):
     """
     Returns a queryset of articles that have common tags with the given article.
     """
     languages = get_valid_languages_from_request(
         article.app_config.namespace, request)
     if self.language not in languages:
         return Article.objects.none()
     filter_tags = article.tags.exclude(
         pk__in=models.Subquery(self.exclude_tags.values('pk')))
     queryset = Article.objects.filter(tags__in=article.tags.all()).exclude(
         tags__in=self.exclude_tags.all()).exclude(
             pk=article.pk).translated(*languages)
     if not self.get_edit_mode(request):
         queryset = queryset.published()
     queryset = queryset.distinct()
     if self.article_count > 0:
         queryset = queryset[:self.article_count]
     return queryset
 def get_articles(self, request):
     """
     Returns a queryset of the latest N articles. N is the plugin setting:
     latest_articles.
     """
     queryset = Article.objects
     featured_qs = Article.objects.all().filter(is_featured=True)
     if not self.get_edit_mode(request):
         queryset = queryset.published()
         featured_qs = featured_qs.published()
     languages = get_valid_languages_from_request(
         self.app_config.namespace, request)
     if self.language not in languages:
         return queryset.none()
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config)
     featured_qs = featured_qs.translated(*languages).filter(
         app_config=self.app_config)
     exclude_featured = list(featured_qs.values_list(
         'pk', flat=True))[:self.exclude_featured]
     queryset = queryset.exclude(pk__in=list(exclude_featured))
     return queryset[:self.latest_articles]
Exemple #15
0
 def get_articles(self, request):
     """
     Returns a queryset of the latest N articles. N is the plugin setting:
     latest_articles.
     """
     queryset = Article.objects
     featured_qs = Article.objects.all().filter(is_featured=True)
     if not self.get_edit_mode(request):
         queryset = queryset.published()
         featured_qs = featured_qs.published()
     languages = get_valid_languages_from_request(
         self.app_config.namespace, request)
     if self.language not in languages:
         return queryset.none()
     queryset = queryset.translated(*languages).filter(
         app_config=self.app_config)
     featured_qs = featured_qs.translated(*languages).filter(
         app_config=self.app_config)
     exclude_featured = featured_qs.values_list(
         'pk', flat=True)[:self.exclude_featured]
     queryset = queryset.exclude(pk__in=list(exclude_featured))
     return queryset[:self.latest_articles]
Exemple #16
0
 def dispatch(self, request, *args, **kwargs):
     self.valid_languages = get_valid_languages_from_request(
         self.namespace, request)
     return super(AppHookCheckMixin, self).dispatch(request, *args,
                                                    **kwargs)
Exemple #17
0
 def __init__(self, *args, **kwargs):
     super(ArticleList, self).__init__(*args, **kwargs)
     request = kwargs.pop('request')
     self.valid_languages = get_valid_languages_from_request(
         self.namespace, request)
Exemple #18
0
 def dispatch(self, request, *args, **kwargs):
     self.valid_languages = get_valid_languages_from_request(
         self.namespace, request)
     return super(AppHookCheckMixin, self).dispatch(
         request, *args, **kwargs)