コード例 #1
0
 def test_addon_index(self):
     c = Collection.objects.get(pk=512)
     c.author = self.user
     eq_(c.addon_index, None)
     ids = c.addons.values_list('id', flat=True)
     c.save()
     eq_(c.addon_index, Collection.make_index(ids))
コード例 #2
0
ファイル: test_models.py プロジェクト: Alien426/addons-server
 def test_addon_index(self):
     c = Collection.objects.get(pk=512)
     c.author = self.user
     assert c.addon_index is None
     ids = c.addons.values_list('id', flat=True)
     c.save()
     assert c.addon_index == Collection.make_index(ids)
コード例 #3
0
ファイル: views.py プロジェクト: piyushmittal25/addons-server
def _collections(request):
    """Handle the request for collections."""

    # Sorting by relevance isn't an option. Instead the default is `weekly`.
    initial = {'sort': 'weekly'}
    # Update with GET variables.
    initial.update(request.GET.items())
    # Ignore appver/platform and set default number of collections per page.
    initial.update(appver=None, platform=None, pp=DEFAULT_NUM_COLLECTIONS)

    form = SecondarySearchForm(initial)
    form.is_valid()

    qs = Collection.search().filter(listed=True, app=request.APP.id)
    filters = ['sort']
    mapping = {
        'weekly': '-weekly_subscribers',
        'monthly': '-monthly_subscribers',
        'all': '-subscribers',
        'rating': '-rating',
        'created': '-created',
        'name': 'name_sort',
        'updated': '-modified'}
    results = _filter_search(request, qs, form.cleaned_data, filters,
                             sorting=mapping,
                             sorting_default='-weekly_subscribers',
                             types=amo.COLLECTION_SEARCH_CHOICES)

    form_data = form.cleaned_data.get('q', '')

    search_opts = {}
    search_opts['limit'] = form.cleaned_data.get('pp', DEFAULT_NUM_COLLECTIONS)
    page = form.cleaned_data.get('page') or 1
    search_opts['offset'] = (page - 1) * search_opts['limit']
    search_opts['sort'] = form.cleaned_data.get('sort')

    pager = amo.utils.paginate(request, results, per_page=search_opts['limit'])
    context = {
        'pager': pager,
        'form': form,
        'query': form_data,
        'opts': search_opts,
        'filter': get_filter_view(request),
        'search_placeholder': 'collections'}
    return render(request, 'search/collections.html', context)
コード例 #4
0
ファイル: views.py プロジェクト: darktrojan/addons-server
def es_collections_json(request):
    app = request.GET.get('app', '')
    q = request.GET.get('q', '')
    qs = Collection.search()
    try:
        qs = qs.query(id__startswith=int(q))
    except ValueError:
        qs = qs.query(name__match=q)
    try:
        qs = qs.filter(app=int(app))
    except ValueError:
        pass
    data = []
    for c in qs[:7]:
        data.append({'id': c.id,
                     'name': unicode(c.name),
                     'all_personas': c.all_personas,
                     'url': c.get_url_path()})
    return data
コード例 #5
0
ファイル: __init__.py プロジェクト: saisai/addons-server
def collection_factory(**kw):
    data = {
        'type': amo.COLLECTION_NORMAL,
        'application': amo.FIREFOX.id,
        'name': 'Collection %s' % abs(hash(datetime.now())),
        'description': 'Its a collection %s' % abs(hash(datetime.now())),
        'addon_count': random.randint(200, 2000),
        'subscribers': random.randint(1000, 5000),
        'monthly_subscribers': random.randint(100, 500),
        'weekly_subscribers': random.randint(10, 50),
        'upvotes': random.randint(100, 500),
        'downvotes': random.randint(100, 500),
        'listed': True,
    }
    data.update(kw)
    c = Collection(**data)
    if c.slug is None:
        c.slug = data['name'].replace(' ', '-').lower()
    c.rating = (c.upvotes - c.downvotes) * math.log(c.upvotes + c.downvotes)
    c.created = c.modified = datetime(2011, 11, 11, random.randint(0, 23),
                                      random.randint(0, 59))
    c.save()
    return c
コード例 #6
0
    def test_barometer(self):
        self.client.get('/')
        jingo.load_helpers()
        collection = Collection(upvotes=1,
                                slug='mccrackin',
                                author=UserProfile(username='******'))
        # Mock logged out.
        c = {
            'request': Mock(path='yermom', GET=Mock(urlencode=lambda: '')),
            'user': Mock(),
            'settings': Mock()
        }
        c['request'].user.is_authenticated.return_value = False
        doc = pq(barometer(c, collection))
        assert doc('form')[0].action == '/en-US/firefox/users/login?to=yermom'

        # Mock logged in.
        c['request'].user.votes.filter.return_value = [Mock(vote=1)]
        c['request'].user.is_authenticated.return_value = True
        barometer(c, collection)
        doc = pq(barometer(c, collection))
        assert doc('form')[0].action == (reverse(
            'collections.vote', args=['clouserw', 'mccrackin', 'up']))
コード例 #7
0
 def test_is_subscribed(self):
     c = Collection(pk=512)
     c.following.create(user=self.user)
     assert c.is_subscribed(self.user)
コード例 #8
0
 def test_publishable_by(self):
     c = Collection(pk=512, author=self.other)
     CollectionUser(collection=c, user=self.user).save()
     assert c.publishable_by(self.user)
コード例 #9
0
ファイル: sitemap.py プロジェクト: fakegit/addons-server
 def location(self, item):
     return Collection.get_url_path(item)