From 6eaa2bbbf87b2257cb8d5651eb38e89b40eab5a1 Mon Sep 17 00:00:00 2001 From: luxagraf Date: Fri, 4 Mar 2011 13:23:45 -0500 Subject: rewrote blog.entry based on django-debug-toolbar profiling to cut down on database queries. probably pointless given the size of the image I load, but what the heck. --- apps/blog/models.py | 16 ++++++++++++++-- apps/blog/views.py | 14 +++++--------- templates/archives/homepage.html | 2 +- templates/archives/writing.html | 2 +- templates/details/about.html | 12 ++++++------ templates/details/entry.html | 23 +++++++++++++---------- 6 files changed, 40 insertions(+), 29 deletions(-) diff --git a/apps/blog/models.py b/apps/blog/models.py index 0c6d93e..9a104d7 100644 --- a/apps/blog/models.py +++ b/apps/blog/models.py @@ -85,6 +85,11 @@ class Entry(models.Model): meta_description = models.CharField(max_length=256, null=True, blank=True) topics = models.ManyToManyField(Topic, blank=True) template_name = models.IntegerField(choices=TEMPLATES, default=0) + location_name = models.CharField(max_length=200, null=True,blank=True) + state_name = models.CharField(max_length=200, null=True,blank=True) + country_name = models.CharField(max_length=200, null=True,blank=True) + state_iso = models.CharField(max_length=2, null=True,blank=True) + country_iso = models.CharField(max_length=2, null=True,blank=True) @property def longitude(self): @@ -107,9 +112,11 @@ class Entry(models.Model): def get_absolute_url(self): return "/%s/%s/" % (self.pub_date.strftime("%Y/%b/%d").lower(), self.slug) + @property def get_previous_published(self): return self.get_previous_by_pub_date(status__exact=1) - + + @property def get_next_published(self): return self.get_next_by_pub_date(status__exact=1) @@ -124,7 +131,7 @@ class Entry(models.Model): def get_image_url(self): image_dir, img = self.image.url.split('post-images/')[1].split('/') return '%spost-images/%s/%s' %(settings.IMAGES_URL, image_dir, img) - + def save(self): #get image dimensions img = Image.open(self.image) @@ -139,6 +146,11 @@ class Entry(models.Model): self.body_html = html self.lede = lede self.dek == markdown.markdown(self.dek, safe_mode = False) + self.location_name = self.location.name + self.state_name = self.location.state.name + self.country_name = self.location.state.country.name + self.state_iso = self.location.state.code + self.country_iso = self.location.state.country.iso2 super(Entry, self).save() class BlogSitemap(Sitemap): diff --git a/apps/blog/views.py b/apps/blog/views.py index 20044b0..70f934a 100644 --- a/apps/blog/views.py +++ b/apps/blog/views.py @@ -12,11 +12,11 @@ from photos.models import Photo, PhotoGallery from chunks.models import Chunk def home(request): - featured = Entry.objects.filter(status__exact=1).latest() - gallery = PhotoGallery.objects.latest() + featured = Entry.objects.filter(status__exact=1).select_related().latest() + #gallery = PhotoGallery.objects.latest() context = { 'featured': featured, - 'gallery': gallery + #'gallery': gallery } return render_to_response('archives/homepage.html', context, context_instance = RequestContext(request)) @@ -72,13 +72,9 @@ def entry_list_by_area(request,slug,page): extra_context=context) def about(request): - top = Chunk.objects.get(key='about_top') - middle = Chunk.objects.get(key='about_middle') - bottom = Chunk.objects.get(key='about_bottom') + qs = Chunk.objects.filter(key__in=['about_top','about_middle','about_bottom']) context = { - 'top': top, - 'middle': middle, - 'bottom': bottom, + 'object_list':qs, 'IMAGES_URL' : settings.IMAGES_URL } return render_to_response('details/about.html', context, context_instance=RequestContext(request)) \ No newline at end of file diff --git a/templates/archives/homepage.html b/templates/archives/homepage.html index 423474b..37e8048 100644 --- a/templates/archives/homepage.html +++ b/templates/archives/homepage.html @@ -15,7 +15,7 @@ {{ featured.title }}

- {% if featured.location.state.country.name == "United States" %}{{featured.location.name|smartypants|safe}}, {{featured.location.state.name}}{%else%}{{featured.location.name|smartypants|safe}}, {{featured.location.state.country.name}}{%endif%} + {% if featured.country_name == "United States" %}{{featured.location_name|smartypants|safe}}, {{featured.state_name}}{%else%}{{featured.location_name|smartypants|safe}}, {{featured.country_name}}{%endif%}   diff --git a/templates/archives/writing.html b/templates/archives/writing.html index 51dd13f..952bf9f 100644 --- a/templates/archives/writing.html +++ b/templates/archives/writing.html @@ -25,7 +25,7 @@ {{ object.title }}

- {% if object.location.state.country.name == "United States" %}{{object.location.name|smartypants|safe}}, {{object.location.state.name}}{%else%}{{object.location.name|smartypants|safe}}, {{object.location.state.country.name}}{%endif%} + {% if object.country_name == "United States" %}{{object.location_name|smartypants|safe}}, {{object.state_name}}{%else%}{{object.location_name|smartypants|safe}}, {{object.country_name}}{%endif%}   diff --git a/templates/details/about.html b/templates/details/about.html index b2ac90d..e2090d8 100644 --- a/templates/details/about.html +++ b/templates/details/about.html @@ -20,22 +20,22 @@

Background

me -
- {{top.content|smartypants|safe}} +
{%for object in object_list %}{%if forloop.first %} + {{object.content|smartypants|safe}}{%endif%} {% endfor %}

About the Site

me -
- {{middle.content|smartypants|safe}} +
{%for object in object_list %}{%if forloop.last %} + {{object.content|smartypants|safe}}{%endif%} {% endfor %}

Colophon

me -
- {{bottom.content|smartypants|safe}} +
{%for object in object_list %}{%if forloop.counter = 1 %} + {{object.content|smartypants|safe}}{%endif%} {% endfor %}
diff --git a/templates/details/entry.html b/templates/details/entry.html index 270c980..1ab9ff3 100644 --- a/templates/details/entry.html +++ b/templates/details/entry.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% load typogrify %} -{% block pagetitle %}{{object.title|title|smartypants|safe}} | Luxagraf, a travelogue | {% if object.location.state.country.name == "United States" %}{{object.location.name|smartypants|safe}}, {{object.location.state.name}}{%else%}{{object.location.name|smartypants|safe}}, {{object.location.state.country.name}}{%endif%}){% endblock %} +{% block pagetitle %}{{object.title|title|smartypants|safe}} | Luxagraf, a travelogue | {% if object.country_name == "United States" %}{{object.location_name|smartypants|safe}}, {{object.state_name}}{%else%}{{object.location_name|smartypants|safe}}, {{object.country_name}}{%endif%}){% endblock %} {%block stylesheet%}{%if object.template_name == 2 or object.template_name == 3 %} - - + + {%endblock%} {%block bodyid%}class="{%if object.template_name == 0 %}single"{%endif%}{%if object.template_name == 2%}single"{%endif%}{%if object.template_name == 1 %}double"{%endif%}{%if object.template_name == 3 %}double"{%endif%}{%endblock%} @@ -26,7 +26,7 @@

{{object.title|smartypants|widont|safe}}