Skip to content
This repository has been archived by the owner on Mar 15, 2018. It is now read-only.

Commit

Permalink
cache addon.get_category for firefox (bug 650972)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Balogh committed May 27, 2011
1 parent 1e5b5ad commit 4e1ab65
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
13 changes: 13 additions & 0 deletions apps/addons/models.py
Expand Up @@ -251,6 +251,7 @@ def __init__(self, *args, **kw):
# Make sure all add-ons have a slug. save() runs clean_slug.
if self.id and not self.slug:
self.save()
self._first_category = {}

def save(self, **kw):
self.clean_slug()
Expand Down Expand Up @@ -387,6 +388,8 @@ def reviews(self):
return Review.objects.filter(addon=self, reply_to=None)

def get_category(self, app):
if app in self._first_category:
return self._first_category[app]
categories = list(self.categories.filter(application=app))
return categories[0] if categories else None

Expand Down Expand Up @@ -590,6 +593,16 @@ def transformer(addons):
for addon, previews in itertools.groupby(qs, lambda x: x.addon_id):
addon_dict[addon].all_previews = list(previews)

# Attach _first_category for Firefox.
for addon in addons:
addon._first_category[amo.FIREFOX.id] = None
qs = AddonCategory.objects.filter(
addon__in=addon_dict, category__application=amo.FIREFOX.id)
for cat in qs.select_related('category'):
addon = addon_dict[cat.addon_id]
addon._first_category[amo.FIREFOX.id] = cat.category


@property
def show_beta(self):
return self.status == amo.STATUS_PUBLIC and self.current_beta_version
Expand Down
6 changes: 5 additions & 1 deletion apps/addons/templates/addons/impala/addon_grid.html
Expand Up @@ -16,7 +16,11 @@
</div>
<div class="summary">
<h3>{{ addon.name }}</h3>
<div class="category" class="more-info">{{ addon.get_category(APP.id) }}</div>
{% with cat = addon.get_category(APP.id) %}
{% if cat %}
<div class="category" class="more-info">{{ cat }}</div>
{% endif %}
{% endwith %}
<div class="rating">{{ addon.average_rating|stars }} ({{ addon.total_reviews|numberfmt }})</div>
</div>
</a>
Expand Down

0 comments on commit 4e1ab65

Please sign in to comment.