from patch.include import *


@app_context(commit=True)
def patch():
    g.disable_raise_lazyload = True
    cards = models.CmfCard.list(
        filter=[
            ["status", "==", "open"],
            ["obj_id", "!=", None],
            ["obj_fields", "==", None],
        ],
        fields=["*"],
    )

    for card in cards:
        if not card.obj_id:
            continue
        obj = card.obj_id.model.get(card.obj_id, fields=["**", "executors", "spectators"])
        if not obj:
            card.delete()
            continue
        card.update_obj_fields(obj)
        card.save(only_data=True)


if __name__ == "__main__":
    patch()
