def redirect(request, document_id): # FIXME F**k I am an idiot need to figure out a way to make this better. # Maybe something like Django's Content Types where it will look up the model # within the `INSTALLED_APPS` or something. try: doc = Document.load(db, document_id) except: raise Http404 # Is it a Blog post? if doc.type == 'Post': from comfy.apps.blog.models import Post post = Post.load(db, doc.id) return HttpResponseRedirect(post.get_absolute_url()) # Is it a Flat page? elif doc.type == 'FlatPage': from comfy.apps.flatpages.models import FlatPage f = FlatPage.load(db, doc.id) return HttpResponseRedirect(f.get_absolute_url()) # Is it a Note? elif doc.type == 'Note': from comfy.apps.notes.models import Note note = Note.load(db, doc.id) return HttpResponseRedirect(note.get_absolute_url()) elif doc.type == 'Bookmark': from comfy.apps.bookmarks.models import Bookmark bookmark = Bookmark.load(db, doc.id) return HttpResponseRedirect(bookmark.get_absolute_url()) else: raise Http404
def flatpage(request, url): """ Flat page view. """ if not url.endswith('/') and settings.APPEND_SLASH: return HttpResponseRedirect("%s/" % request.path) if not url.startswith('/'): url = "/" + url flatpages = list(FlatPage.by_url()[(url)]) try: f = flatpages[0] except: raise Http404 # If registration is required for accessing this page, and the user isn't # logged in, redirect to the login page. if f.registration_required and not request.user.is_authenticated(): from django.contrib.auth.views import redirect_to_login return redirect_to_login(request.path) if f.template_name: t = loader.select_template((f.template_name, DEFAULT_TEMPLATE)) else: t = loader.get_template(DEFAULT_TEMPLATE) # To avoid having to always use the "|safe" filter in flatpage templates, # mark the title and content as already safe (since they are raw HTML # content in the first place). f.title = mark_safe(f.title) f.content = mark_safe(f.content) c = RequestContext(request, { 'flatpage': f, }) response = HttpResponse(t.render(c)) # populate_xheaders(request, response, FlatPage, f.id) return response