aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/submit
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/submit')
-rw-r--r--mediagoblin/submit/forms.py6
-rw-r--r--mediagoblin/submit/lib.py38
-rw-r--r--mediagoblin/submit/views.py29
3 files changed, 40 insertions, 33 deletions
diff --git a/mediagoblin/submit/forms.py b/mediagoblin/submit/forms.py
index 6c0e8e9c..c5bacc44 100644
--- a/mediagoblin/submit/forms.py
+++ b/mediagoblin/submit/forms.py
@@ -33,7 +33,7 @@ def get_submit_start_form(form, **kwargs):
file = wtforms.FileField(
_('File'),
description=desc)
- title = wtforms.TextField(
+ title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500)])
description = wtforms.TextAreaField(
@@ -41,7 +41,7 @@ def get_submit_start_form(form, **kwargs):
description=_("""You can use
<a href="http://daringfireball.net/projects/markdown/basics">
Markdown</a> for formatting."""))
- tags = wtforms.TextField(
+ tags = wtforms.StringField(
_('Tags'),
[tag_length_validator],
description=_(
@@ -57,7 +57,7 @@ def get_submit_start_form(form, **kwargs):
return SubmitStartForm(form, **kwargs)
class AddCollectionForm(wtforms.Form):
- title = wtforms.TextField(
+ title = wtforms.StringField(
_('Title'),
[wtforms.validators.Length(min=0, max=500), wtforms.validators.InputRequired()])
description = wtforms.TextAreaField(
diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py
index aaa90ea0..a0e1cf90 100644
--- a/mediagoblin/submit/lib.py
+++ b/mediagoblin/submit/lib.py
@@ -18,12 +18,15 @@ import logging
import uuid
from os.path import splitext
+import six
+
from werkzeug.utils import secure_filename
from werkzeug.datastructures import FileStorage
from mediagoblin import mg_globals
from mediagoblin.tools.response import json_response
from mediagoblin.tools.text import convert_to_tag_list_of_dicts
+from mediagoblin.tools.federation import create_activity, create_generator
from mediagoblin.db.models import MediaEntry, ProcessingMetaData
from mediagoblin.processing import mark_entry_failed
from mediagoblin.processing.task import ProcessMedia
@@ -58,7 +61,7 @@ def get_upload_file_limits(user):
"""
Get the upload_limit and max_file_size for this user
"""
- if user.upload_limit >= 0:
+ if user.upload_limit is not None and user.upload_limit >= 0: # TODO: debug this
upload_limit = user.upload_limit
else:
upload_limit = mg_globals.app_config.get('upload_limit', None)
@@ -128,7 +131,7 @@ def submit_media(mg_app, user, submitted_file, filename,
# If the filename contains non ascii generate a unique name
if not all(ord(c) < 128 for c in filename):
- filename = unicode(uuid.uuid4()) + splitext(filename)[-1]
+ filename = six.text_type(uuid.uuid4()) + splitext(filename)[-1]
# Sniff the submitted media to determine which
# media plugin should handle processing
@@ -137,7 +140,7 @@ def submit_media(mg_app, user, submitted_file, filename,
# create entry and save in database
entry = new_upload_entry(user)
entry.media_type = media_type
- entry.title = (title or unicode(splitext(filename)[0]))
+ entry.title = (title or six.text_type(splitext(filename)[0]))
entry.description = description or u""
@@ -154,7 +157,7 @@ def submit_media(mg_app, user, submitted_file, filename,
queue_file = prepare_queue_task(mg_app, entry, filename)
with queue_file:
- queue_file.write(submitted_file.read())
+ queue_file.write(submitted_file)
# Get file size and round to 2 decimal places
file_size = mg_app.queue_store.get_file_size(
@@ -192,14 +195,18 @@ def submit_media(mg_app, user, submitted_file, filename,
else:
feed_url = None
+ add_comment_subscription(user, entry)
+
+ # Create activity
+ create_activity("post", entry, entry.uploader)
+ entry.save()
+
# Pass off to processing
#
# (... don't change entry after this point to avoid race
# conditions with changes to the document via processing code)
run_process_media(entry, feed_url)
- add_comment_subscription(user, entry)
-
return entry
@@ -213,7 +220,7 @@ def prepare_queue_task(app, entry, filename):
# (If we got it off the task's auto-generation, there'd be
# a risk of a race condition when we'd save after sending
# off the task)
- task_id = unicode(uuid.uuid4())
+ task_id = six.text_type(uuid.uuid4())
entry.queued_task_id = task_id
# Now store generate the queueing related filename
@@ -279,14 +286,21 @@ def api_upload_request(request, file_data, entry):
def api_add_to_feed(request, entry):
""" Add media to Feed """
- if entry.title:
- entry.generate_slug()
-
feed_url = request.urlgen(
'mediagoblin.user_pages.atom_feed',
qualified=True, user=request.user.username
)
- run_process_media(entry, feed_url)
add_comment_subscription(request.user, entry)
- return json_response(entry.serialize(request))
+
+ # Create activity
+ activity = create_activity(
+ verb="post",
+ obj=entry,
+ actor=entry.uploader,
+ generator=create_generator(request)
+ )
+ entry.save()
+ run_process_media(entry, feed_url)
+
+ return activity
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 42c378a8..ccdd70bc 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from mediagoblin import messages
import mediagoblin.mg_globals as mg_globals
@@ -27,8 +29,7 @@ from mediagoblin.tools.response import render_to_response, redirect
from mediagoblin.decorators import require_active_login, user_has_privilege
from mediagoblin.submit import forms as submit_forms
from mediagoblin.messages import add_message, SUCCESS
-from mediagoblin.media_types import \
- InvalidFileType, FileTypeNotSupported
+from mediagoblin.media_types import FileTypeNotSupported
from mediagoblin.submit.lib import \
check_file_field, submit_media, get_upload_file_limits, \
FileUploadLimit, UserUploadLimit, UserPastUploadLimit
@@ -59,9 +60,9 @@ def submit_start(request):
mg_app=request.app, user=request.user,
submitted_file=request.files['file'],
filename=request.files['file'].filename,
- title=unicode(submit_form.title.data),
- description=unicode(submit_form.description.data),
- license=unicode(submit_form.license.data) or None,
+ title=six.text_type(submit_form.title.data),
+ description=six.text_type(submit_form.description.data),
+ license=six.text_type(submit_form.license.data) or None,
tags_string=submit_form.tags.data,
upload_limit=upload_limit, max_file_size=max_file_size,
urlgen=request.urlgen)
@@ -87,18 +88,10 @@ def submit_start(request):
_('Sorry, you have reached your upload limit.'))
return redirect(request, "mediagoblin.user_pages.user_home",
user=request.user.username)
-
+ except FileTypeNotSupported as e:
+ submit_form.file.errors.append(e)
except Exception as e:
- '''
- This section is intended to catch exceptions raised in
- mediagoblin.media_types
- '''
- if isinstance(e, InvalidFileType) or \
- isinstance(e, FileTypeNotSupported):
- submit_form.file.errors.append(
- e)
- else:
- raise
+ raise
return render_to_response(
request,
@@ -117,8 +110,8 @@ def add_collection(request, media=None):
if request.method == 'POST' and submit_form.validate():
collection = request.db.Collection()
- collection.title = unicode(submit_form.title.data)
- collection.description = unicode(submit_form.description.data)
+ collection.title = six.text_type(submit_form.title.data)
+ collection.description = six.text_type(submit_form.description.data)
collection.creator = request.user.id
collection.generate_slug()