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()
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, }
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
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, }
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.""" )