diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-12-17 19:42:31 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-12-26 23:42:26 +0100 |
commit | be1f0f7d33440d96c2bcc1c7f3dfd5cbb356e54f (patch) | |
tree | a3cb3ea44e5685b79ed31b6de896c880406e1c51 | |
parent | 6e60238b6c182ce60ac1d929f41b1b92ac7d25d7 (diff) | |
download | mediagoblin-be1f0f7d33440d96c2bcc1c7f3dfd5cbb356e54f.tar.lz mediagoblin-be1f0f7d33440d96c2bcc1c7f3dfd5cbb356e54f.tar.xz mediagoblin-be1f0f7d33440d96c2bcc1c7f3dfd5cbb356e54f.zip |
upload refactor: push url handling
Start to refactor our upload handling in main submit and
the api. Start factoring out the handling of PuSH url
handling.
-rw-r--r-- | mediagoblin/submit/lib.py | 50 | ||||
-rw-r--r-- | mediagoblin/submit/views.py | 28 |
2 files changed, 52 insertions, 26 deletions
diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py new file mode 100644 index 00000000..57069e84 --- /dev/null +++ b/mediagoblin/submit/lib.py @@ -0,0 +1,50 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# 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 urllib +import urllib2 +import logging + +from mediagoblin import mg_globals + +_log = logging.getLogger(__name__) + + +def handle_push_urls(request): + if mg_globals.app_config["push_urls"]: + feed_url = request.urlgen( + 'mediagoblin.user_pages.atom_feed', + qualified=True, + user=request.user.username) + hubparameters = { + 'hub.mode': 'publish', + 'hub.url': feed_url} + hubdata = urllib.urlencode(hubparameters) + hubheaders = { + "Content-type": "application/x-www-form-urlencoded", + "Connection": "close"} + for huburl in mg_globals.app_config["push_urls"]: + hubrequest = urllib2.Request(huburl, hubdata, hubheaders) + try: + hubresponse = urllib2.urlopen(hubrequest) + except urllib2.HTTPError as exc: + # This is not a big issue, the item will be fetched + # by the PuSH server next time we hit it + _log.warning( + "push url %r gave error %r", huburl, exc.code) + except urllib2.URLError as exc: + _log.warning( + "push url %r is unreachable %r", huburl, exc.reason) diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index b52fca33..6d4c8be3 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -20,8 +20,6 @@ import uuid from os.path import splitext from celery import registry -import urllib -import urllib2 import logging _log = logging.getLogger(__name__) @@ -39,6 +37,7 @@ from mediagoblin.processing.task import ProcessMedia from mediagoblin.messages import add_message, SUCCESS from mediagoblin.media_types import sniff_media, \ InvalidFileType, FileTypeNotSupported +from mediagoblin.submit.lib import handle_push_urls @require_active_login @@ -134,30 +133,7 @@ def submit_start(request): # re-raise the exception raise - if mg_globals.app_config["push_urls"]: - feed_url = request.urlgen( - 'mediagoblin.user_pages.atom_feed', - qualified=True, - user=request.user.username) - hubparameters = { - 'hub.mode': 'publish', - 'hub.url': feed_url} - hubdata = urllib.urlencode(hubparameters) - hubheaders = { - "Content-type": "application/x-www-form-urlencoded", - "Connection": "close"} - for huburl in mg_globals.app_config["push_urls"]: - hubrequest = urllib2.Request(huburl, hubdata, hubheaders) - try: - hubresponse = urllib2.urlopen(hubrequest) - except urllib2.HTTPError as exc: - # This is not a big issue, the item will be fetched - # by the PuSH server next time we hit it - _log.warning( - "push url %r gave error %r", huburl, exc.code) - except urllib2.URLError as exc: - _log.warning( - "push url %r is unreachable %r", huburl, exc.reason) + handle_push_urls(request) add_message(request, SUCCESS, _('Woohoo! Submitted!')) |