[snowy] Add slug field, set up urls and views to make it work
- From: Brad Taylor <btaylor src gnome org>
- To: svn-commits-list gnome org
- Subject: [snowy] Add slug field, set up urls and views to make it work
- Date: Thu, 14 May 2009 15:28:13 -0400 (EDT)
commit e5904662505fe990268ed4838769e712abfdc04d
Author: Brad Taylor <brad getcoded net>
Date: Thu May 14 15:28:00 2009 -0400
Add slug field, set up urls and views to make it work
---
notes/admin.py | 1 +
notes/models.py | 5 ++++-
notes/urls.py | 3 ++-
notes/views.py | 7 +++++--
4 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/notes/admin.py b/notes/admin.py
index d2df5ce..1900fe5 100644
--- a/notes/admin.py
+++ b/notes/admin.py
@@ -22,5 +22,6 @@ from snowy.notes.models import Note
class NoteAdmin(VersionAdmin):
list_display = ('created', 'author', 'title')
search_fields = ['body', 'title']
+ prepopulated_fields = {"slug": ("title",)}
admin.site.register(Note, NoteAdmin)
diff --git a/notes/models.py b/notes/models.py
index 1a595cb..f2c5f16 100644
--- a/notes/models.py
+++ b/notes/models.py
@@ -32,6 +32,7 @@ class Note(models.Model):
user_modified = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=128)
+ slug = models.SlugField(blank=True)
content = models.TextField(blank=True)
content_version = models.CharField(max_length=10)
@@ -51,7 +52,9 @@ class Note(models.Model):
@models.permalink
def get_absolute_url(self):
return ('note_detail', (), {
- 'note_id': self.id, 'username': self.author.username,
+ 'note_id': self.id,
+ 'username': self.author.username,
+ 'slug': self.slug,
})
diff --git a/notes/urls.py b/notes/urls.py
index be3faa6..a31e3dd 100644
--- a/notes/urls.py
+++ b/notes/urls.py
@@ -20,5 +20,6 @@ from snowy.notes.models import Note
urlpatterns = patterns('',
url(r'^$', 'snowy.notes.views.note_index', name='note_index'),
- url(r'^(?P<note_id>\d+)/$', 'snowy.notes.views.note_detail', name='note_detail'),
+ url(r'^(?P<note_id>\d+)/$', 'snowy.notes.views.note_detail'),
+ url(r'^(?P<note_id>\d+)/(?P<slug>[\w-]+)/$', 'snowy.notes.views.note_detail', name='note_detail'),
)
diff --git a/notes/views.py b/notes/views.py
index e1c8314..0b0edee 100644
--- a/notes/views.py
+++ b/notes/views.py
@@ -32,15 +32,18 @@ def note_index(request, username,
if last_modified.count() > 0:
return HttpResponseRedirect(last_modified[0].get_absolute_url())
- # Instruction page to tell user to either sync or create a new note
+ # TODO: Instruction page to tell user to either sync or create a new note
return render_to_response(template_name,
{'user': user},
context_instance=RequestContext(request))
-def note_detail(request, username, note_id,
+def note_detail(request, username, note_id, slug,
template_name='notes/note_detail.html'):
user = get_object_or_404(User, username=username)
note = get_object_or_404(Note, pk=note_id, author=user)
+
+ if note.slug != slug:
+ return HttpResponseRedirect(note.get_absolute_url())
# break this out into a function
import libxslt
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]