Zope внешний файл или каталог статических ресурсов - PullRequest
0 голосов
/ 06 ноября 2018

Я интегрировал приложение JavaScript, созданное с помощью веб-пакета, в экземпляр Zope 2.13.26. Я добавил файлы вручную, но теперь я хочу связать папку приложения в Zope с папкой / public, используемой webpack в файловой системе.

Причина этого заключается в том, что всякий раз, когда я повторно внедряю приложение с веб-пакетом, все 89 файлов JS и CSS воссоздаются, что делает нецелесообразным обновление приложения в Zope.

В некоторых старых Zopes, которые у меня все еще есть, например, 2.10, можно было бы использовать старый продукт ExternalFile для доступа к каталогу в файловой системе, но в более поздних версиях Zope отсутствуют интерфейсы в стиле Zope 2, поэтому я попытался адаптироваться продукт ExternalFile, изменив IExternalFile.py с:

from Interface import Base

до:

from zope.interface import Interface

, что позволило запустить Zope, но я все еще не могу добавить ExternalFile. Я получаю эту ошибку:

Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PageTemplates.PageTemplateFile, line 130, in _exec
  Module Products.PageTemplates.PageTemplate, line 87, in pt_render
  Module zope.pagetemplate.pagetemplate, line 132, in pt_render
  Module five.pt.engine, line 98, in __call__
  Module z3c.pt.pagetemplate, line 163, in render
  Module chameleon.zpt.template, line 261, in render
  Module chameleon.template, line 191, in render
  Module chameleon.template, line 171, in render
  Module a92620f1f1dd7213a9d78f8af1772eb6.py, line 383, in render
  Module five.pt.expressions, line 135, in __call__
  Module five.pt.expressions, line 126, in traverse
  Module zope.traversing.adapters, line 136, in traversePathElement
   - __traceback_info__: (<App.ProductContext.__FactoryDispatcher__ object at 0x7f3b5e4b8290>, 'gethostname')
  Module zope.traversing.adapters, line 50, in traverse
   - __traceback_info__: (<App.ProductContext.__FactoryDispatcher__ object at 0x7f3b5e4b8290>, 'gethostname', ())
LocationError: (<App.ProductContext.__FactoryDispatcher__ object at 0x7f3b5e4b8290>, 'gethostname')

 - Expression: "container/gethostname"
 - Filename:   create
 - Location:   (line 37: col 20)
 - Arguments:  repeat: {...} (0)
               template: <ImplicitAcquisitionWrapper create at 0x7f3b605a9be0>
               modules: <instance - at 0x7f3b677e3098>
               here: <ImplicitAcquisitionWrapper - at 0x7f3b605a9140>
               user: <ImplicitAcquisitionWrapper - at 0x7f3b605a93c0>
               nothing: <NoneType - at 0x8f5320>
               container: <ImplicitAcquisitionWrapper - at 0x7f3b605a9140>
               basedir: 
               default: <object - at 0x7f3b6f875540>
               request: <instance - at 0x7f3b5fa20b48>
               wrapped_repeat: <SafeMapping - at 0x7f3b5fb1f2b8>
               loop: {...} (0)
               context: <ImplicitAcquisitionWrapper - at 0x7f3b605a9140>
               translate: <function translate at 0x7f3b5d81bcf8>
               root: <ImplicitAcquisitionWrapper Zope at 0x7f3b605a9640>
               options: {...} (1)
               target_language: <NoneType - at 0x8f5320>

Я не понимаю ошибки и не знаю, можно ли вообще заставить этот подход работать.

Я также искал в Plone "статический каталог ресурсов", как это сделать, но я не вижу, где зарегистрировать каталог. Мой index_html представляет собой обычный файл HTML (не шаблон страницы), и формат ++ resource ++ может быть проблемой, поскольку основной файл JS вызывает другие файлы, которые должны находиться в стандартных местоположениях.

В противном случае приложение работает, и я хотел бы добавить некоторые современные функциональные возможности для этого старого сайта. Любые решения приветствуются!

...