adds filter function to parse and clean tags field input
authorCaleb Forbes Davis V <caldavis@gmail.com>
Wed, 13 Jul 2011 01:06:17 +0000 (20:06 -0500)
committerCaleb Forbes Davis V <caldavis@gmail.com>
Wed, 13 Jul 2011 01:06:17 +0000 (20:06 -0500)
- for some reason the tags are showing up in the media edit form
  with u'..' and surrounded with []. I don't know why, grr

mediagoblin/edit/forms.py
mediagoblin/edit/views.py
mediagoblin/submit/forms.py
mediagoblin/util.py

index b2d575cb7b50d3185acbcf688bb0490e3188e0b3..5e3aab96159b3a287aa9b4493ad4995ab52eded7 100644 (file)
@@ -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',
index 96cb4be36ad65c3185fb3d0f1d2a7423a5e0c0cd..f5e7f454fe2a2ba3d379596614b71f8f7a2c9f95 100644 (file)
@@ -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
index 0e0fd08694929a53150b6614092a3e352346b276..e13d542528a77c06065731b05422bba8f1dc6144 100644 (file)
@@ -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])
index ab219df034e9c0d0ee0c36e8330d3512fa94108f..7ee0a2d5e9c209ee369cbde9ae004efc1bdae00d 100644 (file)
@@ -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):
     """