uses standard functions instead of form filters and fixes taglist default

- seems simpler to use the same tag field processing procedures on media
  submit and edit, so now processing with a regular function instead of
  a form filter. Filters run on form load and post by default.
- moved tags to sidebar
- taglist defaults to [] instead of None
- adds case sensitivity toggle
This commit is contained in:
Caleb Forbes Davis V 2011-07-12 22:26:10 -05:00
parent 93e3468a2a
commit 6f2e4585cc
6 changed files with 21 additions and 17 deletions

View File

@ -17,8 +17,6 @@
import wtforms import wtforms
from mediagoblin.util import convert_to_tag_list
class EditForm(wtforms.Form): class EditForm(wtforms.Form):
title = wtforms.TextField( title = wtforms.TextField(

View File

@ -19,8 +19,9 @@ from webob import exc
from string import split from string import split
from mediagoblin import messages from mediagoblin import messages
from mediagoblin.util import render_to_response, redirect, clean_html, \ from mediagoblin.util import (
TAGS_DELIMITER render_to_response, redirect, clean_html, TAGS_DELIMITER, \
convert_to_tag_list)
from mediagoblin.edit import forms from mediagoblin.edit import forms
from mediagoblin.edit.lib import may_edit_media from mediagoblin.edit.lib import may_edit_media
from mediagoblin.decorators import require_active_login, get_user_media_entry from mediagoblin.decorators import require_active_login, get_user_media_entry
@ -62,7 +63,7 @@ def edit_media(request, media):
media['description'])) media['description']))
media['slug'] = request.POST['slug'] media['slug'] = request.POST['slug']
media['tags'] = request.POST['tags'].split(TAGS_DELIMITER) media['tags'] = convert_to_tag_list(request.POST['tags'])
media.save() media.save()
return redirect(request, "mediagoblin.user_pages.media_home", return redirect(request, "mediagoblin.user_pages.media_home",

View File

@ -17,8 +17,6 @@
import wtforms import wtforms
from mediagoblin.util import convert_to_tag_list
class SubmitStartForm(wtforms.Form): class SubmitStartForm(wtforms.Form):
title = wtforms.TextField( title = wtforms.TextField(
@ -26,4 +24,4 @@ class SubmitStartForm(wtforms.Form):
[wtforms.validators.Length(min=0, max=500)]) [wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField('Description of this work') description = wtforms.TextAreaField('Description of this work')
file = wtforms.FileField('File') file = wtforms.FileField('File')
tags = wtforms.TextField('Tags', filters=[convert_to_tag_list]) tags = wtforms.TextField('Tags')

View File

@ -21,7 +21,8 @@ from string import split
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
from mediagoblin.util import ( from mediagoblin.util import (
render_to_response, redirect, cleaned_markdown_conversion) render_to_response, redirect, cleaned_markdown_conversion, \
convert_to_tag_list)
from mediagoblin.decorators import require_active_login from mediagoblin.decorators import require_active_login
from mediagoblin.submit import forms as submit_forms, security from mediagoblin.submit import forms as submit_forms, security
from mediagoblin.process_media import process_media_initial from mediagoblin.process_media import process_media_initial
@ -59,7 +60,7 @@ def submit_start(request):
entry['media_type'] = u'image' # heh entry['media_type'] = u'image' # heh
entry['uploader'] = request.user['_id'] entry['uploader'] = request.user['_id']
entry['tags'] = split(request.POST.get('tags')) entry['tags'] = convert_to_tag_list(request.POST.get('tags'))
# Save, just so we can get the entry id for the sake of using # Save, just so we can get the entry id for the sake of using
# it to generate the file path # it to generate the file path

View File

@ -48,10 +48,6 @@
user= media.uploader().username) }}"> user= media.uploader().username) }}">
{{- media.uploader().username }}</a> {{- media.uploader().username }}</a>
</p> </p>
<p>
{{ ' '.join(media.tags) }}
</p>
<br /> <br />
<h3>Comments</h3> <h3>Comments</h3>
@ -114,6 +110,11 @@
</p> </p>
{% endif %} {% endif %}
</p> </p>
{% if media.tags %}
<p>
{{ ' '.join(media.tags) }}
</p>
{% endif %}
</div> </div>
{% else %} {% else %}
<p>Sorry, no such media found.<p/> <p>Sorry, no such media found.<p/>

View File

@ -371,6 +371,7 @@ def clean_html(html):
TAGS_DELIMITER = u' ' TAGS_DELIMITER = u' '
TAGS_CASE_SENSITIVE = False
def convert_to_tag_list(tag_string): def convert_to_tag_list(tag_string):
""" """
@ -379,11 +380,15 @@ def convert_to_tag_list(tag_string):
Strips trailing, leading, and internal whitespace, and also converts Strips trailing, leading, and internal whitespace, and also converts
the user input into an array of tags the user input into an array of tags
""" """
if tag_string:
taglist = [] taglist = []
if tag_string:
stripped_tag_string = u' '.join(tag_string.strip().split()) stripped_tag_string = u' '.join(tag_string.strip().split())
for tag in stripped_tag_string.split(TAGS_DELIMITER): for tag in stripped_tag_string.split(TAGS_DELIMITER):
if tag.strip(): taglist.append(tag.strip()) if tag.strip():
if TAGS_CASE_SENSITIVE:
taglist.append(tag.strip())
else:
taglist.append(tag.strip().lower())
return taglist return taglist