우리는 결국 Plone (4) 사이트가 많은 Zope 서버를 운영하고 있습니다. 이제는 확장 제품 업데이트가 제공되며 프로필 설정의 변경 사항을 픽업하기 위해 다시 설치해야합니다 (예 : 새로운 콘텐츠 유형Plone 사이트 외부에서 portal_quickinstaller.reinstallProducts 양식을 어떻게 트리거합니까?
수동으로, 이것은 모든 Plone 사이트의 portal_quickinstaller
을 수동으로 클릭하고 업데이트를 누릅니다. 수십 개의 사이트에 대해 이야기하는 경우 이는 그리 적절하지 않습니다. 따라서이 작업을 자동화하려고합니다. 실제로 내가 대신 하나의 플론 (Plone) 인스턴스의 긴 목록을 가지고, 나는 다시 설치 할 수 있습니다; 단순화
a = context.restrictedTraverse('/')
p = a['Plone']
print p.getSiteManager()
qi = p.restrictedTraverse('portal_quickinstaller')
print qi
qi.reinstallProducts('LinguaPlone')
(: 기본적으로 지금까지, 나는 조프 루트에서 스크립트 (파이썬)로 다음과 같은 생활을 제품의 긴 목록)이 다음과 같이 실패 :. 내 디버깅 시도에서
Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 613, in uninstallProducts
Module Products.CMFQuickInstallerTool.InstalledProduct, line 272, in uninstall
Module Products.CMFQuickInstallerTool.InstalledProduct, line 351, in _cascadeRemove
AttributeError: 'BaseGlobalComponents' object has no attribute 'objectItems'
는 지금까지 BaseGlobalComponents
는 조프 SiteManager는 zope.component.getSiteManager
에 의해 반환됩니다. quickinstaller가 올바른 Planner를 구입하도록 유도하려면 어떻게해야합니까?
또는 설치를 자동화하기 위해 제품을 재설치하는 것이 어떨까요? (ETA : 이것은 당신이 자동 cronjob으로하는 일이 아니라는 것을 알고 있습니다. 그러나 내부 개발 제품의 업데이트는 피할 수 없습니다.)
감사합니다. 찾고 있던 마법 호출 일 수도 있습니다. 아침에 시도해 보겠습니다. 이 제품을 사용할 많은 제품에 대해 어느 정도의 제어권을 가지고 있기 때문에 문제는 적어도 학습 경험 일 것입니다. ;) –