コード例 #1
0
def create_review(request):

    created = False

    if request.method == 'POST':

        review_form = ReviewForm(data=request.POST)

        if review_form.is_valid():

            review = review_form.save()
            review.save()

            created = True

        else:
            print(review_form.errors)

    else:

        review_form = ReviewForm()

    return render(request, 'review/create_review.html', {
        'review_form': review_form,
        'created': created
    })
コード例 #2
0
ファイル: views.py プロジェクト: shayweitzman/AutoBook
def addReview(request, book_id):
    book = get_object_or_404(Book, pk=book_id)
    userReview = request.user.adult.reviews.filter(book=book)
    if request.method == "GET":
        if (len(userReview) > 0):
            return render(request, "review/addReview.html", {
                "form": ReviewForm(instance=userReview[0]),
                "book_id": book_id
            })
        else:
            return render(request, "review/addReview.html", {
                "form": ReviewForm(),
                "book_id": book_id
            })
    elif request.method == "POST":
        if (len(userReview) > 0):
            Review.delete(userReview[0])
        form = ReviewForm(request.POST)
        if form.is_valid():
            newReview = form.save(commit=False)
            newReview.save()
            newReview.book.add(book)
            request.user.adult.reviews.add(newReview)
            return redirect("book_card", book_id)
        else:
            return render(request, "review/addReview.html", {
                "form": ReviewForm(),
                "book_id": book_id,
                "error": "bad data"
            })
コード例 #3
0
ファイル: views.py プロジェクト: kpx13/h2h
def reviews(request):
    c = get_common_context(request)
    # display all approved reviews with pagination
    items = Review.objects.filter(approved=True)
    paginator = Paginator(items, PAGINATION_COUNT)
    page = int(request.GET.get("page", "1"))
    try:
        items = paginator.page(page)
    except PageNotAnInteger:
        page = 1
        items = paginator.page(page)
    except EmptyPage:
        page = paginator.num_pages
        items = paginator.page(page)
    c["page"] = page
    c["page_range"] = paginator.page_range
    if len(c["page_range"]) > 1:
        c["need_pagination"] = True
    c["reviews"] = items
    # get places list to populate place choices
    c["places"] = Place.objects.all()
    if request.method == "POST":
        form = ReviewForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            c["review_ok"] = True
    form = ReviewForm()
    c.update({"form": form})
    return render_to_response("reviews.html", c, context_instance=RequestContext(request))
コード例 #4
0
ファイル: views.py プロジェクト: k-jun/se-lecture-nu
 def post(self, request, pk):
     print(self.request.POST)
     new_review = ReviewForm(request.POST)
     lecture = Lecture.objects.get(pk=pk)
     current_student = Student.objects.get_current_student(request)
     context = {
         'lecture': lecture,
         'form': ReviewForm,
         'review_list': Review.objects.filter(lecture=lecture),
         'student': current_student
     }
     if new_review.is_valid():
         print(self.request.POST)
         # 省略する
         title = new_review.cleaned_data['title']
         comment = new_review.cleaned_data['comment']
         rate_pass = new_review.cleaned_data['rate_pass']
         rate_professor = new_review.cleaned_data['rate_professor']
         Review.objects.create(lecture=lecture,
                               title=title,
                               comment=comment,
                               rate_pass=rate_pass,
                               rate_professor=rate_professor,
                               student=current_student)
         # 省略する
         return render(request, self.template_name, context)
     else:
         context['form'] = new_review
         return render(request, self.template_name, context)
コード例 #5
0
ファイル: views.py プロジェクト: telbohtimy/Vygit
def authorPage(request, id):
    try:
        authorPage=Profile.objects.get(pk=id)
        if authorPage.image:
            scale=scaleImage(400, authorPage.image.height)
            width=scale*authorPage.image.width
            height=scale*authorPage.image.height
        else:
            width=0
            height=0
        ReviewList = Review.objects.filter(Q(reviewed=authorPage)).order_by('-date')
        reviewed=authorPage
        flag=''
        if request.user.is_authenticated():
            reviewer=Profile.objects.get(user=request.user)
            if Review.objects.filter(reviewer = reviewer).filter(reviewed=reviewed).exists():
                flag='flag'
        if request.method=='POST':
            if reviewer==reviewed:
                return HttpResponseRedirect('/profiles/'+str(id)+'/')
            reviewForm=ReviewForm(data=request.POST)
            if reviewForm.is_valid():
                body=reviewForm.cleaned_data['body']
                rating=reviewForm.cleaned_data['ratings']
                date=timezone.now()
                newReview=Review(reviewer=reviewer,reviewed=reviewed,body=body,ratings=rating,date=date)
                newReview.save()
        else:
            reviewForm=ReviewForm()
    except Profile.DoesNotExist:
        raise Http404("This profile does not exist")
    return render(request,"author.html",{"authorPage":authorPage,'reviewForm': reviewForm, 'ReviewList':ReviewList,'width':width,'height':height,'flag':flag})
コード例 #6
0
ファイル: views.py プロジェクト: saninshakya/Bookstore
def insert(request, itemid):
	try:
		form = ReviewForm()
		review = ReviewItem.objects.filter(deleted=False, item_id=itemid).order_by('id')
		if request.method == 'POST':
			form = ReviewForm(request.POST)
			if form.is_valid():
				cd = form.cleaned_data
				review = cd['review']
				created = datetime.datetime.now()
				modified = datetime.datetime.now()
				user = request.user.id
				result = ReviewItem.objects.create(review=review, item_id=itemid, createdBy_id=user, created=created, modified=created, deleted=False)
				if result:
					messages.add_message(request, messages.INFO, "Thank you for Review")
				else:
					messages.add_message(request, messages.ERROR, "Error occured. Please Try Again.")
				return HttpResponseRedirect('/review/' + itemid + '/')
			else:
				return render(request,'review/add.html', {'form':form, 'review':review})
		else:
			return render(request,'review/add.html', {'form':form, 'review':review})
	except:
		messages.add_message(request, messages.ERROR, sys.exc_info()[1])
		return render(request,'review/index.html')
コード例 #7
0
def reviews(request):
    reviews_set = Review.objects.filter(is_active=True).order_by('date')
    department_set = Department.objects.all()

    review_form = ReviewForm(request.POST or None)
    if request.method == 'POST' and review_form.is_valid():
        review_form.save()
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

    appointment_form = AppointmentForm(request.POST or None)
    if request.method == 'POST' and appointment_form.is_valid():
        appointment_form.save()
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

    paginator = Paginator(reviews_set, 4, orphans=2)
    page = request.GET.get('page')
    try:
        articles = paginator.page(page)
    except PageNotAnInteger:
        articles = paginator.page(1)
    except EmptyPage:
        articles = paginator.page(paginator.num_pages)

    return render(
        request, 'reviews.html', {
            "articles": articles,
            "review_form": review_form,
            'appointment_form': appointment_form,
            'departments': department_set
        })
コード例 #8
0
 def test_allows_changes_after_waitlisted_decision_sent(self):
     self._apply()
     self._review(status="Waitlisted")
     form = ReviewForm(instance=self.user.application,
                       data=self.data,
                       request=self.request)
     self.assertTrue(form.is_valid())
コード例 #9
0
ファイル: views.py プロジェクト: S0Imyr/Projet9
def create_review(request, id_ticket=None):
    review = None
    context = {}
    if id_ticket is not None:
        ticket = get_object_or_404(Ticket, pk=id_ticket)
        context = {'post': {'content': ticket}}
        review = Review(ticket=ticket,
                        rating=None,
                        headline=None,
                        body=None,
                        user=request.user,
                        time_created=None)
    else:
        review = Review(ticket=None,
                        rating=None,
                        headline=None,
                        body=None,
                        user=request.user,
                        time_created=None)
    if request.method == 'GET':
        form = ReviewForm(instance=review)
        context['form'] = form
        return render(request, 'review/addreview.html', context)
    elif request.method == 'POST':
        form = ReviewForm(request.POST)
        if form.is_valid():
            form.save()
            ticket.save()
            return redirect('flux')
        else:
            return render(request, 'review/addreview.html', context)
コード例 #10
0
def review_add_view(request, pk):
    user = request.user
    if not user.is_authenticated:
        return HttpResponse(status=403)

    member = Member.objects.get(pk=user.id)
    if member.member_type != 0:
        return HttpResponse(status=401)

    market = Market.objects.get(pk=pk)
    form = ReviewForm()

    if request.method == 'POST':
        form = ReviewForm(data=request.POST)
        if form.is_valid():
            review = form.save(commit=False)
            review.market_idx = market.id
            review.reviewer_idx = member.consumer_idx
            review.reviewer_name = member.username
            review.save()

            market.stars += review.stars
            market.save()
            return redirect('market_post', pk=pk)

    context = {'form': form, 'market': market}
    return render(request, 'review/add.html', context=context)
コード例 #11
0
    def post(self, request):
        form = ReviewForm(request.POST)
        print(form)
        if form.is_valid():

            print(' in review create')
            form.save(commit=True)
        else:
            print('in else')
            form = ReviewForm()
        return render(request, 'companyreview.html', {'form': form})
コード例 #12
0
 def test_does_not_allow_changes_after_reject_decision_sent(self):
     self._apply()
     self._review(status="Rejected")
     form = ReviewForm(instance=self.user.application,
                       data=self.data,
                       request=self.request)
     self.assertFalse(form.is_valid())
     self.assertEqual(len(form.non_field_errors()), 1)
     self.assertIn(
         "Reviews cannot be changed after a decision has been sent.",
         form.non_field_errors()[0],
     )
コード例 #13
0
ファイル: views.py プロジェクト: dolby14/reviewform
def sample(request):
    rev_form = ReviewForm()

    if request.POST:
        rev_form = ReviewForm(request.POST)

    if rev_form.is_valid():
        form1 = rev_form.save()


    context={'form1':rev_form}

    return render(request, "forms.html", context)
コード例 #14
0
    def post(self, request, pk):
        product = get_object_or_404(Product, id=pk)
        form = ReviewForm(data=request.POST)

        if form.is_valid():
            review = Review.objects.create(
                author=self.request.user,
                product=product,
                text=form.cleaned_data.get('text'),
                rating=form.cleaned_data.get('rating')
                )
            review.save()
        return redirect('review:product-list')
コード例 #15
0
    def test_save_with_commit_false(self):
        """
        When save is called with commit=False, the review should be set on the form
        and form.save_m2m should be set to form._save_m2m_and_review()
        """
        self._apply()

        form = ReviewForm(instance=self.user.application,
                          data=self.data,
                          request=self.request)
        form.is_valid()
        form.save(commit=False)

        self.assertIsInstance(form.review, Review)

        self.user.refresh_from_db()
        self.assertFalse(hasattr(self.user.application, "review"))

        form.save_m2m()
        self.user.refresh_from_db()
        self.assertTrue(hasattr(self.user.application, "review"))
        self.assertEqual(form.review, self.user.application.review)
コード例 #16
0
def review_update(request, service_id, review_id):
    categories = Category.objects.all().order_by('updated_at')
    my_re = Review.objects.get(pk=review_id)
    try:
        service = Service.objects.get(pk=service_id)
    except:
        raise Http404
    review = Review.objects.filter(service_obj=service)
    review_form = ReviewForm(instance=my_re)
    if request.method=="POST":
        updated_form = ReviewForm(request.POST, instance=my_re)
        if updated_form.is_valid():
            updated_form.save()
            return redirect('my_review')
    return render(request, 'service.html', {'review':review,'review_form':review_form,'categories':categories,'service':service})
コード例 #17
0
ファイル: views.py プロジェクト: S0Imyr/Projet9
def modify_review(request, id_review):
    context = {}
    review = get_object_or_404(Review, pk=id_review)
    if request.method == 'GET':
        if review is None:
            pass
        else:
            form = ReviewForm(instance=review)
            context = {'post': {'content': review.ticket}, 'form': form}
        return render(request, 'review/addreview.html', context)
    elif request.method == 'POST':
        form = ReviewForm(request.POST, instance=review)
        if form.is_valid():
            form.save()
            return redirect('posts')
コード例 #18
0
    def test_save_form_with_no_existing_review(self):
        self._apply()

        form = ReviewForm(instance=self.user.application,
                          data=self.data,
                          request=self.request)
        self.assertTrue(form.is_valid())
        form.save()

        self.user.refresh_from_db()
        self.assertTrue(hasattr(self.user.application, "review"))

        review = self.user.application.review
        for field in self.data:
            self.assertEqual(getattr(review, field), self.data[field])
        self.assertEqual(review.reviewer, self.reviewer2)
コード例 #19
0
ファイル: views.py プロジェクト: Rae41196/GlamHub
def add_review_to_portfolio(request, pk):
    portfolio = get_object_or_404(ArtistPortfolio, pk=pk)
    if request.POST:
        form = ReviewForm(request.POST)
        if form.is_valid():
            review = form.save(commit=False)
            review.portfolio = portfolio
            review.name = request.user
            review.save()

            messages.success(request, "Review created successfully ")
            url = reverse_lazy('artist:detail',
                               kwargs={'slug': portfolio.slug})
            return redirect(url)

    form = ReviewForm(initial={'portfolio': portfolio})
    return render(request, 'reviews/add_review.html', {'form': form})
コード例 #20
0
    def post(self, request, *args, **kwargs):
        submission = Submission.objects.get(pk=kwargs.get('pk', None))

        if submission.status == 0:
            submission.status = 1
            submission.save()
            return redirect('review', submission.pk)
        elif submission.status == 1:
            form = ReviewForm(request.POST)
            if form.is_valid():
                review = Review(reviewer=request.user.judge,
                                submission=submission,
                                comment=request.POST['comment'])
                review.save()
                submission.status = request.POST['status']
                submission.save()
            return redirect('reviews')
コード例 #21
0
def restaurant_detail(request, restaurant_slug):
    restaurant_instance = get_object_or_404(Restaurant, slug=restaurant_slug)
    # content_type = ContentType.objects.get_for_model(Restaurant)
    # obj_id = restaurant.id # Restaurant.objects.get(id=restaurant.id)
    # reviews = Review.objects.filter_by_instance(instance)
    initial_data = {
        'content_type': restaurant_instance.
        get_content_type,  # no need to give () because its a parenthesis
        'object_id': restaurant_instance.id
    }
    form = ReviewForm(request.POST or None, initial=initial_data)
    if form.is_valid():
        print('review form', form.cleaned_data)
        c_type = form.cleaned_data.get('content_type')
        print('c_type', c_type)
        content_type = ContentType.objects.get(model=c_type)
        print('content_type form', content_type)
        object_id = form.cleaned_data.get('object_id')
        review = form.cleaned_data.get('review')
        parent_obj = None
        try:
            parent_id = int(request.POST.get(
                'parent_id'))  # <input type="hidden" name="parent_id" />
            print('parent_id', parent_id)
        except:
            parent_id = None
        if parent_id:
            parent_qs = Review.objects.filter(id=parent_id)
            print('parent_qs', parent_qs)
            if parent_qs.exists():
                parent_obj = parent_qs.first()
                print('parent_obj', parent_obj)
        new_review, created = Review.objects.get_or_create(
            reviewer=request.user,
            content_type=content_type,
            object_id=object_id,
            review=review,
            parent=parent_obj)
        return redirect(new_review.content_object.get_absolute_url())
    reviews = restaurant_instance.review
    return render(
        request, 'restaurant/restaurant_detail.html', {
            'restaurant_instance': restaurant_instance,
            'reviews': reviews,
            'review_form': form
        })
コード例 #22
0
 def post(self, request, *args, **kargs):
     form = ReviewForm(request.POST)
     if (form.is_valid()):
         review = form.save(commit=False)
         review.movie = Movie.objects.get(pk=kargs['movie_pk'])
         review.created_by = User.objects.get(id=request.user.id)
         try:
             review.save()
         except IntegrityError as e:
             old_review = Review.objects.filter(
                 movie=review.movie, created_by=review.created_by)[0]
             old_review.comment = review.comment
             old_review.rate = review.rate
             old_review.save()
         return redirect(
             "movies:movie",
             kargs['movie_pk'],
         )
コード例 #23
0
def review_form(request, username, template_name="review/review_form.html"):
	healer = get_object_or_404(Healer, user__username__iexact=username)
	if not healer.is_review_permission(request.user):
		raise Http404

	reviewer = get_object_or_404(Client, user=request.user)
	try:
		review = Review.objects.filter(healer=healer, reviewer=reviewer)[0]
		notify = False
		title = 'Edit My Review for '
	except IndexError:
		review = None
		notify = True
		title = 'Write a Review for '
	title += str(healer.user.client)
	prev_rating = review.rating if review else None

	fb = request.GET.get('fb', False)
	if fb:
		template_name = "review/review_fb_form.html"

	form = ReviewForm(request.POST or None, instance=review)
	if form.is_valid():
		review = form.save(commit=False)
		review.healer = healer
		review.reviewer = reviewer
		review.save()
		if notify:
			review.notify()
		healer.update_rating(review.rating, prev_rating)
		if healer.review_permission == Healer.VISIBLE_EVERYONE and not is_my_client(healer.user, request.user):
			friend_process(request, 'clients', healer.user.id, 'invite')

		return redirect(reverse('review_form_success', args=[healer.user.username]) + ('?fb=1' if fb else ''))

	return render_to_response(template_name,
		{
			"title": title,
			"healer": healer,
			"form": form,
			"fb": fb
		},
		context_instance=RequestContext(request))
コード例 #24
0
    def test_save_form_does_not_clear_decision_sent_date_for_waitlisted_changes(
            self):
        """
        When waitlisted, changes are still allowed to the review. Unlike above, if
        their status is not changed to something else, changes get saved but
        decision_sent_date should not get cleared.
        """
        self._apply()
        self._review(status="Waitlisted")

        form = ReviewForm(instance=self.user.application,
                          data=self.data,
                          request=self.request)
        self.assertTrue(form.is_valid())
        form.save()

        self.user.refresh_from_db()

        review = self.user.application.review
        self.assertIsNotNone(review.decision_sent_date)
コード例 #25
0
    def test_save_form_with_existing_review(self):
        """
        Reviews are allowed to be changed as long as a decision
        has not been sent (tested above)
        """
        self._apply()
        self._review(decision_sent_date=None)

        form = ReviewForm(instance=self.user.application,
                          data=self.data,
                          request=self.request)
        self.assertTrue(form.is_valid())
        form.save()

        self.user.refresh_from_db()

        review = self.user.application.review
        for field in self.data:
            self.assertEqual(getattr(review, field), self.data[field])
        # The reviewer should be updated
        self.assertEqual(review.reviewer, self.reviewer2)
コード例 #26
0
ファイル: views.py プロジェクト: kfarr/vidhackday
def create_review(request):
	# Create one review
	from review.forms import ReviewForm

	if request.method == 'POST':
		form = ReviewForm(request.POST)
#		if review: form = ReviewForm(request.POST, instance=review)

		if form.is_valid():
			instance = form.save()
			messages.success(request, "This review has been saved.")
			instance.user = request.user
			instance.save()
#			return HttpResponseRedirect(reverse('review.views.dashboard_view', ))
		else:
			messages.error(request, "Unable to save this review.")
	else:
		form = ReviewForm()
#		if review: form = ReviewForm(instance = review)

	movies = Movie.objects.all()
	return render_to_response('create_review.html', {'form': form, 'movies': movies}, context_instance=RequestContext(request))
コード例 #27
0
ファイル: views.py プロジェクト: kpx13/wedding
def page(request):
    c = get_common_context(request)
    if request.POST and request.POST['action'] == 'call':
        call_form = RequestForm(request.POST)
        if call_form.is_valid():
            call_form.save()
            call_form = RequestForm()
            messages.success(request, u'Спасибо! В ближайшее время мы Вам перезвоним.')
            return HttpResponseRedirect('/')
    else:
        call_form = RequestForm()
        
    if request.POST and request.POST['action'] == 'request':
        reg_form = RegisterForm(request.POST)
        if reg_form.is_valid():
            reg_form.save()
            reg_form = RegisterForm()
            messages.success(request, u'Спасибо! Ваша заявка отправлена.')
            return HttpResponseRedirect('/')
    else:
        reg_form = RegisterForm()
        
    if request.POST and request.POST['action'] == 'review':
        review_form = ReviewForm(request.POST)
        if review_form.is_valid():
            review_form.save()
            review_form = ReviewForm()
            messages.success(request, u'Спасибо! Ваш отзыв отправлен.')
            return HttpResponseRedirect('/')
    else:
        review_form = ReviewForm()
    
    c['call_form'] = call_form
    c['reg_form'] = reg_form
    c['review_form'] = review_form
    c['photos'] = Photo.objects.all()
    c['reviews'] = Review.objects.all()
    return render_to_response('base.html', c, context_instance=RequestContext(request))
コード例 #28
0
    def test_save_form_clears_decision_sent_date_when_changing_from_waitlisted(
            self):
        """
        If the status of the review has been changed from waitlisted to something
        else, clear the decision sent date so that they can be sent a new notification
        email. The form will pass validation if a field has changed after a decision
        has been sent only if they are waitlisted, tested above.
        """
        self._apply()
        self._review(status="Waitlisted")
        data = self.data.copy()
        data["status"] = "Accepted"

        form = ReviewForm(instance=self.user.application,
                          data=data,
                          request=self.request)
        self.assertTrue(form.is_valid())
        form.save()

        self.user.refresh_from_db()

        review = self.user.application.review
        self.assertIsNone(review.decision_sent_date)
コード例 #29
0
    def test_form_valid_with_no_changes_decision_sent_not_waitlisted(self):
        """
        When a decision has been sent and the user is rejected or accepted,
        form submissions with no changed data should be valid. This is necessary
        for the admin site which submits each form, regardless of whether it
        is dirty or not.
        """
        self._apply()
        self._review()

        data = {}
        for field in (
                "interest",
                "quality",
                "experience",
                "reviewer_comments",
                "status",
        ):
            data[field] = getattr(self.user.application.review, field)

        form = ReviewForm(instance=self.user.application,
                          data=data,
                          request=self.request)
        self.assertTrue(form.is_valid())
コード例 #30
0
ファイル: views.py プロジェクト: S0Imyr/Projet9
def create_ticketreview(request):
    if request.method == 'GET':
        form = TicketReviewForm()
        return render(request, 'review/addticketreview.html', {'form': form})
    elif request.method == 'POST':
        data = request.POST
        ticket_form = TicketForm({
            'title': data['ticket_title'],
            'user': request.user,
            'description': data['ticket_description'],
            'image': data['ticket_image']
        })
        if ticket_form.is_valid():
            ticket = ticket_form.save()
            review_form = ReviewForm({
                'ticket': ticket,
                'rating': data['review_rating'],
                'headline': data['review_headline'],
                'body': data['review_body'],
                'user': request.user
            })
            if review_form.is_valid():
                review_form.save()
                return redirect('flux')
コード例 #31
0
ファイル: views.py プロジェクト: MechanisM/pycon
def review_detail(request, pk):
    proposals = Proposal.objects.select_related("result")
    proposal = get_object_or_404(proposals, pk=pk)
    
    admin = request.user.groups.filter(name="reviewers-admins").exists()
    speakers = [s.user for s in proposal.speakers()]
    
    if proposal.session_type == Proposal.SESSION_TYPE_TUTORIAL:
        if not request.user.groups.filter(name="reviewers-tutorials").exists():
            return access_not_permitted(request)
    else:
        if not request.user.groups.filter(name="reviewers").exists():
            return access_not_permitted(request)
    
    if not admin and request.user in speakers:
        return access_not_permitted(request)
    
    try:
        latest_vote = LatestVote.objects.get(proposal=proposal, user=request.user)
    except LatestVote.DoesNotExist:
        latest_vote = None
    
    if request.method == "POST":
        if request.user in speakers:
            return access_not_permitted(request)
        if proposal.invited:
            return access_not_permitted(request)
        
        if "vote_submit" in request.POST:
            review_form = ReviewForm(request.POST)
            if review_form.is_valid():
                
                review = review_form.save(commit=False)
                review.user = request.user
                review.proposal = proposal
                review.save()
                
                return redirect(request.path)
            else:
                message_form = SpeakerCommentForm()
        elif "message_submit" in request.POST:
            message_form = SpeakerCommentForm(request.POST)
            if message_form.is_valid():
                
                message = message_form.save(commit=False)
                message.user = request.user
                message.proposal = proposal
                message.save()
                
                for speaker in speakers:
                    if speaker and speaker.email:
                        ctx = {
                            "proposal": proposal,
                            "message": message,
                            "reviewer": False,
                        }
                        send_email(
                            [speaker.email], "proposal_new_message",
                            context = ctx
                        )
                
                return redirect(request.path)
        elif "result_submit" in request.POST:
            if admin:
                result = request.POST["result_submit"]
                
                if result == "accept":
                    proposal.result.accepted = True
                    proposal.result.save()
                elif result == "reject":
                    proposal.result.accepted = False
                    proposal.result.save()
                elif result == "undecide":
                    proposal.result.accepted = None
                    proposal.result.save()
            
            return redirect(request.path)
    else:
        initial = {}
        if latest_vote:
            initial["vote"] = latest_vote.vote
        review_form = ReviewForm(initial=initial)
        message_form = SpeakerCommentForm()
    
    proposal.comment_count = proposal.result.comment_count
    proposal.total_votes = proposal.result.vote_count
    proposal.plus_one = proposal.result.plus_one
    proposal.plus_zero = proposal.result.plus_zero
    proposal.minus_zero = proposal.result.minus_zero
    proposal.minus_one = proposal.result.minus_one
    
    reviews = Review.objects.filter(proposal=proposal).order_by("-submitted_at")
    
    return render_to_response("reviews/review_detail.html", {
        "proposal": proposal,
        "latest_vote": latest_vote,
        "reviews": reviews,
        "review_form": review_form,
        "message_form": message_form
    }, context_instance=RequestContext(request))
コード例 #32
0
ファイル: views.py プロジェクト: didtjdwls12/Good_people
def service(request, service_id):
    categories = Category.objects.all().order_by('updated_at')
    try:
        service = Service.objects.get(pk=service_id)
    except:
        raise Http404
    if request.method == 'POST':
        message_form = MessageForm(request.POST)
        if message_form.is_valid():
            message = message_form.save(commit=False)
            message.sender = request.user
            message.service = service
            message.recipient = message.service.author
            message.content = message_form.cleaned_data.get("content")
            message.save()
            messages.success(request, '메시지를 성공적으로 전송했습니다.')
    message_form = MessageForm()
    service_author = User.objects.filter(service=service)
    category = Category.objects.filter(name=service.title)
    add_to_cart = AddServiceForm(initial={'quantity': 1})
    if request.method == "POST":
        review_form = ReviewForm(request.POST, request.FILES)
        if review_form.is_valid():
            temp_form = review_form.save(commit=False)
            temp_form.author = request.user
            temp_form.service_obj = service
            review_form.save()
            messages.success(request, '리뷰를 등록하였습니다.')
    review_form = ReviewForm()
    review = Review.objects.filter(service_obj=service)
    # 비슷한 서비스 (같은 카테고리 내 최신게시물 4개)
    c_ser = Service.objects.filter(
        category=service.category).order_by('-updated_at')
    paginator = Paginator(c_ser, 4)
    page = request.GET.get('page')
    c_ser = paginator.get_page(page)
    services = Service.objects.all().annotate(
        average_rating=Avg('review__rating'))
    if request.method == 'POST':
        login_form = AuthenticationForm(request=request, data=request.POST)
        if login_form.is_valid():
            username = login_form.cleaned_data.get('username')
            password = login_form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return render(
                    request, 'service.html', {
                        'c_ser': c_ser,
                        'services': services,
                        'review': review,
                        'review_form': review_form,
                        'service': service,
                        'message_form': message_form,
                        'add_to_cart': add_to_cart,
                        'categories': categories,
                        'category': category,
                        'login_form': login_form,
                        'service_author': service_author
                    })
    login_form = AuthenticationForm()
    return render(
        request, 'service.html', {
            'c_ser': c_ser,
            'services': services,
            'review': review,
            'review_form': review_form,
            'service': service,
            'message_form': message_form,
            'add_to_cart': add_to_cart,
            'categories': categories,
            'category': category,
            'login_form': login_form,
            'service_author': service_author
        })
コード例 #33
0
 def test_review_text_is_required(self):
     form = ReviewForm({'body': ''})
     self.assertFalse(form.is_valid())
     self.assertIn('review_text', form.errors.keys())
     self.assertEqual(form.errors['review_text'][0],
                      'This field is required.')
コード例 #34
0
ファイル: views.py プロジェクト: rhtm123/tourepedia
def tour(request, slug):
    context_dict = {}

    interested = False

    if request.method == 'POST':

        people_form = PeopleForm(data=request.POST)

        if people_form.is_valid():
            people = people_form.save(commit=False)
            tour = TourDetail.objects.get(slug=slug)
            people.tourdetail = tour
            people.save()

            interested = True
    else:
        people_form = PeopleForm()

    reviewed = False

    if request.method == 'POST':
        review_form = ReviewForm(data=request.POST)
        if review_form.is_valid():
            review = review_form.save(commit=False)
            tourdetail = TourDetail.objects.get(slug=slug)

            userprofile = UserProfile.objects.get(user=request.user)

            review.tourdetail = tourdetail
            review.user = request.user
            review.user_image = userprofile.picture

            review.save()
            reviewed = True

            return redirect('tour', slug=review.tourdetail.slug)

    else:
        review_form = ReviewForm()

    try:

        tourdetail = TourDetail.objects.get(slug=slug)

        tourinclusions = TourInclusion.objects.filter(
            inclusion=tourdetail.inclusion_type)
        tourexclusions = TourExclusion.objects.filter(
            exclusion=tourdetail.exclusion_type)

        terms = TermNCondition.objects.filter(term=tourdetail.term_type)

        touritinerarys = TourItinerary.objects.filter(tourdetail=tourdetail)

        tourimages = TourImage.objects.filter(tourdetail=tourdetail)

        tourcategorys = TourCategory.objects.filter(tourdetail=tourdetail)

        importantpoints = ImportantPoint.objects.filter(tourdetail=tourdetail)

        reviews = ReviewForTours.objects.filter(tourdetail=tourdetail)

        context_dict['importantpoints'] = importantpoints

        context_dict['terms'] = terms
        blogs = Title.objects.all().order_by('-pub_date')[:5]
        context_dict['blogs'] = blogs

        context_dict['tourinclusions'] = tourinclusions
        context_dict['tourexclusions'] = tourexclusions
        context_dict['interested'] = interested
        context_dict['people_form'] = people_form

        context_dict['tourdetail'] = tourdetail

        context_dict['touritinerarys'] = touritinerarys
        context_dict['tourimages'] = tourimages
        context_dict['tourcategorys'] = tourcategorys

        context_dict['reviews'] = reviews
        context_dict['reviewed'] = reviewed
        context_dict['review_form'] = review_form

    except TourDetail.DoesNotExist:
        raise Http404("Page does not exist")

    return render(
        request,
        'tours/tour.html',
        context_dict,
    )
コード例 #35
0
ファイル: views.py プロジェクト: HackerWithData/BackEnd
    def post(self, request, o_id):
        template_name = 'meister/meister.html'
        meister = Meister.objects.get(lic_num=o_id)
        try:
            bgimage = BackgroundPhoto.objects.get(
                content_type=ContentType.objects.get(model='meister'),
                object_id=o_id)
        except BackgroundPhoto.DoesNotExist:
            bgimage = None
        #data_source = 'California Contractors State License Board'

        try:
            review = Review.objects.filter(
                content_type=ContentType.objects.get(model='meister'),
                object_id=o_id,
                review_status='A')
        except:
            review = None
        # rating
        RATING_STAR_MAX = 10
        meister_ratings = Rating.objects.filter(
            content_type=ContentType.objects.get(model='meister'),
            object_id=o_id).order_by('ratings_average')
        ratings = {}
        ratings['stars'] = range(RATING_STAR_MAX, 0, -1)
        # TODO:NEED TO CHANGE HERE
        ratings['overall'] = (avg_rating(review, 'Q') + avg_rating(
            review, 'E') + avg_rating(review, 'L')) / 3
        try:
            ratings['rate'] = [(item.average,
                                round(item.average * 1.0 / RATING_STAR_MAX, 2))
                               for item in meister_ratings]
        except:
            pass
        project_photos = Photo.objects.filter(
            content_type=ContentType.objects.get(model='meister'),
            object_id=o_id)
        if request.user.is_anonymous():
            p_lic_num = None
        else:
            try:
                p_lic_num = str(request.user.professional_profiles.first().
                                professional.lic_num)
            except:
                p_lic_num = -1

        # other situation
        user_rating_form = UserRatingForm()
        if request.user.is_authenticated:
            review_form = ReviewForm(
                initial={
                    'first_name': request.user.first_name,
                    'last_name': request.user.last_name,
                    'project_date': datetime.datetime.today().strftime(
                        '%Y-%m-%d')
                })
        else:
            review_form = ReviewForm(initial={
                'project_date':
                datetime.datetime.today().strftime('%Y-%m-%d')
            })
        try:
            overview = Overview.objects.get(
                content_type=ContentType.objects.get(model='meister'),
                object_id=o_id).overview
        except Overview.DoesNotExist:
            overview = _(
                """{lic_name} is a professional located in {full_state_name}. The professional is verified as 
            active when we checked last time. If you would like to know {lic_name} more, please contact us and we will 
            share more information and data about this meister to you."""
            ).format(lic_name=meister.lic_name,
                     full_state_name=get_state_full_name(meister.state))
        overview_form = OverviewForm(initial={'overview': overview})
        info_dict = {
            "meister": meister,
            "bg_image": bgimage,
            "overview": overview,
            'review': review,
            "ratings": ratings,
            'project_photos': project_photos,
            'review_form': review_form,
            "user_rating_form": user_rating_form,
            'p_lic_num': p_lic_num,
            'overview_form': overview_form
        }

        if request.POST.get('review'):
            user_rating_form = UserRatingForm(request.POST)
            review_form = ReviewForm(request.POST)
            # TODO: assign a random password
            # TODO: validator doesn't work
            if review_form.is_valid() and user_rating_form.is_valid():
                model_type = check_professional_type(request)
                review = review_form.save(commit=False)
                if request.user.is_authenticated():
                    review.user = request.user
                review.content_type = ContentType.objects.get(model=model_type)
                review.object_id = o_id
                review.save()

                for field in user_rating_form.cleaned_data:
                    user_rating = UserRating(
                        review=review,
                        rating_type=field[0].upper(),
                        rating_score=int(user_rating_form.cleaned_data[field]))
                    user_rating.save()
                # direct to the page to upload photos
                # TODO: ADD PHOTOFORM VALIDATION FOR SECURITY
                content_type = ContentType.objects.get(model='review')
                object_id = int(review.id)
                files = request.FILES.getlist('project photos')
                if len(files) > 0:
                    for f in files:
                        instance = Photo.objects.create(
                            img=f,
                            title=f.name,
                            content_type=content_type,
                            object_id=object_id)
                        instance.save()
                else:
                    pass
                # request.session.pop('review_form', None)
                # TODO: redirect the sucess url and add bootstrap messages: success
                return redirect(request.path)
            else:
                # request.session.update({'review_form': review_form.data})
                info_dict['review_form'] = review_form
                info_dict["user_rating_form"] = user_rating_form
                messages.warning(
                    request,
                    _('Submit Failed. Please verify your content is correct.'))
                return render(request, template_name, {"info_dict": info_dict})
        elif request.POST.get('overview'):
            edit_overview(request, o_id)
            return redirect(request.path)
        else:
            raise Http404(_("Error Pages!"))
コード例 #36
0
 def test_name_is_required(self):
     form = ReviewForm({'name': 'Test name'})
     self.assertFalse(form.is_valid())