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))
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)
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)
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
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
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']))
def test_is_subscribed(self): c = Collection(pk=512) c.following.create(user=self.user) assert c.is_subscribed(self.user)
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)
def location(self, item): return Collection.get_url_path(item)