def report_abuse(request, user): form = AbuseForm(request.POST or None, request=request) if request.method == "POST" and form.is_valid(): send_abuse_report(request, user, form.cleaned_data["text"]) messages.success(request, _("User reported.")) else: return render(request, "users/report_abuse_full.html", {"profile": user, "abuse_form": form}) return redirect(user.get_url_path())
def report_abuse(request, user): form = AbuseForm(request.POST or None, request=request) if request.method == 'POST' and form.is_valid(): send_abuse_report(request, user, form.cleaned_data['text']) messages.success(request, ugettext('User reported.')) else: return render(request, 'users/report_abuse_full.html', {'profile': user, 'abuse_form': form}) return redirect(user.get_url_path())
def report_abuse(request, addon): form = AbuseForm(request.POST or None, request=request) if request.method == "POST" and form.is_valid(): send_abuse_report(request, addon, form.cleaned_data['text']) messages.success(request, _('Abuse reported.')) return http.HttpResponseRedirect(addon.get_url_path()) else: return render(request, 'addons/report_abuse_full.html', {'addon': addon, 'abuse_form': form})
def report_abuse(request, user): form = AbuseForm(request.POST or None, request=request) if request.method == 'POST' and form.is_valid(): send_abuse_report(request, user, form.cleaned_data['text']) messages.success(request, ugettext('User reported.')) else: return render(request, 'users/report_abuse_full.html', { 'profile': user, 'abuse_form': form }) return redirect(user.get_url_path())
def report_abuse(request, addon): form = AbuseForm(request.POST or None, request=request) if request.method == "POST" and form.is_valid(): send_abuse_report(request, addon, form.cleaned_data['text']) messages.success(request, ugettext('Abuse reported.')) return http.HttpResponseRedirect(addon.get_url_path()) else: return render(request, 'addons/report_abuse_full.html', { 'addon': addon, 'abuse_form': form })
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): """Details page for Personas.""" if not (addon.is_public() or addon.is_pending()): raise http.Http404 try: persona = addon.persona except Persona.DoesNotExist: raise http.Http404 # 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 dev_tags, user_tags = addon.tags_partitioned_by_developer data.update({ 'dev_tags': dev_tags, 'user_tags': user_tags, 'review_form': RatingForm(), 'reviews': Rating.without_replies.all().filter(addon=addon, is_latest=True), 'get_replies': Rating.get_replies, 'search_cat': 'themes', 'abuse_form': AbuseForm(request=request), }) return render(request, 'addons/persona_detail.html', data)
def profile(request, user): # Get user's own and favorite collections, if they allowed that. own_coll = fav_coll = [] if user.display_collections: own_coll = (Collection.objects.listed().filter( author=user).order_by('-created'))[:10] if user.display_collections_fav: fav_coll = (Collection.objects.listed().filter( following__user=user).order_by('-following__created'))[:10] edit_any_user = acl.action_allowed(request, amo.permissions.USERS_EDIT) own_profile = (request.user.is_authenticated() and request.user.id == user.id) addons = [] personas = [] limited_personas = False if user.is_developer: addons = user.addons.public().filter(addonuser__user=user, addonuser__listed=True) personas = addons.filter( type=amo.ADDON_PERSONA).order_by('-persona__popularity') if personas.count() > THEMES_LIMIT: limited_personas = True personas = personas[:THEMES_LIMIT] addons = addons.exclude( type=amo.ADDON_PERSONA).order_by('-weekly_downloads') addons = amo.utils.paginate(request, addons, 5) reviews = amo.utils.paginate(request, user.reviews.all()) data = { 'profile': user, 'own_coll': own_coll, 'reviews': reviews, 'fav_coll': fav_coll, 'edit_any_user': edit_any_user, 'addons': addons, 'own_profile': own_profile, 'personas': personas, 'limited_personas': limited_personas, 'THEMES_LIMIT': THEMES_LIMIT } if not own_profile: data['abuse_form'] = AbuseForm(request=request) return render(request, 'users/profile.html', data)