Exemplo n.º 1
0
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())
Exemplo n.º 2
0
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())
Exemplo n.º 3
0
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})
Exemplo n.º 4
0
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())
Exemplo n.º 5
0
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
        })
Exemplo n.º 6
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.º 7
0
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)
Exemplo n.º 8
0
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)