# HG changeset patch
# User casties
# Date 1346178241 -7200
# Node ID 2928037f9a75a30412708fe7f83048a296721a89
# Parent fc34eff7b52d8c1353af30e476406e67672fa364
ASSIGNED - # 249: Annotations shared in groups
https://it-dev.mpiwg-berlin.mpg.de/tracs/mpdl-project-software/ticket/249
diff -r fc34eff7b52d -r 2928037f9a75 SrvTxtUtils.py
--- a/SrvTxtUtils.py Wed Aug 22 16:51:21 2012 +0200
+++ b/SrvTxtUtils.py Tue Aug 28 20:24:01 2012 +0200
@@ -11,7 +11,7 @@
import logging
-srvTxtUtilsVersion = "1.4.1"
+srvTxtUtilsVersion = "1.5"
def getInt(number, default=0):
"""returns always an int (0 in case of problems)"""
@@ -37,7 +37,7 @@
except:
return s.decode('latin-1')
else:
- return unicode(s)
+ return s
def utf8ify(s):
"""encode unicode object or string into byte string in utf-8 representation.
@@ -47,7 +47,7 @@
if isinstance(s, str):
return s
else:
- return unicode(s).encode('utf-8')
+ return s.encode('utf-8')
def getText(node, recursive=0):
"""returns all text content of a node and its subnodes"""
@@ -75,7 +75,7 @@
-def getHttpData(url, data=None, num_tries=3, timeout=10):
+def getHttpData(url, data=None, num_tries=3, timeout=10, noExceptions=False):
"""returns result from url+data HTTP request"""
# we do GET (by appending data to url)
if isinstance(data, str) or isinstance(data, unicode):
@@ -116,6 +116,9 @@
response.close()
return data
+ if noExceptions:
+ return None
+
raise IOError("ERROR fetching HTTP data from %s: %s"%(url,errmsg))
#return None
diff -r fc34eff7b52d -r 2928037f9a75 documentViewer.py
--- a/documentViewer.py Wed Aug 22 16:51:21 2012 +0200
+++ b/documentViewer.py Tue Aug 28 20:24:01 2012 +0200
@@ -126,8 +126,8 @@
viewer_images = PageTemplateFile('zpt/viewer_images', globals())
viewer_index = PageTemplateFile('zpt/viewer_index', globals())
viewer_thumbs = PageTemplateFile('zpt/viewer_thumbs', globals())
- # available layer types
- builtinLayers = {'text': ['dict','search','gis','annotator'],
+ # available layer types (annotator not default)
+ builtinLayers = {'text': ['dict','search','gis'],
'xml': None, 'images': None, 'index': None}
availableLayers = builtinLayers;
# layer templates
@@ -316,18 +316,6 @@
# and execute with parameters
return pt(docinfo=docinfo, pageinfo=pageinfo)
- #WTF?
- def generateMarks(self,mk):
- ret=""
- if mk is None:
- return ""
- if not isinstance(mk, list):
- mk=[mk]
- for m in mk:
- ret+="mk=%s"%m
- return ret
-
-
def getAvailableLayers(self):
"""returns dict with list of available layers per viewMode"""
return self.availableLayers
@@ -985,6 +973,22 @@
return batch
+ def getAnnotatorGroupsForUser(self, user, annotationServerUrl="http://tuxserve03.mpiwg-berlin.mpg.de/AnnotationManager"):
+ """returns list of groups {name:*, id:*} on the annotation server for the user"""
+ groups = []
+ groupsUrl = "%s/annotator/groups?user=%s"%(annotationServerUrl,user)
+ data = getHttpData(url=groupsUrl, noExceptions=True)
+ if data:
+ res = json.loads(data)
+ rows = res.get('rows', None)
+ if rows is None:
+ return groups
+ for r in rows:
+ groups.append({'id': r.get('id', None), 'name': r.get('name', None), 'uri': r.get('uri', None)})
+
+ return groups
+
+
security.declareProtected('View management screens','changeDocumentViewerForm')
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
diff -r fc34eff7b52d -r 2928037f9a75 zpt/layer_text_annotator.zpt
--- a/zpt/layer_text_annotator.zpt Wed Aug 22 16:51:21 2012 +0200
+++ b/zpt/layer_text_annotator.zpt Tue Aug 28 20:24:01 2012 +0200
@@ -33,8 +33,11 @@
tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/filter.js"> -->
+ tal:define="annUrl python:'%s?url=%s&pn=%s'%(rootUrl,docinfo['url'],pageinfo['pn']);
+ global annUser python:here.getAuthenticatedUser(anon='anonymous');
+ global annGroup python:request.get('annotator_group', None);
+ permUser python:test(annGroup, 'group:%s'%annGroup, annUser);"
+ tal:content="structure string:var annotatorPageUrl='$annUrl'; var annotatorUser='$annUser'; var permissionUser='$permUser';">