from patch.include import *


@app_context(commit=True)
def default_deadline_shift():
    activities = models.CmfActivity.list(filter=["default_deadline_shift", "!=", None])
    activities_ids = [i.id.value for i in activities]

    tasks = models.CmfTask.list(
        filter=[
            ["activity_id", "IN", activities_ids],
            ["deadline", "==", None],
            ["cache_status_type", "!=", "closed"],
        ],
        fields=[
            "deadline",
            "workflow.default_deadline_shift",
            "project",
            "status.card_name",
            "cmf_author",
            "cmf_owner",
            "waiting_for",
            "lists",
            "period_interval",
            "cache_status_type",
            "responsible",
            "cmf_created_at",
            "cmf_modified_at",
        ],
    )

    for i, task in enumerate(tasks):
        print("#" + str(i), "processing", task.id.value, end="... ")
        task.activity.is_changed = True
        task._calc_deadline()
        if task.deadline.is_changed:
            print("deadline is changed")
        else:
            print("deadline is NOT changed")
        task.save(only_data=True)

    print("Done", len(tasks))


if __name__ == "__main__":
    default_deadline_shift()
