aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2012-01-17 18:30:15 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2012-01-17 18:30:15 +0100
commit6d13314e99c9e6054e5ab15f7f1fa3f51a87627e (patch)
tree5672acf3822295a05eb0a5e09b2b5e3fc13fde8c
parent8c7701f9f1653cf4038143cfb7a497ae21edf108 (diff)
parentbb025ebda14297b721f8816d13980a477f62bca6 (diff)
downloadmediagoblin-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.ini2
-rw-r--r--mediagoblin/submit/views.py16
-rw-r--r--mediagoblin/user_pages/views.py21
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'),