summaryrefslogtreecommitdiff
path: root/apps/blog
diff options
context:
space:
mode:
authorluxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f <luxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f>2010-01-30 19:19:30 +0000
committerluxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f <luxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f>2010-01-30 19:19:30 +0000
commit0882d73ca1ba4c84ce24c946548c80d9e4d1c04e (patch)
tree605e2284e175e80477fd7b6a6e9e2a2fcae94236 /apps/blog
parent7300519c054838511ba2584394620d0841b88e5f (diff)
added topics to posts
Diffstat (limited to 'apps/blog')
-rw-r--r--apps/blog/admin.py7
-rw-r--r--apps/blog/models.py22
-rw-r--r--apps/blog/views.py13
3 files changed, 39 insertions, 3 deletions
diff --git a/apps/blog/admin.py b/apps/blog/admin.py
index 78ad458..c5c5c5d 100644
--- a/apps/blog/admin.py
+++ b/apps/blog/admin.py
@@ -1,6 +1,6 @@
from django.contrib import admin
from django import forms
-from blog.models import Entry, PostImage
+from blog.models import Entry, PostImage, Topic
from blog.widgets import AdminImageWidget
from django.contrib.gis.admin import OSMGeoAdmin
from django.contrib.gis.maps.google import GoogleMap
@@ -23,7 +23,7 @@ class EntryAdmin(OSMGeoAdmin):
list_filter = ('pub_date', 'enable_comments', 'status','region','location')
fieldsets = (
('Entry', {'fields': ('title','body_markdown', ('location','region'), 'pub_date', ('status','enable_comments'), 'tags', 'slug','photo_gallery'), 'classes': ('show','extrapretty','wide')}),
- ('Pub Location', {'fields': ('point',('thumbnail',),'dek', 'title_keywords'), 'classes': ('collapse', 'wide')}),
+ ('Pub Location', {'fields': ('point',('thumbnail',),'dek', 'topics', 'title_keywords'), 'classes': ('collapse', 'wide')}),
)
class Media:
@@ -71,6 +71,9 @@ class EntryAdmin(OSMGeoAdmin):
class PostImageAdmin(admin.ModelAdmin):
list_display = ('title', 'output_tags')
+class TopicAdmin(admin.ModelAdmin):
+ list_display = ('name', 'slug')
+admin.site.register(Topic, TopicAdmin)
admin.site.register(PostImage, PostImageAdmin)
admin.site.register(Entry, EntryAdmin)
diff --git a/apps/blog/models.py b/apps/blog/models.py
index 5ff6624..bdbcd82 100644
--- a/apps/blog/models.py
+++ b/apps/blog/models.py
@@ -35,6 +35,17 @@ class PostImage(models.Model):
return force_unicode('<img src="%s%s" alt="%s" class="postpic"/>' % \
(settings.IMAGES_URL, self.image.url.split('images')[1].split('/',1)[1], self.title))
+
+class Topic(models.Model):
+ name = models.CharField(max_length=100)
+ slug = models.SlugField()
+
+ def __unicode__(self):
+ return self.name
+
+ def get_absolute_url(self):
+ return "/topics/%s/" % (self.slug)
+
class Entry(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(unique_for_date='pub_date')
@@ -56,6 +67,17 @@ class Entry(models.Model):
photo_gallery = models.ForeignKey(PhotoGallery, blank=True, null=True, verbose_name='photo set')
thumbnail = models.FileField(upload_to=get_upload_path, null=True,blank=True)
title_keywords = models.CharField(max_length=200, null=True, blank=True)
+ topics = models.ManyToManyField(Topic, blank=True)
+
+ @property
+ def longitude(self):
+ '''Get the site's longitude.'''
+ return self.point.x
+
+ @property
+ def latitude(self):
+ '''Get the site's latitude.'''
+ return self.point.y
class Meta:
ordering = ('-pub_date',)
diff --git a/apps/blog/views.py b/apps/blog/views.py
index 6ccdc28..ef933eb 100644
--- a/apps/blog/views.py
+++ b/apps/blog/views.py
@@ -5,7 +5,7 @@ from django.views.generic.list_detail import object_list
from django.http import Http404
-from blog.models import Entry
+from blog.models import Entry, Topic
from locations.models import Region, Country
def home(request):
@@ -36,6 +36,17 @@ def entry_list(request,page):
"""
+List of all writing
+"""
+def topic_list(request,slug,page):
+ request.page_url = '/topics/'+slug+'/%d/'
+ request.page = int(page)
+ topic = Topic.objects.get(slug=slug)
+ qs = Entry.objects.filter(status__exact=1,topics=topic).order_by('-pub_date').select_related()
+ return object_list(request, queryset=qs, template_name='archives/topics.html',)
+
+
+"""
Grabs entries by region or country
"""
def entry_list_by_area(request,slug,page):