Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    def _testKarma(self):
        """Test karma"""

        try:
            host = models.Host.objects.all()[0]
            comment = models.Comment(text='test', host=host)
            comment.save()

            karma = models.Karma(comment=comment, value=2, ip='2345')
            karma.save()

            assert karma.value == 2
            assert comment.karma() == 2, comment.karma()

            karma2 = models.Karma(comment=comment, value=5, ip='234')
            karma2.save()

            assert comment.karma() == 7, comment.karma()

            karma3 = models.Karma(comment=comment, value=-10, ip='102')
            karma3.save()

            assert comment.karma() == -3, comment.karma()

        except:
            raise
        finally:
            try:
                karma.delete()
                karma2.delete()
                karma3.delete()
                comment.delete()
            except UnboundLocalError:
                pass
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
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
    })