diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-17 18:30:15 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-17 18:30:15 +0100 |
commit | 6d13314e99c9e6054e5ab15f7f1fa3f51a87627e (patch) | |
tree | 5672acf3822295a05eb0a5e09b2b5e3fc13fde8c | |
parent | 8c7701f9f1653cf4038143cfb7a497ae21edf108 (diff) | |
parent | bb025ebda14297b721f8816d13980a477f62bca6 (diff) | |
download | mediagoblin-6d13314e99c9e6054e5ab15f7f1fa3f51a87627e.tar.lz mediagoblin-6d13314e99c9e6054e5ab15f7f1fa3f51a87627e.tar.xz mediagoblin-6d13314e99c9e6054e5ab15f7f1fa3f51a87627e.zip |
Merge remote branch 'remotes/macno/pushatom'
* remotes/macno/pushatom:
As per spec, we permit to have more then 1 hub
As suggested by Elrond, we use only one setting
Default is now PuSH disabled
Added PuSH capability
-rw-r--r-- | mediagoblin/config_spec.ini | 2 | ||||
-rw-r--r-- | mediagoblin/submit/views.py | 16 | ||||
-rw-r--r-- | mediagoblin/user_pages/views.py | 21 |
3 files changed, 33 insertions, 6 deletions
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini index eb22bc1b..dc286a27 100644 --- a/mediagoblin/config_spec.ini +++ b/mediagoblin/config_spec.ini @@ -50,6 +50,8 @@ allow_attachments = boolean(default=False) # Cookie stuff csrf_cookie_name = string(default='mediagoblin_csrftoken') +# Push stuff +push_urls = string_list(default=list()) [storage:publicstore] storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage") diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index dd273c7f..65243ca1 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -20,6 +20,7 @@ from os.path import splitext from cgi import FieldStorage from celery import registry +import urllib,urllib2 from werkzeug.utils import secure_filename @@ -125,6 +126,21 @@ 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) + hubresponse = urllib2.urlopen(hubrequest) + add_message(request, SUCCESS, _('Woohoo! Submitted!')) return redirect(request, "mediagoblin.user_pages.user_home", diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py index a234722f..29360e23 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -228,16 +228,25 @@ def atom_feed(request): """ ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI) """ + atomlinks = [{ + 'href': request.urlgen( + 'mediagoblin.user_pages.user_home', + qualified=True,user=request.matchdict['user']), + 'rel': 'alternate', + 'type': 'text/html' + }]; + if mg_globals.app_config["push_urls"]: + for push_url in mg_globals.app_config["push_urls"]: + atomlinks.append({ + 'rel': 'hub', + 'href': push_url}) + feed = AtomFeed( "MediaGoblin: Feed for user '%s'" % request.matchdict['user'], feed_url=request.url, id='tag:'+request.host+',2011:gallery.user-'+request.matchdict['user'], - links=[{ - 'href': request.urlgen( - 'mediagoblin.user_pages.user_home', - qualified=True,user=request.matchdict['user']), - 'rel': 'alternate', - 'type': 'text/html'}]) + links=atomlinks) + for entry in cursor: feed.add(entry.get('title'), |