summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2011-03-04 13:23:45 -0500
committerluxagraf <sng@luxagraf.net>2011-03-04 13:23:45 -0500
commit6eaa2bbbf87b2257cb8d5651eb38e89b40eab5a1 (patch)
tree87b0cf811ab8c59fc318dd0ded8b106359433583
parente5aced9eac7f201826f60c37e58c3ea909cffaa3 (diff)
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.
-rw-r--r--apps/blog/models.py16
-rw-r--r--apps/blog/views.py14
-rw-r--r--templates/archives/homepage.html2
-rw-r--r--templates/archives/writing.html2
-rw-r--r--templates/details/about.html12
-rw-r--r--templates/details/entry.html23
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 @@
<a href="{{featured.get_absolute_url}}" title="{{featured.title}}"><img src="{{featured.get_image_url}}" alt="{{ featured.title }}" class="post-image" width="{{featured.image_width}}" height="{{featured.image_height}}" /></a>
</div>
<p class="dateline">
- <span class="location" itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">{% if featured.location.state.country.name == "United States" %}{{featured.location.name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{featured.location.state.name}}</a>{%else%}{{featured.location.name|smartypants|safe}}, <a href="/writing/{{featured.location.state.country.slug}}/1/" title="travel writing from {{featured.location.state.country.name}}">{{featured.location.state.country.name}}</a>{%endif%}
+ <span class="location" itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">{% if featured.country_name == "United States" %}{{featured.location_name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{featured.state_name}}</a>{%else%}{{featured.location_name|smartypants|safe}}, <a href="/writing/{{featured.country_name|slugify}}/1/" title="travel writing from {{featured.country_name}}">{{featured.country_name}}</a>{%endif%}
<meta itemprop="latitude" content="{{featured.latitude}}" />
<meta itemprop="longitude" content="{{featured.longitude}}" /></span> &nbsp;
<time datetime="{{featured.pub_date|date:'c'}}">{{featured.pub_date|date:"m/d/y"}}</time>
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 @@
<a href="{{object.get_absolute_url}}" title="{{object.title}}"><img src="{{object.get_image_url}}" alt="{{ object.title }}" width="{{object.image_width}}" height="{{object.image_height}}" class="post-image" /></a>
</div>
<p class="dateline">
- <span class="location" itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">{% if object.location.state.country.name == "United States" %}{{object.location.name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{object.location.state.name}}</a>{%else%}{{object.location.name|smartypants|safe}}, <a href="/writing/{{object.location.state.country.slug}}/1/" title="travel writing from {{object.location.state.country.name}}">{{object.location.state.country.name}}</a>{%endif%}
+ <span class="location" itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">{% if object.country_name == "United States" %}{{object.location_name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{object.state_name}}</a>{%else%}{{object.location_name|smartypants|safe}}, <a href="/writing/{{object.country_name|slugify}}/1/" title="travel writing from {{object.country_name}}">{{object.country_name}}</a>{%endif%}
<meta itemprop="latitude" content="{{object.latitude}}" />
<meta itemprop="longitude" content="{{object.longitude}}" /></span> &nbsp;
<time datetime="{{object.pub_date|date:'c'}}">{{object.pub_date|date:"m/d/y"}}</time>
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 @@
<section>
<h2>Background</h2>
<img src="{{IMAGES_URL}}bio.jpg" alt="me" />
- <div class="content">
- {{top.content|smartypants|safe}}
+ <div class="content">{%for object in object_list %}{%if forloop.first %}
+ {{object.content|smartypants|safe}}{%endif%} {% endfor %}
</div>
</section>
<section>
<h2>About the Site</h2>
<img src="{{IMAGES_URL}}site.jpg" alt="me" />
- <div class="content">
- {{middle.content|smartypants|safe}}
+ <div class="content">{%for object in object_list %}{%if forloop.last %}
+ {{object.content|smartypants|safe}}{%endif%} {% endfor %}
</div>
</section>
<section>
<h2>Colophon</h2>
<img src="{{IMAGES_URL}}colo.jpg" alt="me" />
- <div class="content">
- {{bottom.content|smartypants|safe}}
+ <div class="content">{%for object in object_list %}{%if forloop.counter = 1 %}
+ {{object.content|smartypants|safe}}{%endif%} {% endfor %}
</div>
</section>
</article>
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 %}<link rel="stylesheet"
href="{{MEDIA_URL}}css/dark.css"
@@ -14,8 +14,8 @@
<link rel="canonical" href="http://luxagraf.net{{object.get_absolute_url}}" />
<meta name="ICBM" content="{{object.latitude}}, {{object.longitude}}" />
<meta name="geo.position" content="{{object.latitude}}; {{object.longitude}}" />
- <meta name="geo.placename" content="{% 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%}">
- <meta name="geo.region" content="{% if object.location.state.country.name == "United States" %}{{object.location.state.country.iso2}}-{{object.location.state.iso2}}{%else%}{{object.location.state.country.iso2}}{% endif%}">
+ <meta name="geo.placename" content="{% if object.country_name == "United States" %}{{object.location_name|smartypants|safe}}, {{object.state_name}}{%else%}{{object.location_name|smartypants|safe}}, {{object.country_name}}{%endif%}">
+ <meta name="geo.region" content="{{object.country_iso}}{%if object.state_iso != None %}-{{object.state_iso}}{%endif%}">
{%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 @@
<header>
<h1>{{object.title|smartypants|widont|safe}}</h1>
<aside class="geo">
- <span class="location" itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">{% if object.location.state.country.name == "United States" %}{{object.location.name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{object.location.state.name}}</a>{%else%}{{object.location.name|smartypants|safe}}, <a href="/writing/{{object.location.state.country.slug}}/1/" title="travel writing from {{object.location.state.country.name}}">{{object.location.state.country.name}}</a>{%endif%}
+ <span class="location" itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">{% if object.country_name == "United States" %}{{object.location_name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{object.state_name}}</a>{%else%}{{object.location_name|smartypants|safe}}, <a href="/writing/{{object.country_name|slugify}}/1/" title="travel writing from {{object.country_name}}">{{object.country_name}}</a>{%endif%}
<meta itemprop="latitude" content="{{object.latitude}}" />
<meta itemprop="longitude" content="{{object.longitude}}" /></span>
{%comment%} &nbsp;&nbsp;(<a href="" title="">Map</a>, <a href="" title="">Photos</a>){%endcomment%}
@@ -38,25 +38,28 @@
<div class="clearfix"></div>{%endif%}{%if object.template_name == 3 %}<div class="clearfix"></div>{%endif%}
<footer id="post-metadata">
<h4 class="hide">About {{object.title|smartypants|safe}}</h4>
- <p>Posted <time datetime="{{object.pub_date|date:'c'}}">{{object.pub_date|date:"F j, Y"}}</time>, from {{object.location.name|smartypants|safe}}, {%if object.location.state.country.name == 'United States'%}<a href="/map/#{{object.location.state.country.slug}}" title="see other entries from {{object.location.state.name}}">{{object.location.state.name|smartypants|safe}}</a>{% else %}<a href="/map/#{{object.location.state.country.slug}}" title="view all entries from {{object.location.state.country.name}}">{{object.location.state.country.name}}</a>{%endif%}.
+ <p>Posted <time datetime="{{object.pub_date|date:'c'}}">{{object.pub_date|date:"F j, Y"}}</time>, from {% if object.country_name == "United States" %}{{object.location_name|smartypants|safe}}, <a href="/writing/united-states/1/" title="travel writing from the United States">{{object.state_name}}</a>{%else%}{{object.location_name|smartypants|safe}}, <a href="/writing/{{object.country_name|slugify}}/1/" title="travel writing from {{object.country_name}}">{{object.country_name}}</a>{%endif%}.
Follow along on <a href="http://twitter.com/luxagraf" title="twitter" rel="me">Twitter</a> or by subscribing to the <a href="http://feeds.feedburner.com/luxagraf/blog" title="writing RSS 2.0 feed">RSS Feed</a>. For more about me, see the <a href="/about/" title="about luxagraf">about page</a>. To get in touch please use the <a href="/contact/" title="contact me">contact form</a> or leave a comment below.</p>
</footer>
+ {% with object.get_next_published as next %}
+ {% with object.get_previous_published as prev %}
<nav id="page-navigation">
- <ul>{% if object.get_next_published%}
+ <ul>{% if next%}
<li id="prev">
- <a href="{{ object.get_next_published.get_absolute_url }}" title=" {{object.get_next_published.title}}">&larr; newer</a>
+ <a href="{{ next.get_absolute_url }}" title=" {{next.title}}">&larr; newer</a>
</li>{%endif%}
- {% if object.get_previous_published%}<li id="next">
- <a href="{{ object.get_previous_published.get_absolute_url }}" title=" {{object.get_previous_published.title}}">older &rarr;</a>
+ {% if prev%}<li id="next">
+ <a href="{{ prev.get_absolute_url }}" title=" {{prev.title}}">older &rarr;</a>
</li>{%endif%}
</ul>
- </nav>
+ </nav>{%endwith%}{%endwith%}
<section id="comments">
<h4><a class="disqus-link-count" href="{{object.get_absolute_url}}#disqus_thread">Comments</a></h4>
<div id="disqus_thread"></div><script type="text/javascript" src="http://disqus.com/forums/luxagraf/embed.js"></script><noscript><a href="http://luxagraf.disqus.com/?url=ref">View the discussion thread.</a></noscript><a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
</section>
</article>
{% endblock %}
+
{% block js %}
<script type="text/javascript">
//<![CDATA[