Список файлов шаблона пирамиды из представления

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

Очевидно, что если я знаю реальный путь, я могу просто использовать обычные инструменты Python. Но есть ли способ получить фактическое местоположение файла с синтаксисом some.package:templates/template.pt?

Я хочу получить список файлов шаблонов, скажем, some.package:templates/email/. Есть ли способ сделать это?


person Falmarri    schedule 24.03.2014    source источник


Ответы (1)


Чтобы перейти от спецификации актива с точками, вы можете использовать pyramid.path.AssetResolver в качестве документации., это выглядит так:

from pyramid.path import AssetResolver

a = AssetResolver()
resolver = a.resolve('myproject:templates/foo.pt')
print(resolver.abspath())
# -> /path/to/myproject/templates/foo.pt

В частности, это говорит о разрешении путей:

Если спецификация является абсолютным именем файла (например, /path/to/myproject/templates/foo.pt) или абсолютной спецификацией актива (например, myproject:templates/foo.pt), дескриптор актива возвращается без учета пакета, переданного конструктору этого класса.


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

person X-Istence    schedule 11.11.2014