Author: piquadrat
Date: Thu Feb 26 11:37:45 2009
New Revision: 370
Modified:
trunk/pages/managers.py
trunk/pages/models.py
Log:
make only a single query for all languages of a particular content object,
only select columns that are needed
Modified: trunk/pages/managers.py
==============================================================================
--- trunk/pages/managers.py (original)
+++ trunk/pages/managers.py Thu Feb 26 11:37:45 2009
@@ -121,22 +121,16 @@
Gets the latest content for a particular page and language. Falls
back
to another language if wanted.
"""
- try:
- content = self.filter(language=language, page=page,
- type=cnttype).latest(latest_by)
- return content.body
- except self.model.DoesNotExist:
- pass
+ content = reversed(self.filter(page=page,
type=cnttype).order_by(latest_by).values('language', 'body'))
+ content_dict = dict([(c['language'], c['body']) for c in content])
+ if language in content_dict:
+ return content_dict[language]
# requested language not found. Try other languages on after
# the other
- if language_fallback:
+ elif language_fallback:
for lang in settings.PAGE_LANGUAGES:
- try:
- content = self.filter(language=lang[0], page=page,
- type=cnttype).latest(latest_by)
- return content.body
- except self.model.DoesNotExist:
- pass
+ if lang[0] in content_dict:
+ return content_dict[lang[0]]
return None
def get_content_slug_by_slug(self, slug, site_id=None,
latest_by='creation_date'):
Modified: trunk/pages/models.py
==============================================================================
--- trunk/pages/models.py (original)
+++ trunk/pages/models.py Thu Feb 26 11:37:45 2009
@@ -122,14 +122,10 @@
if languages:
return languages
- languages = []
- for lang in settings.PAGE_LANGUAGES:
- # one request by language to avoid to get huge revisions
- if Content.objects.filter(language=lang[0], page=self,
type="slug").count() > 0:
- languages.append(lang[0])
-
+ languages = [c['language'] for c in
Content.objects.filter(page=self, type="slug").values('language')]
+ languages = list(set(languages)) # remove duplicates
+ languages.sort()
cache.set(self.PAGE_LANGUAGES_KEY % (self.id), languages)
-
return languages
def get_absolute_url(self, language=None):
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---