diff --git a/apps/addons/tests/test_views.py b/apps/addons/tests/test_views.py index aaf60267c94..11c7f988bdc 100644 --- a/apps/addons/tests/test_views.py +++ b/apps/addons/tests/test_views.py @@ -279,21 +279,29 @@ def test_details_collections_dropdown(self): request = Mock() request.APP.id = 1 + request.user.is_authenticated = lambda: True - profile = Mock() - profile.id = 10482 + request.amo_user.id = 10482 addon = Mock() addon.id = 4048 - ret = _details_collections_dropdown(request, profile, addon) + ret = _details_collections_dropdown(request, addon) eq_(len(ret), 2) # Add-on exists in one of the collections addon.id = 433 - ret = _details_collections_dropdown(request, profile, addon) + ret = _details_collections_dropdown(request, addon) eq_(len(ret), 1) + request.user.is_authenticated = lambda: False + request.amo_user.id = None + + ret = _details_collections_dropdown(request, addon) + eq_(len(ret), 0) + + + def test_remove_tag_button(self): self.client.login(username='regular@mozilla.com', password='password') r = self.client.get(reverse('addons.detail', args=[3615])) diff --git a/apps/addons/views.py b/apps/addons/views.py index 0e4ab17b804..5c756f51fae 100644 --- a/apps/addons/views.py +++ b/apps/addons/views.py @@ -11,7 +11,6 @@ from amo import urlresolvers from amo.urlresolvers import reverse from bandwagon.models import Collection, CollectionFeature, CollectionPromo -from users.models import UserProfile from stats.models import GlobalStat from tags.models import Tag from .models import Addon @@ -103,12 +102,7 @@ def extension_detail(request, addon): popular_coll = collections.order_by('-subscribers')[:coll_show_count] # this user's collections - if request.user.is_authenticated(): - profile = UserProfile.objects.get(user=request.user) - user_collections = _details_collections_dropdown(request, - profile, addon) - else: - user_collections = [] + user_collections = _details_collections_dropdown(request, addon) data = { 'addon': addon, @@ -129,7 +123,7 @@ def extension_detail(request, addon): return jingo.render(request, 'addons/details.html', data) -def _details_collections_dropdown(request, profile, addon): +def _details_collections_dropdown(request, addon): """Returns the collections which should be shown on an add-on details page for a logged in user. This is used in the "Add to a collection..." dropdown. Rules to be in this list: @@ -146,6 +140,10 @@ def _details_collections_dropdown(request, profile, addon): Q(collectionuser__role=amo.COLLECTION_ROLE_PUBLISHER), application__id=request.APP.id) """ + if request.user.is_authenticated(): + profile = request.amo_user + else: + return [] sql = """ SELECT DISTINCT