Added Markdown rendering for media_entry

This commit is contained in:
Joar Wandborg 2011-06-12 03:24:31 +02:00
parent d07713d0b0
commit 44e2da2fe6
7 changed files with 24 additions and 7 deletions

View File

@ -73,7 +73,8 @@ class MediaEntry(Document):
'title': unicode, 'title': unicode,
'slug': unicode, 'slug': unicode,
'created': datetime.datetime, 'created': datetime.datetime,
'description': unicode, 'description': unicode, # May contain markdown/up
'description_html': unicode, # May contain plaintext, or HTML
'media_type': unicode, 'media_type': unicode,
'media_data': dict, # extra data relevant to this media_type 'media_data': dict, # extra data relevant to this media_type
'plugin_data': dict, # plugins can dump stuff here. 'plugin_data': dict, # plugins can dump stuff here.

View File

@ -47,7 +47,14 @@ def edit_media(request, media):
u'An entry with that slug already exists for this user.') u'An entry with that slug already exists for this user.')
else: else:
media['title'] = request.POST['title'] media['title'] = request.POST['title']
media['description'] = request.POST['description'] media['description'] = request.POST.get('description')
import markdown
md = markdown.Markdown(
safe_mode = 'escape')
media['description_html'] = md.convert(
media['description'])
media['slug'] = request.POST['slug'] media['slug'] = request.POST['slug']
media.save() media.save()

View File

@ -48,6 +48,13 @@ def submit_start(request):
entry = request.db.MediaEntry() entry = request.db.MediaEntry()
entry['title'] = request.POST['title'] or unicode(splitext(filename)[0]) entry['title'] = request.POST['title'] or unicode(splitext(filename)[0])
entry['description'] = request.POST.get('description') entry['description'] = request.POST.get('description')
import markdown
md = markdown.Markdown(
safe_mode = 'escape')
entry['description_html'] = md.convert(
entry['description'])
entry['media_type'] = u'image' # heh entry['media_type'] = u'image' # heh
entry['uploader'] = request.user['_id'] entry['uploader'] = request.user['_id']

View File

@ -25,7 +25,9 @@
</h1> </h1>
<img class="media_image" src="{{ request.app.public_store.file_url( <img class="media_image" src="{{ request.app.public_store.file_url(
media.media_files.main) }}" /> media.media_files.main) }}" />
<p>{{ media.description }}</p> {% autoescape False %}
<p>{{ media.description_html }}</p>
{% endautoescape %}
<p>Uploaded on <p>Uploaded on
{{ "%4d-%02d-%02d"|format(media.created.year, {{ "%4d-%02d-%02d"|format(media.created.year,
media.created.month, media.created.day) }} media.created.month, media.created.day) }}

View File

@ -81,10 +81,10 @@ def atom_feed(request):
feed = AtomFeed(request.matchdict['user'], feed = AtomFeed(request.matchdict['user'],
feed_url=request.url, feed_url=request.url,
url=request.host_url) url=request.host_url)
for entry in cursor: for entry in cursor:
feed.add(entry.get('title'), feed.add(entry.get('title'),
entry.get('description'), entry.get('description_html'),
content_type='html', content_type='html',
author=request.matchdict['user'], author=request.matchdict['user'],
updated=entry.get('created'), updated=entry.get('created'),

View File

@ -34,7 +34,6 @@ from webob import Response, exc
from mediagoblin import globals as mgoblin_globals from mediagoblin import globals as mgoblin_globals
from mediagoblin.db.util import ObjectId from mediagoblin.db.util import ObjectId
TESTS_ENABLED = False TESTS_ENABLED = False
def _activate_testing(): def _activate_testing():
""" """
@ -99,7 +98,7 @@ def get_jinja_env(template_loader, locale):
template_env = jinja2.Environment( template_env = jinja2.Environment(
loader=template_loader, autoescape=True, loader=template_loader, autoescape=True,
extensions=['jinja2.ext.i18n']) extensions=['jinja2.ext.i18n', 'jinja2.ext.autoescape'])
template_env.install_gettext_callables( template_env.install_gettext_callables(
mgoblin_globals.translations.gettext, mgoblin_globals.translations.gettext,

View File

@ -42,6 +42,7 @@ setup(
'translitcodec', 'translitcodec',
'argparse', 'argparse',
'webtest', 'webtest',
'Markdown',
], ],
test_suite='nose.collector', test_suite='nose.collector',