Skip to content

Commit

Permalink
Switch style of form to assign fields to instance param
Browse files Browse the repository at this point in the history
  • Loading branch information
codeinthehole committed Aug 7, 2013
1 parent 51156b9 commit 51a772e
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 11 deletions.
6 changes: 0 additions & 6 deletions oscar/apps/catalogue/reviews/forms.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from django import forms
from django.db.models import get_model


Vote = get_model('reviews', 'vote')
ProductReview = get_model('reviews', 'productreview')

Expand All @@ -23,11 +22,6 @@ class Meta:

class VoteForm(forms.ModelForm):

def __init__(self, review, user, *args, **kwargs):
super(VoteForm, self).__init__(*args, **kwargs)
self.instance.review = review
self.instance.user = user

class Meta:
model = Vote
fields = ()
3 changes: 2 additions & 1 deletion oscar/apps/catalogue/reviews/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ def post(self, request, *args, **kwargs):
product = get_object_or_404(Product, pk=self.kwargs['product_pk'])
review = get_object_or_404(ProductReview, pk=self.kwargs['pk'])

form = VoteForm(review, request.user, data=request.POST)
instance = Vote(review=review, user=request.user)
form = VoteForm(data=request.POST, instance=instance)
if form.is_valid():
review.vote_up(request.user)
messages.success(request, _("Thanks for voting!"))
Expand Down
10 changes: 6 additions & 4 deletions tests/integration/catalogue/reviews/form_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,17 @@ def setUp(self):
user=self.reviewer)

def test_allows_real_users_to_vote(self):
form = forms.VoteForm(self.review, self.voter, {})
instance = models.Vote(review=self.review, user=self.voter)
form = forms.VoteForm(data={}, instance=instance)
self.assertTrue(form.is_valid())

def test_prevents_users_from_voting_more_than_once(self):
self.review.vote_up(self.voter)
form = forms.VoteForm(self.review, self.voter, {})
instance = models.Vote(review=self.review, user=self.voter)
form = forms.VoteForm({}, instance=instance)
self.assertFalse(form.is_valid())

def test_prevents_users_voting_on_their_own_reviews(self):
form = forms.VoteForm(self.review, self.reviewer, {})
instance = models.Vote(review=self.review, user=self.reviewer)
form = forms.VoteForm({}, instance=instance)
self.assertFalse(form.is_valid())

0 comments on commit 51a772e

Please sign in to comment.