From: Joar Wandborg Date: Mon, 21 Nov 2011 20:51:30 +0000 (+0100) Subject: Merge branch 'video_gstreamer-only' X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=b9e1fa280edfff4daf424bbcf51bd651ed00f411;p=mediagoblin.git Merge branch 'video_gstreamer-only' Conflicts: mediagoblin/db/migrations.py mediagoblin/submit/views.py --- b9e1fa280edfff4daf424bbcf51bd651ed00f411 diff --cc mediagoblin/db/migrations.py index edaf5630,01df7208..cfc01287 --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@@ -98,5 -99,19 +98,13 @@@ def user_add_forgot_password_token_and_ """ Add token and expiration fields to help recover forgotten passwords """ - database['users'].update( - {'fp_verification_key': {'$exists': False}}, - {'$set': {'fp_verification_key': None}}, - multi=True) - database['users'].update( - {'fp_token_expire': {'$exists': False}}, - {'$set': {'fp_token_expire': None}}, - multi=True) + add_table_field(database, 'users', 'fp_verification_key', None) + add_table_field(database, 'users', 'fp_token_expire', None) + + + @RegisterMigration(7) + def media_type_image_to_multimedia_type_image(database): + database['media_entries'].update( + {'media_type': 'image'}, + {'$set': {'media_type': 'mediagoblin.media_types.image'}}, + multi=True) diff --cc mediagoblin/gmg_commands/import_export.py index 30112969,fefbdb4e..4ec17d47 --- a/mediagoblin/gmg_commands/import_export.py +++ b/mediagoblin/gmg_commands/import_export.py @@@ -208,13 -212,15 +208,15 @@@ def _export_media(db, args) for entry in db.media_entries.find(): for name, path in entry['media_files'].items(): - _log.info('Exporting {0} - {1}'.format( + _log.info(u'Exporting {0} - {1}'.format( entry['title'], name)) - - mc_file = media_cache.get_file(path, mode='wb') - mc_file.write( - mg_globals.public_store.get_file(path, mode='rb').read()) + try: + mc_file = media_cache.get_file(path, mode='wb') + mc_file.write( + mg_globals.public_store.get_file(path, mode='rb').read()) + except e: + _log.error('Failed: {0}'.format(e)) _log.info('...Media exported') diff --cc mediagoblin/process_media/__init__.py index 54c0c493,96fe49fe..346bb479 --- a/mediagoblin/process_media/__init__.py +++ b/mediagoblin/process_media/__init__.py @@@ -54,10 -53,13 +54,13 @@@ class ProcessMedia(Task) # Try to process, and handle expected errors. try: + __import__(entry['media_type']) process_image(entry) except BaseProcessingFail, exc: - mark_entry_failed(entry[u'_id'], exc) + mark_entry_failed(entry._id, exc) return + except ImportError, exc: + mark_entry_failed(entry[u'_id'], exc) entry['state'] = u'processed' entry.save() diff --cc mediagoblin/submit/views.py index 139b1d1d,78f52160..dd1c3d1b --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@@ -22,13 -22,15 +22,14 @@@ from cgi import FieldStorag from werkzeug.utils import secure_filename from mediagoblin.db.util import ObjectId -from mediagoblin.util import ( - render_to_response, redirect, cleaned_markdown_conversion, \ - convert_to_tag_list_of_dicts) -from mediagoblin.util import pass_to_ugettext as _ +from mediagoblin.tools.text import cleaned_markdown_conversion, convert_to_tag_list_of_dicts +from mediagoblin.tools.translate import pass_to_ugettext as _ +from mediagoblin.tools.response import render_to_response, redirect from mediagoblin.decorators import require_active_login from mediagoblin.submit import forms as submit_forms, security - from mediagoblin.process_media import process_media, mark_entry_failed + from mediagoblin.process_media import mark_entry_failed from mediagoblin.messages import add_message, SUCCESS + from mediagoblin.media_types import get_media_type_and_manager @require_active_login @@@ -104,8 -104,8 +105,8 @@@ def submit_start(request) # (... don't change entry after this point to avoid race # conditions with changes to the document via processing code) try: - process_media.apply_async( + media_manager['processor'].apply_async( - [unicode(entry['_id'])], {}, + [unicode(entry._id)], {}, task_id=task_id) except BaseException as exc: # The purpose of this section is because when running in "lazy" diff --cc mediagoblin/views.py index ecf5b723,c2e3e80a..cd6aba9b --- a/mediagoblin/views.py +++ b/mediagoblin/views.py @@@ -14,13 -14,15 +14,17 @@@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . + import sys + from mediagoblin import mg_globals -from mediagoblin.util import render_to_response, Pagination +from mediagoblin.tools.pagination import Pagination +from mediagoblin.tools.response import render_to_response from mediagoblin.db.util import DESCENDING from mediagoblin.decorators import uses_pagination + from mediagoblin import media_types + + @uses_pagination def root_view(request, page): cursor = request.db.MediaEntry.find( diff --cc mediagoblin/workbench.py index 60a79f47,b5e8eac5..9578494c --- a/mediagoblin/workbench.py +++ b/mediagoblin/workbench.py @@@ -42,12 -42,13 +42,15 @@@ class Workbench(object) def __unicode__(self): return unicode(self.dir) + def __str__(self): return str(self.dir) + def __repr__(self): - return repr(self.dir) + try: + return str(self) + except AttributeError: + return 'None' def joinpath(self, *args): return os.path.join(self.dir, *args) diff --cc setup.py index 7333f974,ccd1f653..c3c2f86f --- a/setup.py +++ b/setup.py @@@ -66,8 -65,9 +66,9 @@@ setup ## their package managers. # 'lxml', ], + requires=['gst'], test_suite='nose.collector', - entry_points = """\ + entry_points="""\ [console_scripts] gmg = mediagoblin.gmg_commands:main_cli pybabel = mediagoblin.babel.messages.frontend:main