- AcsdZdkZdklZdklZdklZ dkl Z  dk l Z l Z  dk Z  dkZ dkZdkZdkZdkTde fd YZ<e e>d ZCed ZdS( s= Classes for displaying, browsing and organizing the archive N(sClassSecurityInfo(sPageTemplateFile(sFolder(s SimpleItem(sInitializeClasss package_home(s*sOSAS_storeOnlinecstZdZdZeZhZhZdZ#ei dd$dZ -ddZ ;dZ rd Z d Zdd Zd Zdd ZddZ5dZRS(sCWebfrontend fr das Storagesystem liefert Browserumgebung sOSAS_StoreOnline__neucs||_dS(sinitialize a new instanceN(sidsself(sselfsid((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys__init__ssViews index_htmlcsq$%&t|do't|dSn>)ttiittddi |}*|SdS(scmain view either standard template zpt/storeOnline_index_html.zpt or storeOnline_index.html in treesstoreOnline_index.htmlszptsstoreOnline_index_html.zptN( shasattrsselfsgetattrsPageTemplateFilesosspathsjoins package_homesglobalss__of__spt(sselfspt((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys index_html$s 3scs-12tiitii|i|}4x_4tiitii|d o|djp |dj o5tii|d}q3W6|djp |djo 7t Sn9tii|dSdS(sfinde index_meta fuer diesen eventuell virtuellen Pfad @param path: optional, default ist "", Pfad auf das Object relativ zum rootFolderName @return: None falls kein index.meta existiert sonst Pfad auf das index.meta s index.metass/iN( sosspathsnormpathsjoinsselfsrootFolderNamesrealPathsexistsssplitsNone(sselfspathsrealPath((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys findIndexMeta-s'A c s{;?A|i|} B| o CtSnDtii| d}Etiitii |i |}Gt i i i| }J|id} Kx| DK]} L| id}M|oNti|di} n Pd} Q| id}R|oSti|di}n Ud}Wtiitii || |}X||joZ| iSnqW]|id}^x| D^]} _| id}`|oati|di} n cd} d| id}e|ofti|di}n hd}jtiitii || |}k||jom| iSnqWptSdS(sfragm xml zum path @param path: Pfad auf das Object relativ zum rootFolderName @return: den Teil von Index.meta der Informationen zu path enthaelt, None wenn error. isdirspathssnamesfileN(sselfs findIndexMetaspaths indexMetasNonesosssplitsrealPathsnormpathsjoinsrootFolderNamesxmlsdomsminidomsparsesgetElementsByTagNamesdirssdirspathess OSAS_helperssgetTexts childNodesspathXsnamessnames checkpathstoxmlsfiles( sselfspathsrealPathspathessnamesdoms checkpathsfilessnamess indexMetasdirsspathXsdir((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysfindEntryInIndexMeta;sH  '     '     'cs_rwxh}y|i|} z| o {|Sn|tii| d}}|i|d}~|o|dti jo|d}nti | }|i i | o|i | d|t ijo|i | dSntiii| }g} |id|id} x| D]}|id}|oti|di} n d} |id} | oti| di}n d}| |jo[|idjo d} n d } tii|| |}| df||(fileType,''), fileType ist hierbei OSAS_dir_archive falls Object ein directory und OSAS_file_archive falls das Object ein File ist,der zweite Eintrag des Tupels ist zur Zeit immer '', spaeter wird hier die Beschreibung gemaess Metadaten stehen, wie bei readObjectsFromPath. isisdirsfilespathsnamesOSAS_dir_archivesOSAS_file_archiveN(!sretsselfs findIndexMetaspaths indexMetasosssplitsrealPathsreplacessepsstatsstatss _v_metaFilesshas_keysST_MTIMEsxmlsdomsminidomsparsesdirssgetElementsByTagNamesdirspathess OSAS_helperssgetTexts childNodesspathXsnamessnamestagNamesfileTypesjoinsobject(sselfspathsrealPathspathessstatssnamesdomsobjectsretsfileTypesnamess indexMetasdirsspathXsdir((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysgetSubDirsFromIndexMetarsB   5        csD|i|}|oti||SndSdS(smetadaten zu path als html aus dem index.meta file zu path @param path: optional, default ist "", Pfad auf das Object relativ zum rootFolderName @return: metadata als html sN(sselfsfindEntryInIndexMetaspathsxmlInfoss OSAS_helperssgetMetaInfoFromXML(sselfspathsxmlInfos((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysgetMetaInfoFromIndexMetas  c stiitii|i|}|i} |i |idjo hSntii | o t Snti |}|ii|o|i|d|t ijo|i|dSnti|}h}xe|D]Z}tii||}ti|}|o || i|f|| (fileType,metadatum als String) iiN(sosspathsnormpathsjoinsselfsrootFolderNamesrealPathstestmdsmetaDatasfindsexistssNonesstatsstatss _v_fileSystemshas_keysST_MTIMEslistdirsdirsretsfilenamesobjects OSAS_helpersscheckOSASFileTypesfileTypesgetDisplayFieldsAsStr( sselfspathsrealPathsstatssobjectsretsfilenamesfileTypesdirsmetaData((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysreadObjectsFromPaths('   5   $csg}x|i|iddgddD]}||dijop|it |dddd}|di |}|di }d||f}|i|nq4W|SdS( s9teste ob fuer diesen Typ, viewer definiert sind und gibt einen entsprechenden Link zurueck, der das Object mit diesem Handler ausfuehrt. @param path: Pfad auf das Objekt @param type: Typ des Objektes @return: (string) html-Fragment, link der das Objekt mit diesem Handler anzeigt. s obj_metatypessOSAS_ViewerObject__neus search_subis ignorePathss#%sN(sretsselfsZopeFinds aq_parentsviewerstypes objectTypesspathsreplacesgetattrsprefixsurlstitlestextsstringsappend(sselfspathstypesurlsstringstextsviewersret((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys giveHandlerss % %c s|i|}| o h}n|i|}x@|iD]/} |i|  o|| || %sisOSAS_dir_archives%s (A)N(sselfsreadObjectsFromPathspathsobjectssgetSubDirsFromIndexMetasimskeysskeyshas_keyssortLowsrets objectSortedssortsobjects giveHandlersshandlersosssplitsstringsappend( sselfspathsstrings objectSortedshandlersobjectsretsobjectssimskeyssortLow((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys generateTrees0      #%#%5cstiitii|i|}|i}d} tii |}!d}"|tii |gg}$xx$t|dj o`&|d}'|djo'Pn)|i|tii |g*tii |}qW,x,|djo-||di|idjo!.|d||dd}n60|d|d||dd ||dd}2|d}qW3|Sd S( s&generates navigation bar for viewfilessiiiss/sN(sosspathsnormpathsjoinsselfsrootFolderNamespathTmps absolute_urlsURLsstringsdirnamestmppathsisbasenamespathesslensappendsfind(sselfspathTmpstmppathspathessstringsURLspathsi((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys path_to_links*'   "$!5cs&567ti||}:|SdS(sLese Metafile einN(s OSAS_helperss getMetaFilesselfspathstmp(sselfspathstmp((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys getMetaFile5s(s__name__s __module__s__doc__s meta_typesClassSecurityInfossecuritys _v_fileSystems _v_metaFiless__init__sdeclareProtecteds index_htmls findIndexMetasfindEntryInIndexMetasgetSubDirsFromIndexMetasgetMetaInfoFromIndexMetasreadObjectsFromPaths giveHandlerss generateTrees path_to_links getMetaFile(((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysOSAS_storeOnlines"       7 5 ' ,csG>?@ttiittddi|}A|SdS(s"interface for adding the OSAS_rootszptsaddStoreOnline.zptN( sPageTemplateFilesosspathsjoins package_homesglobalss__of__sselfspt(sselfspt((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysmanage_addOSAS_storeOnlineForm>s3csPCDEt|}F|i||G|tj oH|idndS(sadd the OSAS_roots manage_mainN(sOSAS_storeOnlinesidsnewObjsselfs _setObjectsRESPONSEsNonesredirect(sselfsidsRESPONSEsnewObj((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pysmanage_addOSAS_storeOnlineCs (s__doc__s OSAS_helperss AccessControlsClassSecurityInfos'Products.PageTemplates.PageTemplateFilesPageTemplateFiles OFS.FoldersFoldersOFS.SimpleItems SimpleItemsGlobalssInitializeClasss package_homeszLOGsossos.pathsstatsxml.dom.minidomsxmlstypessOSAS_storeOnlinesmanage_addOSAS_storeOnlineFormsNonesmanage_addOSAS_storeOnline(sxmlsstatsOSAS_storeOnlinesClassSecurityInfosInitializeClasss OSAS_helperss SimpleItemsmanage_addOSAS_storeOnlinesmanage_addOSAS_storeOnlineFormsPageTemplateFileszLOGsFoldersoss package_home((sK/usr/local/mpiwg/Zope_devel/lib/python/Products/OSA_system2/OSAS_browser.pys?s"        +