Trees | Indices | Help |
|
---|
|
1 # Copyright (C) 2011 University of Dundee & Open Microscopy Environment. 2 # All rights reserved. 3 # 4 # This program is free software: you can redistribute it and/or modify 5 # it under the terms of the GNU Affero General Public License as 6 # published by the Free Software Foundation, either version 3 of the 7 # License, or (at your option) any later version. 8 # 9 # This program is distributed in the hope that it will be useful, 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 # GNU Affero General Public License for more details. 13 # 14 # You should have received a copy of the GNU Affero General Public License 15 # along with this program. If not, see <http://www.gnu.org/licenses/>. 16 # 17 18 from django.http import HttpResponse, HttpResponseRedirect 19 from django.shortcuts import get_object_or_404, render_to_response 20 from django.core.urlresolvers import reverse 21 from django.utils.datastructures import MergeDict 22 from omeroweb.webclient.views import isUserConnected, login as webclient_login 23 from omeroweb.webgateway.views import getBlitzConnection, _session_logout 24 from omeroweb.webpublic.models import Link 25 from omeroweb.webpublic.baseconv import base62 26 import settings 27 import logging 28 import traceback 29 import omero 30 31 logger = logging.getLogger('webpublic') 32 useragent = "OMERO.webpublic" 37 4345 group = conn.getGroupFromContext() 46 members = conn.containedExperimenters(group.id) 47 webindex = request.build_absolute_uri(reverse('webindex')) 48 if not hasattr(settings, 'PUBLIC_USER') \ 49 or not hasattr(settings, 'PUBLIC_PASSWORD'): 50 raise UrlValidationError('Missing "omero.web.public.user" or ' \ 51 '"omero.web.public.password" configuration!') 52 if not url.startswith(webindex): 53 raise UrlValidationError('Not from this OMERO.web host!') 54 if not group.details.permissions.isGroupRead(): 55 raise UrlValidationError('Group "%s" is not collaborative!' % \ 56 group.name) 57 for member in members: 58 if settings.PUBLIC_USER == member.omeName: 59 return 60 raise UrlValidationError('Public user "%s" not a member of "%s"!' % \ 61 (settings.PUBLIC_USER, group.name))62 6770 template = 'webpublic/publicise.html' 71 conn = kwargs['conn'] 72 url = request.POST.get('public_url') 73 if url is None or len(url) == 0: 74 return render_to_response( 75 template, {'url': '', 'error': 'No URL specified!'}) 76 webindex = request.build_absolute_uri(reverse('webindex')) 77 data = {'url': url} 78 try: 79 _validate_url(url, request, conn) 80 except UrlValidationError, e: 81 data['error'] = e.error 82 return render_to_response(template, data) 83 owner = conn.user.getId() 84 group = conn.getGroupFromContext().id 85 try: 86 link = Link.objects.get(url=url, owner=owner) 87 except Link.DoesNotExist: 88 link = Link(url=url, owner=owner, group=group) 89 link.save() 90 data['tinyurl'] = reverse('webpublic_tinyurl', args=[link.to_base62()]) 91 data['tinyurl'] = request.build_absolute_uri(data['tinyurl']) 92 return render_to_response(template, data)9396 conn = kwargs['conn'] 97 owner = conn.user.getId() 98 # Sanity check for "permissions" by using owner during lookup 99 link = link = get_object_or_404(Link, id=id, owner=owner) 100 link.delete() 101 return HttpResponseRedirect(reverse('webpublic_user_listing'))102105 conn = kwargs['conn'] 106 owner = conn.user.getId() 107 links = Link.objects.filter(owner=owner) 108 data = {'client': conn, 'links': links} 109 return render_to_response('webpublic/user_listing.html', data)110112 base_62 = base62.to_decimal(base_62) 113 link = get_object_or_404(Link, pk=base_62) 114 REQUEST = {'url': link.url, 115 'server': 1, 116 'username': settings.PUBLIC_USER, 117 'password': settings.PUBLIC_PASSWORD} 118 REQUEST = MergeDict(REQUEST, request.REQUEST) 119 dummy_request = DummyHttpRequest(REQUEST, request.session, request.method) 120 to_return = webclient_login(dummy_request) 121 conn = getBlitzConnection(dummy_request, useragent="OMERO.web") 122 conn.changeActiveGroup(link.group) 123 return to_return124
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Tue Oct 18 13:29:20 2011 | http://epydoc.sourceforge.net |