;ς ŒBCc@s dZdZdklZdklZlZlZlZl Z l Z dk l Z l Z lZdklZlZlZlZdklZlZdklZlZlZlZdklZlZlZlZl Z d k!lZd k"l#Z#l$Z$d fd „ƒYZ%d e%fd„ƒYZ&dS(sl Multilingual content base classes and helpers. $Id: I18NContent.py 12703 2005-10-04 15:36:16Z longsleep $ s$Revision: 1.11 $(s get_request(s aq_acquiresaq_basesaq_innersaq_chains aq_parentsImplicitAcquisitionWrapper(s_verifyActionPermissionss_checkPermissions getToolByName(sViewsManagePropertiessListFolderContentssModifyPortalContent(sAddPortalFolderssAddPortalContent(s PermissionssgetSecurityManagersClassSecurityInfos Unauthorized(sLOGsERRORsINFOsPROBLEMsDEBUG(s Unauthorized(s getLangPrefss CheckValiditysI18NContentBasecBsttZdZdd„Zd„Zd„Zd„Zd„Zdd„Zdd„Z d „Z d „Z d d „Z RS( s% base class for multilingual content icCse||_t|dƒ o tƒ}n||_|id|ƒiƒ}|i ƒt |ƒ|_ dS(Nssetsverifypermission( slayersselfshasattrsREQUESTs get_requestsgetFilteredLanguageMapsverifypermissionskeyssavailable_languagessgetLanguagesFromRequestslists languages(sselfslayersREQUESTsverifypermissionsavailable_languages((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys__init__)s    cCs |iSdS(N(sselfslayer(sself((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysLayer3scCs |iSdS(N(sselfs languages(sself((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys Languages6scCstƒ}|iidtƒ}|idtƒ}| o:t|i ƒdtƒ}|o|ii d|ƒqrn|i ƒ}y|i ƒi ii}Wn t}nXt|ƒ}|o|g|}n|o ||jo|g|}n|o||g}n|SdS(s2 return a list of languages matching this request sI18N_CONTENT_LANGUAGEsclslocal_default_languageN(s get_requestsREQUESTscookiessgetsNoneslanguages language_oncesgetattrsselfsLayerssets"getLanguagesFromTranslationServicesacceptsportal_propertiesssite_propertiessdefault_languageslists languages(sselfs language_onceslanguagesdefault_languagesREQUESTsaccepts languages((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysgetLanguagesFromRequest9s*    cCs7t|iƒ}t|tƒot|ƒ}n|SdS(N(s getLangPrefssselfsREQUESTs languagess isinstancestupleslist(sselfs languages((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys"getLanguagesFromTranslationServiceUscCs t‚dS(N(sNotImplementedError(sselfsverifypermission((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys getObject[scCs t‚dS(N(sNotImplementedError(sselfsverifypermission((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysgetFilteredLanguageMapbscCsLtƒ}|id|ƒ|iid|ƒ|iiddƒ||_dS(NsI18N_CONTENT_SERVED_LANGUAGEsContent-LanguagesVarys*(s get_requestsREQUESTssetslangsRESPONSEs setHeadersselfsserved_language(sselfslangsREQUEST((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys setServedfs  cCsy |iSWn tSnXdS(N(sselfsserved_languagesNone(sself((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysServedns icCs t‚dS(N(sNotImplementedError(sselfsboth((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysexistingLanguagesrs( s__name__s __module__s__doc__s__init__sLayers LanguagessgetLanguagesFromRequests"getLanguagesFromTranslationServices getObjectsgetFilteredLanguageMaps setServedsServedsexistingLanguages(((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysI18NContentBase&s         sI18NContentLayercBs2tZdZdd„Zdd„Zdd„ZRS(sT zodb layer like content .. using seperate objects to store the different languages icCs’f}f}y|iƒiiƒiƒ}Wn%tj o|iƒi ƒ}nXx.|D]&\}}||f}||f}qZW| o|Sn ||fSdS(N( sexisting_languagessexisting_languages_longsselfsLayersportal_languagessgetAvailableLanguagessitemss full_listsAttributeErrorsavailableLanguagesscodesnamesboth(sselfsbothscodesnamesexisting_languages_longs full_listsexisting_languages((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysexistingLanguages|s  ic Csο|iƒ}y|iddƒ\}}Wnf}}nXt|ƒ}h}|iƒg} t ||ƒ}xx|i ƒD]j} |i| ƒoTt|| ƒ}tt|ƒp| o)|i| ƒ}|ih| |<ƒqγqyqyW|SdS(Nsbothi(sselfsLayerslayersexistingLanguagessavailable_languagessavailable_languages_longslistsobjssContainmentContentTypespecs CheckValidityscheckers objectIdssidschecksgetattrsobs_checkPermissionsViewsverifypermissionsnamesupdate( sselfsverifypermissionsavailable_languages_longsnameslayersobscheckersavailable_languagessobjssidspec((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysgetFilteredLanguageMapŒs"   "c CsV|iƒ}t|ƒ}t|dtƒ}t|ddƒ}t} x¦|i ƒD]˜}t||tƒtj oyt||ƒ}|ott|ƒ}nd}|o?| o||i ƒdjo |} Pqγ|i|ƒ|SqηqOqOW| o| otSnt|id|ƒiƒƒotSn|ott|ƒ o td‚ntSdS(Nsportal_languagessallow_content_language_fallbackiisverifypermissions)you are not allowed to access this object(sselfsLayerslayersaq_basesbases getToolByNamesNones language_toolsgetattrsfallbacks fallenbacks Languagesslangsobsverifypermissions_checkPermissionsViewsalloweds setServedslensgetFilteredLanguageMapskeyssModifyPortalContents Unauthorized( sselfsverifypermissionslangslayers language_toolsobsbasesallowedsfallbacks fallenback((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys getObject¬s2     (s__name__s __module__s__doc__sexistingLanguagessgetFilteredLanguageMaps getObject(((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pysI18NContentLayerys   N('s__doc__s __version__sGlobalss get_requests Acquisitions aq_acquiresaq_basesaq_innersaq_chains aq_parentsImplicitAcquisitionWrappersProducts.CMFCore.utilss_verifyActionPermissionss_checkPermissions getToolByNames#Products.CMFCore.CMFCorePermissionssViewsManagePropertiessListFolderContentssModifyPortalContentsAddPortalFolderssAddPortalContents AccessControls PermissionssgetSecurityManagersClassSecurityInfos UnauthorizedszLOGsLOGsERRORsINFOsPROBLEMsDEBUGs zExceptionssutilss getLangPrefss CheckValiditysI18NContentBasesI18NContentLayer(sLOGs aq_acquires aq_parents getLangPrefssaq_chains getToolByNames_verifyActionPermissionss_checkPermissionsI18NContentBasesImplicitAcquisitionWrappersListFolderContentss __version__s Permissionssaq_bases UnauthorizedsClassSecurityInfosModifyPortalContentsAddPortalContents CheckValiditysERRORsDEBUGsPROBLEMsViewsINFOsAddPortalFolderssgetSecurityManagersI18NContentLayers get_requestsManagePropertiessaq_inner((sC/mnt/gmirror/ports/www/zope-i18nlayer/work/I18NLayer/I18NContent.pys?s +% S