From 65994b2bc1190c0d8eae46e35e20547ebe796f49 Mon Sep 17 00:00:00 2001
From: Dave Dash
Date: Fri, 7 May 2010 10:16:30 -0700
Subject: [PATCH] bug 564341, use request.amo_user to get profile.
---
apps/addons/tests/test_views.py | 16 ++++++++++++----
apps/addons/views.py | 14 ++++++--------
2 files changed, 18 insertions(+), 12 deletions(-)
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