Ejemplo n.º 1
0
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
        })