# 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';">