From d00ae2664a834522eef6b193383bad56d882e085 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Mon, 12 Oct 2015 23:31:46 +0100 Subject: [PATCH 1/7] Add support for twitter cards --- components/tools/OmeroWeb/omeroweb/settings.py | 12 ++++++++++++ .../webgateway/viewport/omero_image.html | 9 +++++++++ .../tools/OmeroWeb/omeroweb/webgateway/views.py | 17 +++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 6925daea5f4..200de38f168 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -506,6 +506,18 @@ def leave_none_unset_int(s): "omero.web.public.cache.timeout": ["PUBLIC_CACHE_TIMEOUT", 60 * 60 * 24, int, None], + # Social media integration + "omero.web.twitter.enabled": + ["TWITTER_ENABLED", + "false", + parse_boolean, + "Enable Twitter cards."], + "omero.web.twitter.siteuser": + ["TWITTER_SITE_USER", + None, + leave_none_unset, + "Twitter site username."], + # Application configuration "omero.web.server_list": ["SERVER_LIST", diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html index f7b432e82be..5e729f7808b 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html +++ b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html @@ -1,5 +1,6 @@ {% extends "webgateway/core_html.html" %} {% load i18n %} +{% load common_filters %} {% comment %} +{% if twitter %} + + + + + + +{% endif %} {% endblock %} {% block script %} diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index 37bb99dcb2b..97d80ad9d34 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -1952,6 +1952,20 @@ def full_viewer(request, iid, conn=None, **kwargs): if image is None: logger.debug("(a)Image %s not found..." % (str(iid))) raise Http404 + twitter = None + twitter_img = None + + if settings.TWITTER_ENABLED and hasattr(settings, 'TWITTER_SITE_USER'): + twitter = settings.TWITTER_SITE_USER + if twitter: + prefix = kwargs.get( + 'thumbprefix', 'webgateway.views.render_thumbnail') + + def urlprefix(iid): + return reverse(prefix, args=(iid,)) + + twitter_img = request.build_absolute_uri(urlprefix(iid)) + d = {'blitzcon': conn, 'image': image, 'opts': rid, @@ -1963,6 +1977,9 @@ def full_viewer(request, iid, conn=None, **kwargs): # remove any trailing slash 'viewport_server', reverse('webgateway')).rstrip('/'), + 'twitter': twitter, + 'twitter_img': twitter_img, + 'object': 'image:%i' % int(iid)} template = kwargs.get('template', From 6a285cf777c302999509e2ce1770e7572ea86e38 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Tue, 15 Dec 2015 17:39:32 +0000 Subject: [PATCH 2/7] Configure Twitter for each individual server Rename property as omero.web.sharing.twitter to provide a namespace for other sharing options. --- components/tools/OmeroWeb/omeroweb/settings.py | 17 +++++++---------- .../tools/OmeroWeb/omeroweb/webgateway/views.py | 10 ++++++++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 200de38f168..c6d27c007a6 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -507,16 +507,13 @@ def leave_none_unset_int(s): ["PUBLIC_CACHE_TIMEOUT", 60 * 60 * 24, int, None], # Social media integration - "omero.web.twitter.enabled": - ["TWITTER_ENABLED", - "false", - parse_boolean, - "Enable Twitter cards."], - "omero.web.twitter.siteuser": - ["TWITTER_SITE_USER", - None, - leave_none_unset, - "Twitter site username."], + "omero.web.sharing.twitter": + ["SHARING_TWITTER", + {}, + json.loads, + ("Dictionary of `server-name: @twitter-site-username`, where " + "server-name matches a name from `omero.web.server_list`. " + "For example: ``'{\"omero\": \"@openmicroscopy\"}'``")], # Application configuration "omero.web.server_list": diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index 97d80ad9d34..02a2239be9e 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -45,6 +45,7 @@ from omero.util.decorators import timeit, TimeIt from omeroweb.http import HttpJavascriptResponse, HttpJsonResponse, \ HttpJavascriptResponseServerError +from connector import Server import glob @@ -1941,6 +1942,9 @@ def full_viewer(request, iid, conn=None, **kwargs): @return: html page of image and metadata """ + server_id = request.session['connector'].server_id + server_name = Server.get(server_id).server + rid = getImgDetailsFromReq(request) server_settings = request.session.get('server_settings', {}) \ .get('viewer', {}) @@ -1955,8 +1959,8 @@ def full_viewer(request, iid, conn=None, **kwargs): twitter = None twitter_img = None - if settings.TWITTER_ENABLED and hasattr(settings, 'TWITTER_SITE_USER'): - twitter = settings.TWITTER_SITE_USER + if hasattr(settings, 'SHARING_TWITTER'): + twitter = settings.SHARING_TWITTER.get(server_name) if twitter: prefix = kwargs.get( 'thumbprefix', 'webgateway.views.render_thumbnail') @@ -1966,6 +1970,8 @@ def urlprefix(iid): twitter_img = request.build_absolute_uri(urlprefix(iid)) + logger.debug('Twitter enabled: %s %s', twitter, twitter_img) + d = {'blitzcon': conn, 'image': image, 'opts': rid, From 9012714866e144a9b0e5557715c51d2ca3b2f1b2 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Tue, 15 Dec 2015 19:03:57 +0000 Subject: [PATCH 3/7] Add opengraph (facebook) support --- .../tools/OmeroWeb/omeroweb/settings.py | 7 ++++++ .../webgateway/viewport/omero_image.html | 12 +++++++++- .../OmeroWeb/omeroweb/webgateway/views.py | 23 ++++++++++++++----- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index c6d27c007a6..309cae3ecc9 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -514,6 +514,13 @@ def leave_none_unset_int(s): ("Dictionary of `server-name: @twitter-site-username`, where " "server-name matches a name from `omero.web.server_list`. " "For example: ``'{\"omero\": \"@openmicroscopy\"}'``")], + "omero.web.sharing.opengraph": + ["SHARING_OPENGRAPH", + {}, + json.loads, + ("Dictionary of `server-name: site-name`, where " + "server-name matches a name from `omero.web.server_list`. " + "For example: ``'{\"omero\": \"Open Microscopy\"}'``")], # Application configuration "omero.web.server_list": diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html index 5e729f7808b..a3fcc3dc5e6 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html +++ b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html @@ -43,14 +43,24 @@ +{% if opengraph %} + + + + + + +{% endif %} + {% if twitter %} - + {% endif %} + {% endblock %} {% block script %} diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index 02a2239be9e..5e6e64940b6 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -1956,21 +1956,30 @@ def full_viewer(request, iid, conn=None, **kwargs): if image is None: logger.debug("(a)Image %s not found..." % (str(iid))) raise Http404 + + opengraph = None twitter = None - twitter_img = None + image_preview = None + page_url = None + + if hasattr(settings, 'SHARING_OPENGRAPH'): + opengraph = settings.SHARING_OPENGRAPH.get(server_name) + logger.debug('Open Graph enabled: %s', twitter) if hasattr(settings, 'SHARING_TWITTER'): twitter = settings.SHARING_TWITTER.get(server_name) - if twitter: + logger.debug('Twitter enabled: %s', twitter) + + if opengraph or twitter: prefix = kwargs.get( 'thumbprefix', 'webgateway.views.render_thumbnail') def urlprefix(iid): return reverse(prefix, args=(iid,)) - twitter_img = request.build_absolute_uri(urlprefix(iid)) - - logger.debug('Twitter enabled: %s %s', twitter, twitter_img) + image_preview = request.build_absolute_uri(urlprefix(iid)) + page_url = request.build_absolute_uri(reverse( + 'webgateway.views.full_viewer', args=(iid,))) d = {'blitzcon': conn, 'image': image, @@ -1983,8 +1992,10 @@ def urlprefix(iid): # remove any trailing slash 'viewport_server', reverse('webgateway')).rstrip('/'), + 'opengraph': opengraph, 'twitter': twitter, - 'twitter_img': twitter_img, + 'image_preview': image_preview, + 'page_url': page_url, 'object': 'image:%i' % int(iid)} From 7ed2b525d94c76b27971ad34cf5958c53568449b Mon Sep 17 00:00:00 2001 From: Simon Li Date: Thu, 17 Dec 2015 14:15:28 +0000 Subject: [PATCH 4/7] image urls should have a trailing / --- .../webgateway/templates/webgateway/viewport/omero_image.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html index a3fcc3dc5e6..b86f5c5603f 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html +++ b/components/tools/OmeroWeb/omeroweb/webgateway/templates/webgateway/viewport/omero_image.html @@ -49,7 +49,7 @@ - + {% endif %} {% if twitter %} @@ -58,7 +58,7 @@ - + {% endif %} {% endblock %} From fb523e7f56b0de54cef2cf2b553570d03213f285 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Wed, 13 Jan 2016 13:58:33 +0000 Subject: [PATCH 5/7] {} must be quoted to be valid json in settings.py --- components/tools/OmeroWeb/omeroweb/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/tools/OmeroWeb/omeroweb/settings.py b/components/tools/OmeroWeb/omeroweb/settings.py index 309cae3ecc9..c2b374d113b 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -509,14 +509,14 @@ def leave_none_unset_int(s): # Social media integration "omero.web.sharing.twitter": ["SHARING_TWITTER", - {}, + '{}', json.loads, ("Dictionary of `server-name: @twitter-site-username`, where " "server-name matches a name from `omero.web.server_list`. " "For example: ``'{\"omero\": \"@openmicroscopy\"}'``")], "omero.web.sharing.opengraph": ["SHARING_OPENGRAPH", - {}, + '{}', json.loads, ("Dictionary of `server-name: site-name`, where " "server-name matches a name from `omero.web.server_list`. " From 0ef606b10173fe3fd5d2f7075415232810c3d096 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Fri, 13 May 2016 10:30:44 +0100 Subject: [PATCH 6/7] Use full path to import Server settings --- components/tools/OmeroWeb/omeroweb/webgateway/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index 5e6e64940b6..f7e5bec47b7 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -45,7 +45,7 @@ from omero.util.decorators import timeit, TimeIt from omeroweb.http import HttpJavascriptResponse, HttpJsonResponse, \ HttpJavascriptResponseServerError -from connector import Server +from omeroweb.connector import Server import glob From d3ecb77a9579c1fbc0723cb4fb0e1dcd3ac19beb Mon Sep 17 00:00:00 2001 From: Simon Li Date: Mon, 16 May 2016 11:22:13 +0100 Subject: [PATCH 7/7] Use correct var name in debug log --- components/tools/OmeroWeb/omeroweb/webgateway/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/tools/OmeroWeb/omeroweb/webgateway/views.py b/components/tools/OmeroWeb/omeroweb/webgateway/views.py index f7e5bec47b7..4b1894da3bf 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -1964,7 +1964,7 @@ def full_viewer(request, iid, conn=None, **kwargs): if hasattr(settings, 'SHARING_OPENGRAPH'): opengraph = settings.SHARING_OPENGRAPH.get(server_name) - logger.debug('Open Graph enabled: %s', twitter) + logger.debug('Open Graph enabled: %s', opengraph) if hasattr(settings, 'SHARING_TWITTER'): twitter = settings.SHARING_TWITTER.get(server_name)