Exemplo n.º 1
0
def extension_detail(request, addon):
    """Extensions details page."""
    # If current version is incompatible with this app, redirect.
    comp_apps = addon.compatible_apps
    if comp_apps and request.APP not in comp_apps:
        prefixer = urlresolvers.get_url_prefix()
        prefixer.app = comp_apps.keys()[0].short
        return redirect('addons.detail', addon.slug, permanent=True)

    # Popular collections this addon is part of.
    collections = Collection.objects.listed().filter(
        addons=addon, application=request.APP.id)

    ctx = {
        'addon': addon,
        'src': request.GET.get('src', 'dp-btn-primary'),
        'version_src': request.GET.get('src', 'dp-btn-version'),
        'tags': addon.tags.not_denied(),
        'grouped_ratings': GroupedRating.get(addon.id),
        'review_form': ReviewForm(),
        'reviews': Review.without_replies.all().filter(
            addon=addon, is_latest=True).exclude(body=None),
        'get_replies': Review.get_replies,
        'collections': collections.order_by('-subscribers')[:3],
        'abuse_form': AbuseForm(request=request),
    }

    # details.html just returns the top half of the page for speed. The bottom
    # does a lot more queries we don't want on the initial page load.
    if request.is_ajax():
        # Other add-ons/apps from the same author(s).
        ctx['author_addons'] = addon.authors_other_addons(app=request.APP)[:6]
        return render(request, 'addons/impala/details-more.html', ctx)
    else:
        return render(request, 'addons/impala/details.html', ctx)
Exemplo n.º 2
0
def persona_detail(request, addon, template=None):
    """Details page for Personas."""
    if not (addon.is_public() or addon.is_pending()):
        raise http.Http404

    persona = addon.persona

    # This persona's categories.
    categories = addon.categories.all()
    category_personas = None
    if categories.exists():
        qs = Addon.objects.public().filter(categories=categories[0])
        category_personas = _category_personas(qs, limit=6)

    data = {
        'addon': addon,
        'persona': persona,
        'categories': categories,
        'author_personas': persona.authors_other_addons()[:3],
        'category_personas': category_personas,
    }

    try:
        author = addon.authors.all()[0]
    except IndexError:
        author = None
    else:
        author = author.get_url_path(src='addon-detail')
    data['author_gallery'] = author

    if not request.MOBILE:
        # tags
        dev_tags, user_tags = addon.tags_partitioned_by_developer
        data.update({
            'dev_tags':
            dev_tags,
            'user_tags':
            user_tags,
            'review_form':
            ReviewForm(),
            'reviews':
            Review.without_replies.all().filter(addon=addon, is_latest=True),
            'get_replies':
            Review.get_replies,
            'search_cat':
            'themes',
            'abuse_form':
            AbuseForm(request=request),
        })

    return render(request, template, data)
Exemplo n.º 3
0
 def test_edit_review_form(self):
     doc = pq(self.render('{{ edit_review_form() }}'))
     eq_(doc('#review-edit-form').length, 1)
     eq_(doc('p.req').length, 1)
     for name in ReviewForm().fields.keys():
         eq_(doc('[name=%s]' % name).length, 1)
Exemplo n.º 4
0
 def test_edit_review_form(self):
     doc = pq(self.render('{{ edit_review_form() }}'))
     assert doc('#review-edit-form').length == 1
     assert doc('p.req').length == 1
     for name in ReviewForm().fields.keys():
         assert doc('[name=%s]' % name).length == 1