Чем заменить курдок

Как я могу заменить текущий документ в приложении сервера боке?

У меня есть предыдущий документ, сохраненный как json_string. Если я сделаю

set_curdoc(Document.from_json_string(json_string))

кажется, что это правильно изменяет curdoc(), однако новый документ не отображается в браузере.


person Seb    schedule 29.09.2017    source источник


Ответы (1)


Я нашел обходной путь, в других местах предлагается обновить дочерние элементы существующего макета вместо обновления всего curdoc().

Я сделал это, но мне пришлось немного расширить документ, сохраненный в строке json.

Вместо этого мне пришлось переключить атрибут document всех моделей из импортированного документа на curdoc() (иначе он жалуется, что модели принадлежат другому документу)

предполагая, что документ, который я импортирую, и текущий документ имеют только один корень:

new_doc = Document.from_json_string(json_string)

new_grid_models = collect_models(new_doc.roots[0])

for elem in new_grid_models:
    try:
        elem.document = curdoc()
    except AttributeError:
        elem._document = curdoc()

new_children = new_doc.roots[0].children
del new_doc

grid.children = new_children

После этого обратные вызовы Python необходимо повторно применить к соответствующим импортированным моделям.

Я разместил пример приложения здесь: сохраните_и_загрузите приложение на Bitbucket

person Seb    schedule 29.09.2017