Example #1
0
 def import_reviews(self, user_id):
     c = self.mconn.cursor()
     site = Site.objects.get_current()
     c.execute("select s.date_posted, s.title, s.body, i.upc, i.id from item_reviews s inner join items i on s.ref_item=i.id where s.ref_user=%s order by s.id", [user_id,])
     for date_posted, title, body, upc, id in c.fetchall():
         if date_posted is not None:
             item = self.get_item(upc)
             if not item: 
                 self.missing_items.add(id)
                 continue 
             o = Review(
                 user_id = user_id,
                 site = site,
                 content_object = item,
                 title = title.decode('utf-8', 'ignore'),
                 comment = body.decode('utf-8', 'ignore'),
                 rating = 5
             )
             date_posted
             o.timestamp = date_posted
             o.save()
             ItemVote(
                 user_id=user_id,
                 item=item,
                 timestamp=date_posted,
                 ratio=5,
                 review=o
             ).save()
Example #2
0
def get_helpful_reviews(item, request):
    if not request.user.is_authenticated():
        return {"reviews": [], "has_more_reviews": False}
    reviews = Review.get_helpful(item)
    return {
        "reviews": [get_review_details(r, request) for r in reviews[: settings.DEFAULT_REVIEWS_COUNT]],
        "has_more_reviews": reviews.count() > settings.DEFAULT_REVIEWS_COUNT,
    }
Example #3
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
Example #4
0
def get_more_reviews(item, request):
    try:
        id = int(request.REQUEST.get("id"))
        if not id:
            raise Exception()
    except:
        return HttpResponseBadRequest()
    if not request.user.is_authenticated():
        return {"reviews": [], "has_more_reviews": False}
    reviews = Review.get_for_object(item).filter(id__lt=id)
    return {
        "reviews": [get_review_details(r, request) for r in reviews[: settings.DEFAULT_REVIEWS_COUNT]],
        "has_more_reviews": reviews.count() > settings.DEFAULT_REVIEWS_COUNT,
    }
Example #5
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."""
)