未提供项目描述
项目描述
guillotina_evolution
提供evolutions/migrations的插件,用于在Guillotina容器中创建或更新对象。
安装
pip install guillotina_evolution
配置
在app_settings
中添加以下值
app_settings = {
"applications": [
"guillotina_evolution",
],
"commands": {
"g-evolve": "guillotina_evolution.commands.evolve.EvolveCommand",
},
配置您的应用插件,在安装时初始化guillotina_evolution
from guillotina.component import get_utility
from guillotina_evolution.interfaces import IEvolutionUtility
@configure.addon(name="app", title="Your guillotina app")
class ManageAddon(Addon):
@classmethod
async def install(cls, container, request):
utility = get_utility(IEvolutionUtility)
utility.install() # initialize current generation with the greatest registered generation
# ...
编写您的evolver
在您的guillotina应用中创建一个名为evolutions
的文件夹,其中包含以下文件
app/evolutions/__init__.py
from .r20190118 import * # noqa
# Don't forget to add all rXXXXXXXX.py!
app/evolutions/r20190118.py
from guillotina_evolution.utils import register_evolution
@register_evolution(1)
async def evolver(container):
async for item in container.async_items():
item.title = item.title + ' (Migrated)'
item.register()
更新您的应用中的includeme()
app/__init__.py
def includeme(root):
# ...
configure.scan("app.evolutions")
进化
运行guillotina命令g-evolve
以运行您的迁移。
g -c config.yaml g-evolve