aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/edit/forms.py5
-rw-r--r--mediagoblin/edit/views.py5
-rw-r--r--mediagoblin/submit/forms.py4
-rw-r--r--mediagoblin/util.py19
4 files changed, 27 insertions, 6 deletions
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py
index b2d575cb..5e3aab96 100644
--- a/mediagoblin/edit/forms.py
+++ b/mediagoblin/edit/forms.py
@@ -17,6 +17,8 @@
import wtforms
+from mediagoblin.util import convert_to_tag_list
+
class EditForm(wtforms.Form):
title = wtforms.TextField(
@@ -25,8 +27,7 @@ class EditForm(wtforms.Form):
slug = wtforms.TextField(
'Slug')
description = wtforms.TextAreaField('Description of this work')
- tags = wtforms.TextField(
- 'Tags')
+ tags = wtforms.TextField('Tags', filters=[convert_to_tag_list])
class EditProfileForm(wtforms.Form):
bio = wtforms.TextAreaField('Bio',
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 96cb4be3..f5e7f454 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -19,7 +19,8 @@ from webob import exc
from string import split
from mediagoblin import messages
-from mediagoblin.util import render_to_response, redirect, clean_html
+from mediagoblin.util import render_to_response, redirect, clean_html, \
+ TAGS_DELIMITER
from mediagoblin.edit import forms
from mediagoblin.edit.lib import may_edit_media
from mediagoblin.decorators import require_active_login, get_user_media_entry
@@ -37,7 +38,7 @@ def edit_media(request, media):
title = media['title'],
slug = media['slug'],
description = media['description'],
- tags = ' '.join(media['tags']))
+ tags = TAGS_DELIMITER.join(media['tags']))
if request.method == 'POST' and form.validate():
# Make sure there isn't already a MediaEntry with such a slug
diff --git a/mediagoblin/submit/forms.py b/mediagoblin/submit/forms.py
index 0e0fd086..e13d5425 100644
--- a/mediagoblin/submit/forms.py
+++ b/mediagoblin/submit/forms.py
@@ -17,6 +17,8 @@
import wtforms
+from mediagoblin.util import convert_to_tag_list
+
class SubmitStartForm(wtforms.Form):
title = wtforms.TextField(
@@ -24,4 +26,4 @@ class SubmitStartForm(wtforms.Form):
[wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField('Description of this work')
file = wtforms.FileField('File')
- tags = wtforms.TextField('Tags')
+ tags = wtforms.TextField('Tags', filters=[convert_to_tag_list])
diff --git a/mediagoblin/util.py b/mediagoblin/util.py
index ab219df0..7ee0a2d5 100644
--- a/mediagoblin/util.py
+++ b/mediagoblin/util.py
@@ -22,6 +22,7 @@ import sys
import re
import urllib
from math import ceil
+from string import strip
import copy
from babel.localedata import exists
@@ -369,8 +370,24 @@ def clean_html(html):
return HTML_CLEANER.clean_html(html)
-MARKDOWN_INSTANCE = markdown.Markdown(safe_mode='escape')
+TAGS_DELIMITER = ' '
+
+def convert_to_tag_list(tag_string):
+ """
+ Filter input from a "tags" field,
+ Strips trailing, leading, and internal whitespace, and also converts
+ the user input into an array of tags
+ """
+ if tag_string:
+ taglist = []
+ stripped_tag_string = ' '.join(tag_string.strip().split())
+ for tag in stripped_tag_string.split(TAGS_DELIMITER):
+ if tag.strip(): taglist.append(tag.strip())
+ return taglist
+
+
+MARKDOWN_INSTANCE = markdown.Markdown(safe_mode='escape')
def cleaned_markdown_conversion(text):
"""