Example #1
0
    def search_applications(self, params, apps=[]):
        r = self.client.get(self.url + '?' + params)
        eq_(r.status_code, 200)
        data = json.loads(r.content)

        data = sorted(data, key=lambda x: x['id'])
        apps = sorted(apps, key=lambda x: x.id)

        eq_(len(data), len(apps))
        for got, expected in zip(data, apps):
            eq_(int(got['id']), expected.id)
            eq_(got['name'], '%s Add-ons' % unicode(expected.pretty))
            eq_(got['url'], locale_url(expected.short))
            eq_(got['cls'], 'app ' + expected.short)
Example #2
0
    def search_applications(self, params, apps=[]):
        r = self.client.get(self.url + '?' + params)
        assert r.status_code == 200
        data = json.loads(r.content)

        data = sorted(data, key=lambda x: x['id'])
        apps = sorted(apps, key=lambda x: x.id)

        assert len(data) == len(apps)
        for got, expected in zip(data, apps):
            assert int(got['id']) == expected.id
            assert got['name'] == '%s Add-ons' % unicode(expected.pretty)
            assert got['url'] == locale_url(expected.short)
            assert got['cls'] == 'app ' + expected.short
Example #3
0
    def search_applications(self, params, apps=[]):
        r = self.client.get(self.url + '?' + params)
        assert r.status_code == 200
        data = json.loads(r.content)

        data = sorted(data, key=lambda x: x['id'])
        apps = sorted(apps, key=lambda x: x.id)

        assert len(data) == len(apps)
        for got, expected in zip(data, apps):
            assert int(got['id']) == expected.id
            assert got['name'] == '%s Add-ons' % unicode(expected.pretty)
            assert got['url'] == locale_url(expected.short)
            assert got['cls'] == 'app ' + expected.short
Example #4
0
    def search_applications(self, params, apps=[]):
        r = self.client.get(self.url + '?' + params)
        eq_(r.status_code, 200)
        data = json.loads(r.content)

        data = sorted(data, key=lambda x: x['id'])
        apps = sorted(apps, key=lambda x: x.id)

        eq_(len(data), len(apps))
        for got, expected in zip(data, apps):
            eq_(int(got['id']), expected.id)
            eq_(got['name'], '%s Add-ons' % unicode(expected.pretty))
            eq_(got['url'], locale_url(expected.short))
            eq_(got['cls'], 'app ' + expected.short)
Example #5
0
def _build_suggestions(request, cat, suggester):
    results = []
    q = request.GET.get('q')
    if q and (q.isdigit() or len(q) > 2):
        q_ = q.lower()

        if cat != 'apps':
            # Applications.
            for a in amo.APP_USAGE:
                name_ = unicode(a.pretty).lower()
                word_matches = [w for w in q_.split() if name_ in w]
                if q_ in name_ or word_matches:
                    results.append({
                        'id':
                        a.id,
                        'name':
                        ugettext(u'{0} Add-ons').format(a.pretty),
                        'url':
                        locale_url(a.short),
                        'cls':
                        'app ' + a.short
                    })

        # Categories.
        cats = Category.objects
        cats = cats.filter(
            Q(application=request.APP.id) | Q(type=amo.ADDON_SEARCH))
        if cat == 'themes':
            cats = cats.filter(type=amo.ADDON_PERSONA)
        else:
            cats = cats.exclude(type=amo.ADDON_PERSONA)

        for c in cats:
            if not c.name:
                continue
            name_ = unicode(c.name).lower()
            word_matches = [w for w in q_.split() if name_ in w]
            if q_ in name_ or word_matches:
                results.append({
                    'id': c.id,
                    'name': unicode(c.name),
                    'url': c.get_url_path(),
                    'cls': 'cat'
                })

        results += suggester.items

    return results
Example #6
0
def _build_suggestions(request, cat, suggester):
    results = []
    q = request.GET.get('q')
    if q and (q.isdigit() or len(q) > 2):
        q_ = q.lower()

        if cat != 'apps':
            # Applications.
            for a in amo.APP_USAGE:
                name_ = unicode(a.pretty).lower()
                word_matches = [w for w in q_.split() if name_ in w]
                if q_ in name_ or word_matches:
                    results.append({
                        'id': a.id,
                        'name': _(u'{0} Add-ons').format(a.pretty),
                        'url': locale_url(a.short),
                        'cls': 'app ' + a.short
                    })

        # Categories.
        cats = Category.objects
        cats = cats.filter(Q(application=request.APP.id) |
                           Q(type=amo.ADDON_SEARCH))
        if cat == 'themes':
            cats = cats.filter(type=amo.ADDON_PERSONA)
        else:
            cats = cats.exclude(type=amo.ADDON_PERSONA)

        for c in cats:
            if not c.name:
                continue
            name_ = unicode(c.name).lower()
            word_matches = [w for w in q_.split() if name_ in w]
            if q_ in name_ or word_matches:
                results.append({
                    'id': c.id,
                    'name': unicode(c.name),
                    'url': c.get_url_path(),
                    'cls': 'cat'
                })

        results += suggester.items

    return results