Редактирование buildout.cfg в Plone из браузера - PullRequest
0 голосов
/ 13 сентября 2018

Я редактирую веб-сайт, используя CMS Plone 4. Экземпляр Plone, который я сейчас использую, размещен на сервере, к которому у меня нет доступа (т.е. я не могу FTP-сервер и редактировать файлы PHP).

Хотя у меня нет сервера, на котором размещен этот веб-сайт, я хотел бы получить доступ к файлу buildout.cfg. Есть ли способ отредактировать этот файл, просто войдя в систему на моем веб-сайте Plone, или мне нужны учетные данные для управления всем экземпляром сайта с помощью FTP?

При входе в систему я могу перейти на страницу под названием Настройка сайта (предоставляется скриншот). Могу ли я решить мою проблему с этой страницы?

Screenshot of the

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Теоретически это возможно, в приведенном ниже примере кода показан прототип с использованием просмотра в браузере, который при вызове:

  • Читает содержимое данной страницы
  • Записывает содержимое в buildout-config
  • Обновляет экземпляр

Практически:

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

import os
from Products.Five.browser import BrowserView


class View(BrowserView):

    def __call__(self):

        # Let's assume these paths exist:
        instance_path = '/path/to/instance'
        buildout_config_path = instance_path + 'buildout.cfg'
        page_path_in_site = 'front-page'

        # Read buildout-config of page in site:
        page = self.context[page_path_in_site]
        config_content = page.getText()

        # Write buildout-config to filesystem:
        with open(buildout_config_path, 'w') as fil:
            fil.write(page.getText())

        # Run buildout, so changes in config take effect:
        os.system(instance_path + 'buildout')

        # Restart server, so python- and zcml-files get
        # (re-)compiled, respectively loaded:
        os.system(instance_path + 'bin/instance restart')
0 голосов
/ 13 сентября 2018

Вы не можете.Файл buildout.cfg используется для установки / сборки вашего приложения.Итак, когда вы находитесь в настройке сайта, вы уже используете запущенное приложение, которое хотите перенастроить.

Вы отредактируете свой buildout.cfg, затем запустите ./bin/develop rb, чтобы восстановить его, затем вы будете (пере)запустите экземпляр вашего приложения.В этот момент, например, вы увидите новые надстройки, доступные для их активации, в разделе «Настройка сайта» / «Надстройки» (надстройки, которые вы добавили в разделы eggs / zcml / version вашего buildout.cfg).

...