ricecooker icon indicating copy to clipboard operation
ricecooker copied to clipboard

Adding the same node object as a child to multiple topics results in multiple nodes with the same node_id

Open rtibbles opened this issue 3 years ago • 0 comments

  • ricecooker version: 0.7.0b2
  • Python version: Python 3.9
  • Operating System: Ubuntu Linux

Observed Behaviour

If attempting to repeat a node in multiple places in a topic tree, it seems natural to be able to add it as the child of multiple TopicNodes. Indeed, ricecooker allows you to do this, and even makes the topic tree in this format appear on Studio.

However, because the nodes objects are shared between the two locations, the node_id is recalculated for the last occurring location, but all occurrences of the node then share that node_id.

This means that the topic tree appears to be properly formatted on Studio, where each node has a distinct primary key, but once published to Kolibri where the node_id is the primary key, the node will only appear in the last location in the tree, as that will be the last one written to the SQLite database during publishing.

Expected Behaviour

If this is allowed, then ricecooker should internally clone nodes that are added in multiple locations in the tree.

Otherwise, it should give an error when this happens and exit.

rtibbles avatar Jan 28 '22 23:01 rtibbles