def project_info(request, domain, template="appstore/project_info.html"): dom = Domain.get(domain) if not can_view_app(request, dom): raise Http404() if request.method == "POST" and dom.copied_from.name not in request.couch_user.get_domains( ): form = AddReviewForm(request.POST) if form.is_valid(): title = form.cleaned_data['review_title'] rating = int(request.POST.get('rating')) if rating < 1: rating = 1 if rating > 5: rating = 5 info = form.cleaned_data['review_info'] date_published = datetime.now() user = request.user.username old_review = Review.get_by_version_and_user(domain, user) if len(old_review) > 0: # replace old review review = old_review[0] review.title = title review.rating = rating review.info = info review.date_published = date_published else: review = Review(title=title, rating=rating, user=user, info=info, date_published=date_published, domain=domain, project_id=dom.copied_from._id) review.save() else: form = AddReviewForm() else: form = AddReviewForm() copies = dom.copies_of_parent() reviews = Review.get_by_app(dom.copied_from._id) average_rating = Review.get_average_rating_by_app(dom.copied_from._id) num_ratings = Review.get_num_ratings_by_app(dom.copied_from._id) if average_rating: average_rating = round(average_rating, 1) images = set() audio = set() return render( request, template, { "project": dom, "applications": dom.full_applications(include_builds=False), "form": form, "copies": copies, "reviews": reviews, "average_rating": average_rating, "num_ratings": num_ratings, "images": images, "audio": audio, "url_base": reverse('appstore'), 'display_import': True if getattr(request, "couch_user", "") and request.couch_user.get_domains() else False })