From 94876a8d62b7748291cedba6fd64f7fa914e6407 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 f3c68488939..31167741883 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -508,6 +508,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 26bed857b9a..98a1cbc22b5 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 6a2e9cd23ce..954946e922a 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -2116,6 +2116,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, @@ -2127,6 +2141,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 d420ecc706c127502c4c228113544598418bbb13 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 31167741883..e5455ec9e61 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -509,16 +509,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 954946e922a..804694de590 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -51,6 +51,7 @@ from omero.util.decorators import timeit, TimeIt from omeroweb.http import HttpJavascriptResponse, \ HttpJavascriptResponseServerError +from connector import Server import glob @@ -2105,6 +2106,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', {}) @@ -2119,8 +2123,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') @@ -2130,6 +2134,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 106cdaadc4fcb20fc5290d082c69a0d711848f4d 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 e5455ec9e61..dd931afa649 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -516,6 +516,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 98a1cbc22b5..2795d66ef69 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 @@ -42,14 +42,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 804694de590..b64b7aa9941 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -2120,21 +2120,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, @@ -2147,8 +2156,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 b2070f6b7be2153dc224fe8457ec4a9dca05b1a3 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 2795d66ef69..0a8c42ffdea 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 @@ -48,7 +48,7 @@ - + {% endif %} {% if twitter %} @@ -57,7 +57,7 @@ - + {% endif %} {% endblock %} From a69eced57d53b1fd960161b75b6ed2fb19c99eef 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 dd931afa649..77a18168067 100644 --- a/components/tools/OmeroWeb/omeroweb/settings.py +++ b/components/tools/OmeroWeb/omeroweb/settings.py @@ -511,14 +511,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 406caa3a8989292b0714b5912d7faea1b5c416e2 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 b64b7aa9941..081a71d1ee8 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -51,7 +51,7 @@ from omero.util.decorators import timeit, TimeIt from omeroweb.http import HttpJavascriptResponse, \ HttpJavascriptResponseServerError -from connector import Server +from omeroweb.connector import Server import glob From e85413bacb11a03b3fbbdbc6a6c6f3512fb3ab77 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 081a71d1ee8..8d41f1cb757 100644 --- a/components/tools/OmeroWeb/omeroweb/webgateway/views.py +++ b/components/tools/OmeroWeb/omeroweb/webgateway/views.py @@ -2128,7 +2128,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)