def project_info(request, domain, template="appstore/project_info.html"): dom = Domain.get_by_name(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 })
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 })
def project_info(request, domain, template="appstore/project_info.html"): dom = Domain.get_by_name(domain) if not dom or not dom.is_snapshot or (not dom.is_approved and not request.couch_user.is_domain_admin(domain)): raise Http404() if request.method == "POST" and dom.original_doc not in request.couch_user.get_domains(): versioned = True 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, original_doc=dom.original_doc) review.save() else: form = AddReviewForm() else: form = AddReviewForm() versioned = request.GET.get('current', False) if versioned: reviews = Review.get_by_version(domain) average_rating = Review.get_average_rating_by_version(domain) num_ratings = Review.get_num_ratings_by_version(domain) else: reviews = Review.get_by_app(dom.original_doc) average_rating = Review.get_average_rating_by_app(dom.original_doc) num_ratings = Review.get_num_ratings_by_app(dom.original_doc) if average_rating: average_rating = round(average_rating, 1) current_link = '' if not versioned: current_link = 'true' images = set() audio = set() # for app in dom.applications(): # if app.doc_type == 'Application': # app = Application.get(app._id) # sorted_images, sorted_audio, has_error = utils.get_sorted_multimedia_refs(app) # images.update(i['url'] for i in app.get_template_map(sorted_images)[0] if i['url']) # audio.update(a['url'] for a in app.get_template_map(sorted_audio)[0] if a['url']) vals = _appstore_context(dict( project=dom, form=form, reviews=reviews, average_rating=average_rating, num_ratings=num_ratings, versioned=versioned, current_link=current_link, images=images, audio=audio, )) return render_to_response(request, template, vals)
def project_info(request, domain, template="appstore/project_info.html"): dom = Domain.get_by_name(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() # get facets results = es_snapshot_query({}, SNAPSHOT_FACETS) facets_sortables = generate_sortables_from_facets(results, {}, inverse_dict(SNAPSHOT_MAPPING)) pb_id = dom.cda.user_id published_by = CouchUser.get_by_user_id(pb_id) if pb_id else None return render( request, template, { "project": dom, "applications": dom.full_applications(include_builds=False), "form": form, "published_by": published_by, "copies": copies, "reviews": reviews, "average_rating": average_rating, "num_ratings": num_ratings, "images": images, "audio": audio, "sortables": facets_sortables, "url_base": reverse("appstore"), "display_import": True if getattr(request, "couch_user", "") and request.couch_user.get_domains() else False, }, )