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)
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)
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)
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