Esempio n. 1
0
 def test_edit_review_form(self):
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     self.assertTemplateUsed(r, 'reviews/edit_review.html')
     r = self.client.get(helpers.url('addons.reviews.detail',
                                     self.addon.slug, 218468))
     self.assertTemplateUsed(r, 'reviews/edit_review.html')
Esempio n. 2
0
def reply(request, addon, review_id):
    is_admin = acl.action_allowed(request, 'Addons', 'Edit')
    is_author = acl.check_addon_ownership(request, addon, dev=True)
    if not (is_admin or is_author):
        raise PermissionDenied

    review = get_object_or_404(Review.objects, pk=review_id, addon=addon)
    form = forms.ReviewReplyForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        d = dict(reply_to=review, addon=addon,
                 defaults=dict(user=request.amo_user))
        reply, new = Review.objects.get_or_create(**d)
        for key, val in _review_details(request, addon, form).items():
            setattr(reply, key, val)
        reply.save()
        action = 'New' if new else 'Edited'
        log.debug('%s reply to %s: %s' % (action, review_id, reply.id))

        if new:
            reply_url = helpers.url('addons.reviews.detail', addon.slug,
                                    review.id, add_prefix=False)
            data = {'name': addon.name,
                    'reply_title': reply.title,
                    'reply': reply.body,
                    'reply_url': helpers.absolutify(reply_url)}
            emails = [review.user.email]
            sub = u'Mozilla Add-on Developer Reply: %s' % addon.name
            send_mail('reviews/emails/reply_review.ltxt',
                      sub, emails, Context(data), 'reply')

        return redirect(helpers.url('addons.reviews.detail', addon.slug,
                                    review_id))
    ctx = dict(review=review, form=form, addon=addon)
    return render(request, 'reviews/reply.html', ctx)
Esempio n. 3
0
 def test_edit_review_form(self):
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     self.assertTemplateUsed(r, 'reviews/edit_review.html')
     r = self.client.get(
         helpers.url('addons.reviews.detail', self.addon.slug, 218468))
     self.assertTemplateUsed(r, 'reviews/edit_review.html')
Esempio n. 4
0
 def setUp(self):
     super(TestMobileReviews, self).setUp()
     self.addon = Addon.objects.get(id=1865)
     self.user = UserProfile.objects.get(email='*****@*****.**')
     self.login_regular()
     self.add = helpers.url('addons.reviews.add', self.addon.slug)
     self.list = helpers.url('addons.reviews.list', self.addon.slug)
Esempio n. 5
0
 def link(self, category):
     """Link for the feed as a whole"""
     if self.category:
         base = url('browse.search-tools.rss', self.category.slug)
     else:
         base = url('browse.search-tools.rss')
     return absolutify(base + '?sort=' + self.sort)
Esempio n. 6
0
 def link(self, category):
     """Link for the feed as a whole"""
     if self.category:
         base = url('browse.search-tools.rss', self.category.slug)
     else:
         base = url('browse.search-tools.rss')
     return absolutify(base + '?sort=' + self.sort)
Esempio n. 7
0
def reply(request, addon, review_id):
    is_admin = acl.action_allowed(request, 'Addons', 'Edit')
    is_author = acl.check_addon_ownership(request, addon, dev=True)
    if not (is_admin or is_author):
        raise PermissionDenied

    review = get_object_or_404(Review.objects, pk=review_id, addon=addon)
    form = forms.ReviewReplyForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        d = dict(reply_to=review, addon=addon,
                 defaults=dict(user=request.user))
        reply, new = Review.objects.get_or_create(**d)
        for key, val in _review_details(request, addon, form).items():
            setattr(reply, key, val)
        reply.save()
        action = 'New' if new else 'Edited'
        log.debug('%s reply to %s: %s' % (action, review_id, reply.id))

        if new:
            reply_url = helpers.url('addons.reviews.detail', addon.slug,
                                    review.id, add_prefix=False)
            data = {'name': addon.name,
                    'reply_title': reply.title,
                    'reply': reply.body,
                    'reply_url': helpers.absolutify(reply_url)}
            emails = [review.user.email]
            sub = u'Mozilla Add-on Developer Reply: %s' % addon.name
            send_mail('reviews/emails/reply_review.ltxt',
                      sub, emails, Context(data), 'reply')

        return redirect(helpers.url('addons.reviews.detail', addon.slug,
                                    review_id))
    ctx = dict(review=review, form=form, addon=addon)
    return render(request, 'reviews/reply.html', ctx)
Esempio n. 8
0
def add(request, addon, template=None):
    if addon.has_author(request.user):
        raise PermissionDenied
    form = forms.ReviewForm(request.POST or None)
    if (request.method == 'POST' and form.is_valid() and
            not request.POST.get('detailed')):
        details = _review_details(request, addon, form)
        review = Review.objects.create(**details)
        if 'flag' in form.cleaned_data and form.cleaned_data['flag']:
            rf = ReviewFlag(review=review,
                            user_id=request.user.id,
                            flag=ReviewFlag.OTHER,
                            note='URLs')
            rf.save()

        amo.log(amo.LOG.ADD_REVIEW, addon, review)
        log.debug('New review: %s' % review.id)

        reply_url = helpers.url('addons.reviews.reply', addon.slug, review.id,
                                add_prefix=False)
        data = {'name': addon.name,
                'rating': '%s out of 5 stars' % details['rating'],
                'review': details['body'],
                'reply_url': helpers.absolutify(reply_url)}

        emails = [a.email for a in addon.authors.all()]
        send_mail('reviews/emails/add_review.ltxt',
                  u'Mozilla Add-on User Review: %s' % addon.name,
                  emails, Context(data), 'new_review')

        return redirect(helpers.url('addons.reviews.list', addon.slug))
    return render(request, template, dict(addon=addon, form=form))
Esempio n. 9
0
 def setUp(self):
     super(TestMobileReviews, self).setUp()
     self.addon = Addon.objects.get(id=1865)
     self.user = UserProfile.objects.get(email='*****@*****.**')
     self.login_regular()
     self.add = helpers.url('addons.reviews.add', self.addon.slug)
     self.list = helpers.url('addons.reviews.list', self.addon.slug)
Esempio n. 10
0
def add(request, addon, template=None):
    if addon.has_author(request.user):
        raise PermissionDenied
    form = forms.ReviewForm(request.POST or None)
    if (request.method == 'POST' and form.is_valid() and
            not request.POST.get('detailed')):
        details = _review_details(request, addon, form)
        review = Review.objects.create(**details)
        if 'flag' in form.cleaned_data and form.cleaned_data['flag']:
            rf = ReviewFlag(review=review,
                            user_id=request.user.id,
                            flag=ReviewFlag.OTHER,
                            note='URLs')
            rf.save()

        amo.log(amo.LOG.ADD_REVIEW, addon, review)
        log.debug('New review: %s' % review.id)

        reply_url = helpers.url('addons.reviews.reply', addon.slug, review.id,
                                add_prefix=False)
        data = {'name': addon.name,
                'rating': '%s out of 5 stars' % details['rating'],
                'review': details['body'],
                'reply_url': helpers.absolutify(reply_url)}

        emails = [a.email for a in addon.authors.all()]
        send_mail('reviews/emails/add_review.ltxt',
                  u'Mozilla Add-on User Review: %s' % addon.name,
                  emails, Context(data), 'new_review')

        return redirect(helpers.url('addons.reviews.list', addon.slug))
    return render(request, template, dict(addon=addon, form=form))
Esempio n. 11
0
 def setUp(self):
     super(TestCreate, self).setUp()
     self.add = helpers.url('addons.reviews.add', self.addon.slug)
     self.client.login(username='******', password='******')
     self.user = UserProfile.objects.get(email='*****@*****.**')
     self.qs = Review.objects.filter(addon=1865)
     self.log_count = ActivityLog.objects.count
     self.more = self.addon.get_url_path(more=True)
     self.list = helpers.url('addons.reviews.list', self.addon.slug)
Esempio n. 12
0
 def setUp(self):
     super(TestCreate, self).setUp()
     self.add = helpers.url('addons.reviews.add', self.addon.slug)
     self.client.login(username='******', password='******')
     self.user = UserProfile.objects.get(email='*****@*****.**')
     self.qs = Review.objects.filter(addon=1865)
     self.log_count = ActivityLog.objects.count
     self.more = self.addon.get_url_path(more=True)
     self.list = helpers.url('addons.reviews.list', self.addon.slug)
Esempio n. 13
0
    def test_edit(self):
        url = helpers.url('addons.reviews.edit', self.addon.slug, 218207)
        response = self.client.post(url, {'rating': 2, 'body': 'woo woo'},
                                    X_REQUESTED_WITH='XMLHttpRequest')
        assert response.status_code == 200
        assert '%s' % Review.objects.get(id=218207).body == 'woo woo'

        response = self.client.get(helpers.url('addons.reviews.list',
                                   self.addon.slug))
        doc = pq(response.content)
        assert doc('#review-218207 .review-edit').text() == 'Edit review'
Esempio n. 14
0
    def test_edit(self):
        url = helpers.url('addons.reviews.edit', self.addon.slug, 218207)
        response = self.client.post(url, {
            'rating': 2,
            'body': 'woo woo'
        },
                                    X_REQUESTED_WITH='XMLHttpRequest')
        assert response.status_code == 200
        assert '%s' % Review.objects.get(id=218207).body == 'woo woo'

        response = self.client.get(
            helpers.url('addons.reviews.list', self.addon.slug))
        doc = pq(response.content)
        assert doc('#review-218207 .review-edit').text() == 'Edit review'
Esempio n. 15
0
    def test_edit_reply(self):
        self.login_dev()
        url = helpers.url('addons.reviews.edit', self.addon.slug, 218468)
        response = self.client.post(url, {'title': 'fo', 'body': 'shizzle'},
                                    X_REQUESTED_WITH='XMLHttpRequest')
        assert response.status_code == 200
        reply = Review.objects.get(id=218468)
        assert '%s' % reply.title == 'fo'
        assert '%s' % reply.body == 'shizzle'

        response = self.client.get(helpers.url('addons.reviews.list',
                                   self.addon.slug))
        doc = pq(response.content)
        assert doc('#review-218468 .review-reply-edit').text() == 'Edit reply'
Esempio n. 16
0
 def test_regular_call(self):
     review = self.review
     url = helpers.url('addons.reviews.translate', review.addon.slug,
                       review.id, 'fr')
     r = self.client.get(url)
     eq_(r.status_code, 302)
     eq_(r.get('Location'), 'https://translate.google.com/#auto/fr/yes')
Esempio n. 17
0
    def test_invalid_api_key(self, requests):
        # Mock requests.
        response = mock.Mock()
        response.status_code = 400
        response.json.return_value = {
            'error': {
                'code':
                400,
                'errors': [{
                    'domain': 'usageLimits',
                    'message': 'Bad Request',
                    'reason': 'keyInvalid'
                }],
                'message':
                'Bad Request'
            }
        }
        requests.get.return_value = response

        # Call translation.
        review = self.review
        url = helpers.url('addons.reviews.translate', review.addon.slug,
                          review.id, 'fr')
        r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        eq_(r.status_code, 400)
Esempio n. 18
0
    def test_list(self):
        r = self.client.get(helpers.url('addons.reviews.list',
                                        self.addon.slug))
        eq_(r.status_code, 200)
        doc = pq(r.content)
        reviews = doc('#reviews .item')
        eq_(reviews.length, Review.objects.count())
        eq_(Review.objects.count(), 2)
        eq_(doc('.secondary .average-rating').length, 1)
        eq_(doc('.secondary .no-rating').length, 0)

        r = Review.objects.get(id=218207)
        item = reviews.filter('#review-218207')
        eq_(r.reply_to_id, None)
        eq_(item.hasClass('reply'), False)
        eq_(item.length, 1)
        eq_(item.attr('data-rating'), str(r.rating))

        r = Review.objects.get(id=218468)
        item = reviews.filter('#review-218468')
        eq_(item.length, 1)
        eq_(r.reply_to_id, 218207)
        eq_(item.hasClass('reply'), True)
        eq_(r.rating, None)
        eq_(item.attr('data-rating'), '')
Esempio n. 19
0
 def test_regular_call(self):
     review = self.review
     url = helpers.url('addons.reviews.translate', review.addon.slug,
                       review.id, 'fr')
     r = self.client.get(url)
     eq_(r.status_code, 302)
     eq_(r.get('Location'), 'https://translate.google.com/#auto/fr/yes')
Esempio n. 20
0
    def test_list(self):
        r = self.client.get(helpers.url('addons.reviews.list',
                                        self.addon.slug))
        eq_(r.status_code, 200)
        doc = pq(r.content)
        reviews = doc('#reviews .item')
        eq_(reviews.length, Review.objects.count())
        eq_(Review.objects.count(), 2)
        eq_(doc('.secondary .average-rating').length, 1)
        eq_(doc('.secondary .no-rating').length, 0)

        r = Review.objects.get(id=218207)
        item = reviews.filter('#review-218207')
        eq_(r.reply_to_id, None)
        eq_(item.hasClass('reply'), False)
        eq_(item.length, 1)
        eq_(item.attr('data-rating'), str(r.rating))

        r = Review.objects.get(id=218468)
        item = reviews.filter('#review-218468')
        eq_(item.length, 1)
        eq_(r.reply_to_id, 218207)
        eq_(item.hasClass('reply'), True)
        eq_(r.rating, None)
        eq_(item.attr('data-rating'), '')
Esempio n. 21
0
    def test_edit_reply(self):
        self.login_dev()
        url = helpers.url('addons.reviews.edit', self.addon.slug, 218468)
        response = self.client.post(url, {
            'title': 'fo',
            'body': 'shizzle'
        },
                                    X_REQUESTED_WITH='XMLHttpRequest')
        assert response.status_code == 200
        reply = Review.objects.get(id=218468)
        assert '%s' % reply.title == 'fo'
        assert '%s' % reply.body == 'shizzle'

        response = self.client.get(
            helpers.url('addons.reviews.list', self.addon.slug))
        doc = pq(response.content)
        assert doc('#review-218468 .review-edit').text() == 'Edit reply'
Esempio n. 22
0
 def test_edit_not_owner(self):
     url = helpers.url('addons.reviews.edit', self.addon.slug, 218468)
     r = self.client.post(url, {
         'rating': 2,
         'body': 'woo woo'
     },
                          X_REQUESTED_WITH='XMLHttpRequest')
     eq_(r.status_code, 403)
Esempio n. 23
0
 def test_edit_reply(self):
     self.login_dev()
     url = helpers.url("addons.reviews.edit", self.addon.slug, 218468)
     r = self.client.post(url, {"title": "fo", "body": "shizzle"}, X_REQUESTED_WITH="XMLHttpRequest")
     eq_(r.status_code, 200)
     review = Review.objects.get(id=218468)
     eq_("%s" % review.title, "fo")
     eq_("%s" % review.body, "shizzle")
Esempio n. 24
0
 def test_unicode_call(self):
     review = Review.objects.create(addon=self.addon, user=self.user,
                                    title='or', body=u'héhé 3%')
     url = helpers.url('addons.reviews.translate',
                       review.addon.slug, review.id, 'fr')
     r = self.client.get(url)
     eq_(r.status_code, 302)
     eq_(r.get('Location'),
         'https://translate.google.com/#auto/fr/h%C3%A9h%C3%A9%203%25')
Esempio n. 25
0
 def test_edit(self):
     url = helpers.url('addons.reviews.edit', self.addon.slug, 218207)
     r = self.client.post(url, {
         'rating': 2,
         'body': 'woo woo'
     },
                          X_REQUESTED_WITH='XMLHttpRequest')
     eq_(r.status_code, 200)
     eq_('%s' % Review.objects.get(id=218207).body, 'woo woo')
Esempio n. 26
0
 def test_edit_reply(self):
     self.login_dev()
     url = helpers.url('addons.reviews.edit', self.addon.slug, 218468)
     r = self.client.post(url, {'title': 'fo', 'body': 'shizzle'},
                          X_REQUESTED_WITH='XMLHttpRequest')
     eq_(r.status_code, 200)
     review = Review.objects.get(id=218468)
     eq_('%s' % review.title, 'fo')
     eq_('%s' % review.body, 'shizzle')
Esempio n. 27
0
 def test_delete_own_review(self):
     self.client.logout()
     self.login_dev()
     url = helpers.url('addons.reviews.delete', self.addon.slug, 218468)
     cnt = Review.objects.count()
     response = self.client.post(url)
     eq_(response.status_code, 200)
     eq_(Review.objects.count(), cnt - 1)
     eq_(Review.objects.filter(pk=218468).exists(), False)
Esempio n. 28
0
 def test_delete_own_review(self):
     self.client.logout()
     self.login_dev()
     url = helpers.url('addons.reviews.delete', self.addon.slug, 218468)
     cnt = Review.objects.count()
     response = self.client.post(url)
     eq_(response.status_code, 200)
     eq_(Review.objects.count(), cnt - 1)
     eq_(Review.objects.filter(pk=218468).exists(), False)
Esempio n. 29
0
 def test_add_link_dev(self):
     """Ensure developer cannot see Add Review links."""
     self.login_dev()
     r = self.client.get_ajax(self.more)
     eq_(pq(r.content)("#add-review").length, 0)
     r = self.client.get(helpers.url("addons.reviews.list", self.addon.slug))
     doc = pq(r.content)
     eq_(doc("#add-review").length, 0)
     eq_(doc("#add-first-review").length, 0)
Esempio n. 30
0
 def test_add_link_dev(self):
     """Ensure developer cannot see Add Review links."""
     self.login_dev()
     r = self.client.get_ajax(self.more)
     eq_(pq(r.content)('#add-review').length, 0)
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     doc = pq(r.content)
     eq_(doc('#add-review').length, 0)
     eq_(doc('#add-first-review').length, 0)
Esempio n. 31
0
 def test_empty_list(self):
     Review.objects.all().delete()
     eq_(Review.objects.count(), 0)
     r = self.client.get(helpers.url("addons.reviews.list", self.addon.slug))
     eq_(r.status_code, 200)
     doc = pq(r.content)
     eq_(doc("#reviews .item").length, 0)
     eq_(doc("#add-first-review").length, 1)
     eq_(doc(".secondary .average-rating").length, 0)
     eq_(doc(".secondary .no-rating").length, 1)
Esempio n. 32
0
 def test_unicode_call(self):
     review = Review.objects.create(addon=self.addon,
                                    user=self.user,
                                    title='or',
                                    body=u'héhé 3%')
     url = helpers.url('addons.reviews.translate', review.addon.slug,
                       review.id, 'fr')
     r = self.client.get(url)
     eq_(r.status_code, 302)
     eq_(r.get('Location'),
         'https://translate.google.com/#auto/fr/h%C3%A9h%C3%A9%203%25')
Esempio n. 33
0
 def test_empty_list(self):
     Review.objects.all().delete()
     eq_(Review.objects.count(), 0)
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     eq_(r.status_code, 200)
     doc = pq(r.content)
     eq_(doc('#reviews .item').length, 0)
     eq_(doc('#add-first-review').length, 1)
     eq_(doc('.secondary .average-rating').length, 0)
     eq_(doc('.secondary .no-rating').length, 1)
Esempio n. 34
0
 def test_add_link_visitor(self):
     """
     Ensure non-logged user can see Add Review links on details page
     but not on Reviews listing page.
     """
     self.client.logout()
     r = self.client.get_ajax(self.more)
     eq_(pq(r.content)("#add-review").length, 1)
     r = self.client.get(helpers.url("addons.reviews.list", self.addon.slug))
     doc = pq(r.content)
     eq_(doc("#add-review").length, 0)
     eq_(doc("#add-first-review").length, 0)
Esempio n. 35
0
 def test_edit_reply(self):
     self.login_dev()
     url = helpers.url('addons.reviews.edit', self.addon.slug, 218468)
     r = self.client.post(url, {
         'title': 'fo',
         'body': 'shizzle'
     },
                          X_REQUESTED_WITH='XMLHttpRequest')
     eq_(r.status_code, 200)
     review = Review.objects.get(id=218468)
     eq_('%s' % review.title, 'fo')
     eq_('%s' % review.body, 'shizzle')
Esempio n. 36
0
 def test_add_link_visitor(self):
     """
     Ensure non-logged user can see Add Review links on details page
     but not on Reviews listing page.
     """
     self.client.logout()
     r = self.client.get_ajax(self.more)
     eq_(pq(r.content)('#add-review').length, 1)
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     doc = pq(r.content)
     eq_(doc('#add-review').length, 0)
     eq_(doc('#add-first-review').length, 0)
Esempio n. 37
0
    def test_ajax_call(self, requests):
        # Mock requests.
        response = mock.Mock()
        response.status_code = 200
        response.json.return_value = {
            u"data": {u"translations": [{u"translatedText": u"oui", u"detectedSourceLanguage": u"en"}]}
        }
        requests.get.return_value = response

        # Call translation.
        review = self.review
        url = helpers.url("addons.reviews.translate", review.addon.slug, review.id, "fr")
        r = self.client.get(url, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
        eq_(r.status_code, 200)
        eq_(json.loads(r.content), {"body": "oui", "title": "oui"})
Esempio n. 38
0
    def test_invalid_api_key(self, requests):
        # Mock requests.
        response = mock.Mock()
        response.status_code = 400
        response.json.return_value = {'error': {'code': 400, 'errors': [{
            'domain': 'usageLimits', 'message': 'Bad Request',
            'reason': 'keyInvalid'}], 'message': 'Bad Request'}}
        requests.get.return_value = response

        # Call translation.
        review = self.review
        url = helpers.url('addons.reviews.translate', review.addon.slug,
                          review.id, 'fr')
        r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        eq_(r.status_code, 400)
Esempio n. 39
0
    def test_ajax_call(self, requests):
        # Mock requests.
        response = mock.Mock()
        response.status_code = 200
        response.json.return_value = {u'data': {u'translations': [{
            u'translatedText': u'oui',
            u'detectedSourceLanguage': u'en'
        }]}}
        requests.get.return_value = response

        # Call translation.
        review = self.review
        url = helpers.url('addons.reviews.translate', review.addon.slug,
                          review.id, 'fr')
        r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        eq_(r.status_code, 200)
        eq_(r.content, '{"body": "oui", "title": "oui"}')
Esempio n. 40
0
    def test_invalid_api_key(self, requests):
        # Mock requests.
        response = mock.Mock()
        response.status_code = 400
        response.json.return_value = {
            "error": {
                "code": 400,
                "errors": [{"domain": "usageLimits", "message": "Bad Request", "reason": "keyInvalid"}],
                "message": "Bad Request",
            }
        }
        requests.get.return_value = response

        # Call translation.
        review = self.review
        url = helpers.url("addons.reviews.translate", review.addon.slug, review.id, "fr")
        r = self.client.get(url, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
        eq_(r.status_code, 400)
Esempio n. 41
0
    def test_list_item_actions(self):
        self.login_admin()
        self.make_it_my_review()
        r = self.client.get(helpers.url("addons.reviews.list", self.addon.slug))
        reviews = pq(r.content)("#reviews .item")

        r = Review.objects.get(id=218207)
        item = reviews.filter("#review-218207")
        actions = item.find(".item-actions")
        eq_(actions.length, 1)
        classes = sorted(c.get("class") for c in actions.find("li a"))
        eq_(classes, ["delete-review", "flag-review"])

        r = Review.objects.get(id=218468)
        item = reviews.filter("#review-218468")
        actions = item.find(".item-actions")
        eq_(actions.length, 1)
        classes = sorted(c.get("class") for c in actions.find("li a"))
        eq_(classes, ["delete-review", "review-edit"])
Esempio n. 42
0
    def test_list_item_actions(self):
        self.login_admin()
        self.make_it_my_review()
        r = self.client.get(helpers.url('addons.reviews.list',
                                        self.addon.slug))
        reviews = pq(r.content)('#reviews .item')

        r = Review.objects.get(id=218207)
        item = reviews.filter('#review-218207')
        actions = item.find('.item-actions')
        eq_(actions.length, 1)
        classes = sorted(c.get('class') for c in actions.find('li a'))
        eq_(classes, ['delete-review', 'flag-review'])

        r = Review.objects.get(id=218468)
        item = reviews.filter('#review-218468')
        actions = item.find('.item-actions')
        eq_(actions.length, 1)
        classes = sorted(c.get('class') for c in actions.find('li a'))
        eq_(classes, ['delete-review', 'review-edit'])
Esempio n. 43
0
    def test_list_item_actions(self):
        self.login_admin()
        self.make_it_my_review()
        r = self.client.get(helpers.url('addons.reviews.list',
                                        self.addon.slug))
        reviews = pq(r.content)('#reviews .item')

        r = Review.objects.get(id=218207)
        item = reviews.filter('#review-218207')
        actions = item.find('.item-actions')
        eq_(actions.length, 1)
        classes = sorted(c.get('class') for c in actions.find('li a'))
        eq_(classes, ['delete-review', 'flag-review'])

        r = Review.objects.get(id=218468)
        item = reviews.filter('#review-218468')
        actions = item.find('.item-actions')
        eq_(actions.length, 1)
        classes = sorted(c.get('class') for c in actions.find('li a'))
        eq_(classes, ['delete-review', 'review-edit'])
Esempio n. 44
0
    def test_ajax_call(self, requests):
        # Mock requests.
        response = mock.Mock()
        response.status_code = 200
        response.json.return_value = {
            u'data': {
                u'translations': [{
                    u'translatedText': u'oui',
                    u'detectedSourceLanguage': u'en'
                }]
            }
        }
        requests.get.return_value = response

        # Call translation.
        review = self.review
        url = helpers.url('addons.reviews.translate', review.addon.slug,
                          review.id, 'fr')
        r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        eq_(r.status_code, 200)
        eq_(json.loads(r.content), {"body": "oui", "title": "oui"})
Esempio n. 45
0
 def test_edit(self):
     url = helpers.url('addons.reviews.edit', self.addon.slug, 218207)
     r = self.client.post(url, {'rating': 2, 'body': 'woo woo'},
                          X_REQUESTED_WITH='XMLHttpRequest')
     eq_(r.status_code, 200)
     eq_('%s' % Review.objects.get(id=218207).body, 'woo woo')
Esempio n. 46
0
 def link(self, category):
     """Link for the feed as a whole"""
     return absolutify(url('home'))
Esempio n. 47
0
 def test_dev_no_rss(self):
     url = helpers.url('addons.reviews.detail', self.addon.slug, 218468)
     r = self.client.get(url)
     doc = pq(r.content)
     eq_(doc('link[title=RSS]').length, 0)
Esempio n. 48
0
 def test_add_logged_out(self):
     self.client.logout()
     self.mobile_init()
     r = self.client.get(helpers.url('addons.reviews.add', self.addon.slug))
     eq_(r.status_code, 302)
Esempio n. 49
0
 def link(self, addon):
     """Link for the feed"""
     return absolutify(url('home'))
Esempio n. 50
0
 def test_add_logged_out(self):
     self.client.logout()
     self.mobile_init()
     r = self.client.get(helpers.url('addons.reviews.add', self.addon.slug))
     eq_(r.status_code, 302)
Esempio n. 51
0
 def test_404_user_page(self):
     url = helpers.url('addons.reviews.user', self.addon.slug, 233452342)
     r = self.client.get(url)
     eq_(r.status_code, 404)
Esempio n. 52
0
 def test_list_rss(self):
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     doc = pq(r.content)
     eq_(doc('link[title=RSS]').length, 1)
Esempio n. 53
0
 def link(self):
     return absolutify(url('apps.appversions'))
Esempio n. 54
0
 def test_appversions_feed(self):
     eq_(self.client.get(url('apps.appversions.rss')).status_code, 200)
Esempio n. 55
0
 def test_feed(self):
     url = helpers.url('addons.reviews.list.rss', self.addon.slug)
     r = self.client.get(url)
     eq_(r.status_code, 200)
Esempio n. 56
0
 def test_edit_not_owner(self):
     url = helpers.url('addons.reviews.edit', self.addon.slug, 218468)
     r = self.client.post(url, {'rating': 2, 'body': 'woo woo'},
                          X_REQUESTED_WITH='XMLHttpRequest')
     eq_(r.status_code, 403)
Esempio n. 57
0
 def get_url_path(self):
     return helpers.url('addons.reviews.detail', self.addon.slug, self.id)
Esempio n. 58
0
 def link(self):
     """Link for the feed as a whole"""
     return absolutify(url('devhub.feed_all'))
Esempio n. 59
0
 def test_list_rss(self):
     r = self.client.get(helpers.url('addons.reviews.list',
                                     self.addon.slug))
     doc = pq(r.content)
     eq_(doc('link[title=RSS]').length, 1)
Esempio n. 60
0
def admin_site_links():
    if settings.MARKETPLACE:
        return mkt_admin_site_links()
    return {
        'addons': [
            ('Search for add-ons by name or id', url('zadmin.addon-search')),
            ('Featured add-ons', url('zadmin.features')),
            ('Discovery Pane promo modules', url('discovery.module_admin')),
            ('Monthly Pick', url('zadmin.monthly_pick')),
            ('Upgrade jetpack add-ons', url('zadmin.jetpack')),
            ('Name blocklist', url('zadmin.addon-name-blocklist')),
            ('Bulk add-on validation', url('zadmin.validation')),
            ('Fake mail', url('zadmin.mail')),
            ('Flagged reviews', url('zadmin.flagged')),
            ('ACR Reports', url('zadmin.compat')),
            ('Email Add-on Developers', url('zadmin.email_devs')),
        ],
        'users': [
            ('Configure groups', url('admin:access_group_changelist')),
        ],
        'settings': [
            ('View site settings', url('zadmin.settings')),
            ('Django admin pages', url('zadmin.home')),
            ('Site Events', url('zadmin.site_events')),
        ],
        'tools': [
            ('View request environment', url('amo.env')),
            ('Manage elasticsearch', url('zadmin.elastic')),
            ('View celery stats', url('zadmin.celery')),
            ('Purge data from memcache', url('zadmin.memcache')),
            ('Purge pages from zeus', url('zadmin.hera')),
            ('View graphite trends', url('amo.graphite', 'addons')),
            ('Create a new OAuth Consumer',
             url('zadmin.oauth-consumer-create')),
            ('View event log', url('admin:editors_eventlog_changelist')),
            ('View addon log', url('admin:devhub_activitylog_changelist')),
            ('Generate error', url('zadmin.generate-error')),
            ('Site Status', url('amo.monitor')),
        ],
    }