Example #1
0
def feed(request):
    return RssQuestionFeed(
        request,
        Question.objects.filter_state(
            deleted=False).order_by('-last_activity_at'),
        settings.APP_TITLE + _(' - ') + _('latest questions'),
        settings.APP_DESCRIPTION)(request)
Example #2
0
def question_list(request, initial,
                  list_description=_('questions'),
                  base_path=None,
                  page_title=_("All Questions"),
                  allowIgnoreTags=True,
                  feed_url=None,
                  paginator_context=None,
                  show_summary=None,
                  feed_sort=('-added_at',),
                  feed_req_params_exclude=(_('page'), _('pagesize'), _('sort')),
                  extra_context={}):

    if show_summary is None:
        show_summary = bool(settings.SHOW_SUMMARY_ON_QUESTIONS_LIST)

    questions = initial.filter_state(deleted=False)

    if request.user.is_authenticated() and allowIgnoreTags:
        questions = questions.filter(~Q(tags__id__in = request.user.marked_tags.filter(user_selections__reason = 'bad')))

    if page_title is None:
        page_title = _("Questions")

    if request.GET.get('type', None) == 'rss':
        if feed_sort:
            questions = questions.order_by(*feed_sort)
        return RssQuestionFeed(request, questions, page_title, list_description)(request)

    keywords =  ""
    if request.GET.get("q"):
        keywords = request.GET.get("q").strip()

    #answer_count = Answer.objects.filter_state(deleted=False).filter(parent__in=questions).count()
    #answer_description = _("answers")

    if not feed_url:
        req_params = generate_uri(request.GET, feed_req_params_exclude)

        if req_params:
            req_params = '&' + req_params

        feed_url = request.path + "?type=rss" + req_params

    context = {
        'questions' : questions.distinct(),
        'questions_count' : questions.count(),
        'keywords' : keywords,
        'list_description': list_description,
        'base_path' : base_path,
        'page_title' : page_title,
        'tab' : 'questions',
        'feed_url': feed_url,
        'show_summary' : show_summary,
    }
    context.update(extra_context)

    return pagination.paginated(request,
                               ('questions', paginator_context or QuestionListPaginatorContext()), context)
Example #3
0
def question_list(request,
                  initial,
                  list_description=_('questions'),
                  base_path=None,
                  page_title=_("All Questions"),
                  allowIgnoreTags=True,
                  feed_url=None,
                  paginator_context=None,
                  isIndex=None):

    questions = initial.filter_state(deleted=False)

    if request.user.is_authenticated() and allowIgnoreTags:
        questions = questions.filter(~Q(
            tags__id__in=request.user.marked_tags.filter(
                user_selections__reason='bad')))

    if page_title is None:
        page_title = _("Questions")

    if request.GET.get('type', None) == 'rss':
        questions = questions.order_by('-added_at')
        return RssQuestionFeed(request, questions, page_title,
                               list_description)(request)

    keywords = ""
    if request.GET.get("q"):
        keywords = request.GET.get("q").strip()

    #answer_count = Answer.objects.filter_state(deleted=False).filter(parent__in=questions).count()
    #answer_description = _("answers")

    if not feed_url:
        req_params = generate_uri(request.GET,
                                  (_('page'), _('pagesize'), _('sort')))
        if req_params:
            req_params = '&' + req_params

        feed_url = request.path + "?type=rss" + req_params

    return pagination.paginated(
        request,
        ('questions', paginator_context or QuestionListPaginatorContext()), {
            "questions": questions.distinct(),
            "questions_count": questions.count(),
            "keywords": keywords,
            "list_description": list_description,
            "base_path": base_path,
            "page_title": page_title,
            "tab": "index" if isIndex else "questions",
            'feed_url': feed_url,
        })
Example #4
0
def question_list(request,
                  initial,
                  list_description=_('questions'),
                  base_path=None,
                  page_title=_("All Questions"),
                  allowIgnoreTags=True,
                  feed_url=None,
                  paginator_context=None,
                  show_summary=None,
                  feed_sort=('-added_at', ),
                  feed_req_params_exclude=(_('page'), _('pagesize'),
                                           _('sort')),
                  extra_context={}):

    if show_summary is None:
        show_summary = bool(settings.SHOW_SUMMARY_ON_QUESTIONS_LIST)

    questions = initial.filter_state(deleted=False)

    if request.user.is_authenticated() and allowIgnoreTags:
        questions = questions.filter(~Q(
            tags__id__in=request.user.marked_tags.filter(
                user_selections__reason='bad')))

    if page_title is None:
        page_title = _("Questions")

    # Added custom code to OSQA to make it more useful for Magnate
    # Only show those questions that are linked to a given Zinnia entry
    # BEGIN
    if request.GET.get('entry', None):
        from zinnia.models.entry import Entry
        try:
            entry_pk = int(request.GET.get('entry'))
            entry = Entry.objects.get(pk=entry_pk)  # make sure it exists
            if entry.is_public():
                questions = questions.filter(about_entries__entry__pk=entry_pk)
                page_title = _(unicode(page_title) + " about " + entry.title)
        except (ValueError, Entry.DoesNotExist) as e:
            # If the entry id is not integer, ignore ?entry
            # If there is no such entry, ignore ?entry
            # If there is, but it is not public, ignore ?entry
            # If it is public, show related entries and change the title
            pass
    # END

    if request.GET.get('type', None) == 'rss':
        if feed_sort:
            questions = questions.order_by(*feed_sort)
        return RssQuestionFeed(request, questions, page_title,
                               list_description)(request)

    keywords = ""
    if request.GET.get("q"):
        keywords = request.GET.get("q").strip()

    #answer_count = Answer.objects.filter_state(deleted=False).filter(parent__in=questions).count()
    #answer_description = _("answers")

    if not feed_url:
        req_params = generate_uri(request.GET, feed_req_params_exclude)

        if req_params:
            req_params = '&' + req_params

        feed_url = request.path + "?type=rss" + req_params

    context = {
        'questions': questions.distinct(),
        'questions_count': questions.count(),
        'keywords': keywords,
        'list_description': list_description,
        'base_path': base_path,
        'page_title': page_title,
        'tab': 'questions',
        'feed_url': feed_url,
        'show_summary': show_summary,
    }
    context.update(extra_context)

    return pagination.paginated(
        request,
        ('questions', paginator_context or QuestionListPaginatorContext()),
        context)