--- ECHO_content/ECHO_collection.py 2010/10/11 13:15:00 1.309 +++ ECHO_content/ECHO_collection.py 2013/05/17 06:20:22 1.310.2.11 @@ -9,11 +9,7 @@ class ECHO_externalLink contains informa """ -try: - from reportlab.pdfgen import canvas - from reportlab.lib.pagesizes import A4 -except: - print "PDF generation will not work" + import urlparse import string @@ -40,6 +36,8 @@ from Globals import Persistent, package_ from Acquisition import Implicit from Products.ZCatalog.CatalogPathAwareness import CatalogAware from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon +import ECHO_helpers +from Acquisition import aq_parent try: from Products.MetaDataProvider.MetaDataClient import MetaDataClient except: @@ -49,14 +47,15 @@ import urllib2 import cgi import smtplib import time -from Ft.Xml.Domlette import NonvalidatingReader -from Ft.Xml.Domlette import PrettyPrint, Print -from Ft.Xml import EMPTY_NAMESPACE - -import Ft.Xml.XPath +#from Ft.Xml.Domlette import NonvalidatingReader +#from Ft.Xml.Domlette import PrettyPrint, Print +#from Ft.Xml import EMPTY_NAMESPACE +# +#import Ft.Xml.XPath import cStringIO import sys +import logging try: from psycopg import libpq @@ -82,11 +81,13 @@ except: pass from ECHO_movie import * -import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen +#import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen import xmlrpclib import logging +from ECHO_root import ECHO_root + #ersetzt logging.info def logger(txt,method,txt2): """logging""" @@ -543,6 +544,10 @@ class ECHO_link(ECHO_externalLink): {'label':'add links config','action':'ECHO_link_addLinksForm'}, ) + def getMDValueSimpleSearchField(self): + """returns value for simple search""" + return " ".join([self.getTitle(),self.getDescription()]) + def ECHO_link_addLinksForm(self): """Main configuration""" @@ -696,11 +701,54 @@ class ECHO_collection(CatalogAware, Fold meta_type='ECHO_collection' default_catalog='resourceCatalog' + rootMetaTypes = ['ECHO_root', 'ECHO_main', 'ECHO_nav'] + # viewClassificationList=viewClassificationListMaster displayTypes=displayTypes path="/mpiwg/online/permanent/shipbuilding" + def getSection(self, crumbs=None): + """returns the current section name""" + # use breadcrumbs if available + if crumbs is not None and len(crumbs) > 0: + return crumbs[0][2].getId() + + p = self + sec = None + # descend parents to the root (and remember the last id) + while p is not None and p.meta_type not in self.rootMetaTypes: + sec = p.getId() + p = aq_parent(p.context) + + return sec + + def getSubSection(self, crumbs=None): + """returns the current subsection name""" + # use breadcrumbs if available + if crumbs is not None and len(crumbs) > 1: + return crumbs[1][2].getId() + + p = self + sec = None + subsec = None + # descend parents to the root (and remember the last id) + while p is not None and p.meta_type not in self.rootMetaTypes: + subsec = sec + sec = p.getId() + p = aq_parent(p.context) + + return subsec + + + def getCrumb(self): + """returns breadcrumb for this object""" + return ECHO_helpers.getCrumb(self) + + def getHierCrumbs(self): + """returns a list of hierarchical breadcrumbs from self to the ECHO_root""" + return ECHO_helpers.getHierCrumbs(self) + def exportImportObjects_html(self,RESPONSE): """ImportObject""" @@ -876,6 +924,40 @@ class ECHO_collection(CatalogAware, Fold return ret+"" + def getExportAsJSON(self,REQUEST=None): + import json + ret = self.getExport() + + if REQUEST: + REQUEST.response.setHeader("Content-type", "text/json; charset=utf-8") + + return json.dumps(ret) + + def getExport(self,REQUEST=None): + + """JSON export collection content""" + import json + ret={} + #contents=self.ZopeFind(self,obj_metatypes=['ECHO_group','ECHO_resource','ECHO_collection']) + contents=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) + + ret['description']=self.getDescription(); + ret['title']=self.getTitle(); + ret['label']=self.getLabel(); + ret['content']=[] + ret['echo_path']=self.absolute_url().replace(self.echo_pages.absolute_url(),'') + + + for content in contents: + + ret['content'].append(content[1].getDRI(type="mpiwg")) + + return ret + + + + + def changeLabels(self): """change form""" @@ -1044,39 +1126,18 @@ class ECHO_collection(CatalogAware, Fold if RESPONSE is not None: RESPONSE.redirect('manage_main') - def changeViewerTemplateSetsForm(self): + + def changeViewerForm(self): """change the viewer template set""" - pt=zptFile(self, 'zpt/changeViewerTemplateSet') + pt=zptFile(self, 'zpt/changeECHOViewer') return pt() - - def getViewerTemplateSets(self,obj_ids=None,RESPONSE=None): - """Get the ViewerTemplateSet title for configuration""" - ret=[] - - try: - viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie. - - for viewerTemplateSet in viewerTemplateSets: - ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1])) - - return ret - - except: - return [('no ViewerTemplateSetfolders','')] - + def getTextToolsField(self,name,default=''): - """Lese viewerTemplateSet der Collection not implemented yet!""" + """Lese text tool field der Collection not implemented yet!""" return default - def isSelectedViewerTemplateSet(self,obj,id): - """is ausgewaehlt""" - - if self.REQUEST['viewerTemplateSet']==id: - return 1 - else: - return None def changeViewer(self,newViewer,REQUEST=None,RESPONSE=None): """changes all ressources to the newViewer""" @@ -1100,38 +1161,7 @@ class ECHO_collection(CatalogAware, Fold if RESPONSE is not None: RESPONSE.write("
Done