Esempio n. 1
0
def get_item_details(item, request):
    the_reviews = Review.get_for_object(item)
    reviews_count = settings.DEFAULT_REVIEWS_COUNT if request.user.is_authenticated() else 1

    data = {
        "id": item.id,
        "title": unicode(item),
        "url": item.get_absolute_url(),
        "description": defaultfilters.linebreaksbr(item.description),
        "cover": item.get_cover(),
        "release_date": defaultfilters.date(item.release_date) if item.release_date else None,
        "publisher": {
            "name": item.publisher.name if item.publisher else None,
            "url": item.publisher.get_absolute_url() if item.publisher else None,
        },
        "esrb": item.rating.title if item.rating else None,
        "number_of_players": item.number_of_players,
        "number_of_online_players": item.number_of_online_players,
        "genres": [
            {"name": unicode(x), "url": "%s?genre=%d" % (reverse("catalog:category", args=[item.category.slug]), x.id)}
            for x in item.genres.all()
        ],
        "tags": [{"name": unicode(x), "url": x.get_absolute_url()} for x in item.tags.all()],
        "platform": {"name": item.category.description, "url": item.category.get_absolute_url()},
        "also_on": [{"name": x.category.description, "url": x.get_absolute_url()} for x in item.also_on()],
        "reviews": {
            "count": the_reviews.count(),
            "items": [get_review_details(r, request) for r in the_reviews[:reviews_count]],
        },
        "screenshots": item.get_screenshots(),
        "media_details": reverse("catalog:item_action", args=[item.slug, item.id, "media-details"]),
        "authenticated": request.user.is_authenticated(),
        "actions": {},
    }
    data.update(get_item_ratio(item, request))
    if request.user.is_authenticated():
        data["reviews"]["form"] = render_review_form(request, item)
    #    if item.available_for_selling():
    data["actions"]["buy"] = {"url": reverse("cart:add", args=[item.id]), "price": item.get_retail_prices_display()}
    #    if item.rent_flag:
    if request.user.is_authenticated():
        msg = "<em>AVAILABILITY</em></br> %s" % item.get_rent_status(request.user)
    else:
        msg = 'Only <a href="%s" class="link-dialog">$%s</a> a month' % (
            reverse("new_rent:sign_up"),
            get_minimal_rent_charge(),
        )
    data["actions"]["rent"] = {"url": reverse("rent:add", args=[item.id]), "price": msg}
    #    if item.rent_flag:
    data["actions"]["trade"] = {"url": reverse("trade:add", args=[item.id]), "price": item.get_trade_prices_display()}
    return data
Esempio n. 2
0
    for (receiver, response) in responses:
        if response == False:
            return CommentPostBadRequest(
                "comment_will_be_posted receiver %r killed the comment" % receiver.__name__)

    # Save the comment and signal that it was saved
    comment.save()
    signals.comment_was_posted.send(
        sender  = comment.__class__,
        comment = comment,
        request = request
    )
    if request.is_ajax():
        item = comment.content_object
        return JsonResponse({
            'status': 'ok',
            'review': get_review_details(comment, request),
            'review_count': Review.get_for_object(item).count(),
            'item_ratio': get_item_ratio(item, request),
            'item': get_item_details(item, request),
            'form': render_review_form(request, item),
        })
        
    return next_redirect(data, next, comment_done, c=comment._get_pk_val())


comment_done = confirmation_view(
    template = "comments/posted.html",
    doc = """Display a "comment was posted" success page."""
)