diff --git a/tasks.py b/tasks.py index 64000d77b0d59fd64c302e9173193259940a3da7..903e34b1431f5f34d60777f49b45fbef1c12ecef 100644 --- a/tasks.py +++ b/tasks.py @@ -143,11 +143,15 @@ def parse_protocol_async_inner(protocol, encoded_kwargs): db.session.commit() return # todos + old_todo_number_map = {} + for todo in protocol.todos: + old_todo_number_map[todo.description] = todo.get_id() protocol.delete_orphan_todos() db.session.commit() old_todos = list(protocol.todos) for todo in old_todos: protocol.todos.remove(todo) + print(old_todo_number_map) db.session.commit() tags = tree.get_tags() todo_tags = [tag for tag in tags if tag.name == "todo"] @@ -225,6 +229,12 @@ def parse_protocol_async_inner(protocol, encoded_kwargs): db.session.add(error) db.session.commit() return + if todo is None and field_id is None and what in old_todo_number_map: + todo = Todo(type_id=protocol.protocoltype.id, + who=who, description=what, state=field_state, + date=field_date, number=old_todo_number_map[what]) + db.session.add(todo) + db.session.commit() if todo is None: protocol_key = protocol.get_identifier() old_candidates = OldTodo.query.filter(