Treat posts as markdown. #262
[zzz-spline-forum.git] / splinext / forum / controllers / forum.py
index 342e8e6..b15302c 100644 (file)
@@ -1,7 +1,7 @@
 import logging
 
 from pylons import config, request, response, session, tmpl_context as c, url
-from pylons.controllers.util import abort, redirect_to
+from pylons.controllers.util import abort, redirect
 from routes import request_config
 from sqlalchemy.orm.exc import NoResultFound
 import wtforms
@@ -10,6 +10,7 @@ from wtforms import fields
 from spline.model import meta
 from spline.lib import helpers as h
 from spline.lib.base import BaseController, render
+import spline.lib.markdown
 from splinext.forum import model as forum_model
 
 log = logging.getLogger(__name__)
@@ -29,9 +30,8 @@ class ForumController(BaseController):
         return render('/forum/forums.mako')
 
     def threads(self, forum_id):
-        try:
-            c.forum = meta.Session.query(forum_model.Forum).get(forum_id)
-        except NoResultFound:
+        c.forum = meta.Session.query(forum_model.Forum).get(forum_id)
+        if not c.forum:
             abort(404)
 
         c.write_thread_form = WriteThreadForm()
@@ -93,9 +93,11 @@ class ForumController(BaseController):
 
         # Redirect to the new thread
         h.flash("Contribution to the collective knowledge of the species successfully recorded.")
-        redirect_to(controller='forum', action='posts',
-            forum_id=forum_id, thread_id=thread.id,
-            _code=303)
+        redirect(
+            url(controller='forum', action='posts',
+                forum_id=forum_id, thread_id=thread.id),
+            code=303,
+        )
 
     def write(self, forum_id, thread_id):
         """Provides a form for posting to a thread."""
@@ -120,10 +122,12 @@ class ForumController(BaseController):
             .with_lockmode('update') \
             .get(c.thread.id)
 
+        source = c.write_post_form.content.data
         post = forum_model.Post(
             position = c.thread.post_count + 1,
             author_user_id = c.user.id,
-            content = c.write_post_form.content.data,
+            raw_content = source,
+            content = spline.lib.markdown.translate(source),
         )
 
         c.thread.posts.append(post)
@@ -134,6 +138,8 @@ class ForumController(BaseController):
         # Redirect to the thread
         # XXX probably to the post instead; anchor?  depends on paging scheme
         h.flash('Your uniqueness has been added to our own.')
-        redirect_to(controller='forum', action='posts',
-            forum_id=forum_id, thread_id=thread_id,
-            _code=303)
+        redirect(
+            url(controller='forum', action='posts',
+                forum_id=forum_id, thread_id=thread_id),
+            code=303,
+        )