Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions components/tools/OmeroWeb/omeroweb/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,22 @@ def leave_none_unset_int(s):
"omero.web.public.cache.timeout":
["PUBLIC_CACHE_TIMEOUT", 60 * 60 * 24, int, None],

# 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`. "
"For example: ``'{\"omero\": \"Open Microscopy\"}'``")],

# Application configuration
"omero.web.server_list":
["SERVER_LIST",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% extends "webgateway/core_html.html" %}
{% load i18n %}
{% load common_filters %}

{% comment %}
<!--
Expand Down Expand Up @@ -42,6 +43,24 @@
<link rel="stylesheet" type="text/css" href="{% static "webgateway/css/ome.iehacks.css"|add:url_suffix %}" media="all" />
<![endif]-->

{% if opengraph %}
<meta name="og:title" content="{{ image.getName|escape }}">
<meta name="og:type" content="website">
<meta name="og:site_name" content="{{ opengraph }}">
<meta name="og:description" content="{{ image.getDescription|default:image.getOwner.getName|escape }}">
<meta name="og:url" content="{{ page_url }}">
<meta name="og:image" content="{{ image_preview }}512/">
{% endif %}

{% if twitter %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{ twitter|escape }}">
<meta name="twitter:title" content="{{ image.getName|truncateafter:'67'|escape }}">
<meta name="twitter:description" content="{{ image.getDescription|default:image.getOwner.getName|truncateafter:'197'|escape }}">
<meta name="twitter:creator" content="{{ twitter|escape }}">
<meta name="twitter:image" content="{{ image_preview }}280/">
{% endif %}

{% endblock %}

{% block script %}
Expand Down
34 changes: 34 additions & 0 deletions components/tools/OmeroWeb/omeroweb/webgateway/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
from omero.util.decorators import timeit, TimeIt
from omeroweb.http import HttpJavascriptResponse, HttpJsonResponse, \
HttpJavascriptResponseServerError
from omeroweb.connector import Server

import glob

Expand Down Expand Up @@ -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
Copy link
Copy Markdown
Member Author

@manics manics May 12, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something (I haven't been able to find what) changed in omeroweb which means Server._registry is empty, so Server.get(server_id) returns None instead of an object.

cc @aleksandra-tarkowska

Copy link
Copy Markdown
Member

@atarkowska atarkowska May 12, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2016-05-12 21:07:28,464 DEBUG [                     omero.gateway.utils] (proc.56823) setOmeroShare():163 Key 'omero.share' not found in <ServiceOptsDict: {'omero.session.uuid': '7066138f-cd75-408f-b913-d62b833fb2ff', 'omero.group': '-1', 'omero.client.uuid': 'ad442d36-7712-46cf-9e23-dcc59062c28d'}>
2016-05-12 21:07:28,465 DEBUG [               omeroweb.webgateway.views] (proc.56823) full_viewer():1946 server_id 1
2016-05-12 21:07:28,465 DEBUG [               omeroweb.webgateway.views] (proc.56823) full_viewer():1948 server_name: omero

your PR works for me
(tested with development server, gunicorn throws exception as stated)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@manics FastCGI used manage.py to start workers, wsgi uses different application handler, where settings are not imported. if you remove https://github.com/openmicroscopy/openmicroscopy/blob/develop/components/tools/OmeroWeb/omeroweb/manage.py#L38 it will fail with exactly the same error.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the sleuthing, @aleksandra-tarkowska


rid = getImgDetailsFromReq(request)
server_settings = request.session.get('server_settings', {}) \
.get('viewer', {})
Expand All @@ -1952,6 +1956,31 @@ 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
image_preview = None
page_url = None

if hasattr(settings, 'SHARING_OPENGRAPH'):
opengraph = settings.SHARING_OPENGRAPH.get(server_name)
logger.debug('Open Graph enabled: %s', opengraph)

if hasattr(settings, 'SHARING_TWITTER'):
twitter = settings.SHARING_TWITTER.get(server_name)
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,))

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,
'opts': rid,
Expand All @@ -1963,6 +1992,11 @@ def full_viewer(request, iid, conn=None, **kwargs):
# remove any trailing slash
'viewport_server', reverse('webgateway')).rstrip('/'),

'opengraph': opengraph,
'twitter': twitter,
'image_preview': image_preview,
'page_url': page_url,

'object': 'image:%i' % int(iid)}

template = kwargs.get('template',
Expand Down