def _testRatingCategories(self): """Test the different rating categories""" try: user = auth.User.objects.all()[0] category = models.Category.objects.all()[0] host = models.Host(user=user, category=category, url='http://blah.com') host.save() comment = models.Comment(text='test', host=host) comment.save() types = models.RatingType.objects.all() items = [] for value, type in zip([3, 4, 5], types): tmp_obj = models.Rating(comment=comment, type=type, value=value) tmp_obj.save() items.append(tmp_obj) assert comment.rating() - 4.0 < .0001, comment.rating() comment2 = models.Comment(text='test', host=host) comment2.save() for value, type in zip([3, 3, 3], types): tmp_obj = models.Rating(comment=comment2, type=type, value=value) tmp_obj.save() items.append(tmp_obj) assert comment2.rating() - 3.0 < .0001, comment2.rating() assert host.rating() == 3.5, host.rating() ratings = host.ratings() assert ratings['Support'] == 3.5, ratings assert ratings['Features'] == 3.0 assert ratings['Uptime'] == 4.0 finally: try: for tmp_obj in items: tmp_obj.delete() comment.delete() comment2.delete() host.delete() except: pass
def _testHostRating(self): """Test individual host rating""" try: user = auth.User.objects.all()[0] category = models.Category.objects.all()[0] host = models.Host(user=user, category=category, url='http://blah.com') host.save() comment = models.Comment(text='test', host=host) comment.save() types = models.RatingType.objects.all() items = [] for value, type in zip([3, 4, 5], types): tmp_obj = models.Rating(comment=comment, type=type, value=value) tmp_obj.save() items.append(tmp_obj) assert comment.rating() - 4 < .0001, comment.rating() comment2 = models.Comment(text='test', host=host) comment2.save() for value, type in zip([3, 3, 3], types): tmp_obj = models.Rating(comment=comment2, type=type, value=value) tmp_obj.save() items.append(tmp_obj) assert comment2.rating() - 3.0 < .0001, comment2.rating() assert host.rating() == 3.5, host.rating() assert host.rating(100) == 70, host.rating(100) finally: try: for tmp_obj in items: tmp_obj.delete() comment.delete() comment2.delete() host.delete() except: pass
def _testRatingLimit(self): """Test the rating limit""" comment = models.Comment.objects.all()[0] type = models.RatingType.objects.all()[0] try: val = type.limit + 10 rating = models.Rating(comment=comment, type=type, value=val) rating.save() assert rating.value == type.limit finally: rating.delete()
def _testCommentRating(self): """Test individual comment rating""" try: host = models.Host.objects.all()[0] comment = models.Comment(text='test', host=host) comment.save() types = models.RatingType.objects.all() items = [] for value, type in zip([3, 4, 5], types): tmp_obj = models.Rating(comment=comment, type=type, value=value) tmp_obj.save() items.append(tmp_obj) assert comment.rating() - 4.0 < .0001, comment.rating() for tmp_obj in items: tmp_obj.delete() items = [] for value, type in zip([3, 3], types): tmp_obj = models.Rating(comment=comment, type=type, value=value) tmp_obj.save() items.append(tmp_obj) assert comment.rating() == 3.0, comment.rating() finally: for tmp_obj in items: tmp_obj.delete() comment.delete()
def create_comment(host, ratings): """Helper function for creating comments""" comment2 = models.Comment(text='test', host=host) comment2.save() types = models.RatingType.objects.all() items = [] for value, type in zip(ratings, types): tmp_obj = models.Rating(comment=comment2, type=type, value=value) tmp_obj.save() items.append(tmp_obj) return items
def show_host(request, slug): """Return the view for an host listing""" messages = {'success': [], 'errors': []} try: host = models.Host.objects.get(slug=slug) if request.method == 'POST' and request.POST.get( 'form_submit') == 'comment': form = forms.CommentForm(request.POST) if form.is_valid(): name = form.cleaned_data['name'] email = form.cleaned_data['email'] website = form.cleaned_data.get('website', None) text = form.cleaned_data['text'] comment = models.Comment(host=host, name=name, email=email, website=website, text=text, active=True, ip=request.META['REMOTE_ADDR']) comment.save() for name in ['Features', 'Uptime', 'Support']: value = form.cleaned_data.get( 'rating_' + name.lower() + '_val', -1) if value == -1: messages['errors'].append( 'You must ' + 'specify a valid rating to review a host') # no transactions comment.delete() break type = models.RatingType.objects.get(name=name) rating = models.Rating(type=type, value=value, comment=comment) rating.save() if len(messages['errors']) == 0: messages['success'].append( 'Successfully added your review to the site.' + ' Scroll up to see it. Thanks for helping! If you don\'t' + ' see your comment please wait a few minutes, we\'re' + ' caching some pages') form = forms.CommentForm() else: form = forms.CommentForm() except models.Host.DoesNotExist: host = None form = None ver = request.GET.get('ver') if ver: template = "variations/host_%s.html" % ver else: template = "host.html" return response.render(template, { 'host': host, 'form': form, 'messages': messages, 'request': request })