statik icon indicating copy to clipboard operation
statik copied to clipboard

Fix sorting error on self-referencing fields

Open mutr opened this issue 5 years ago • 0 comments

There is a chance that models will be sorted wrong if self-referencing model coexists with foreign models.

How to reproduce:

  1. Open project test.tar.gz
  2. Run statik --watch --no-browser -v several times.
2019-12-03 05:41:47,299 statik.database DEBUG   Unsorted models: ['File', 'Info', 'Tag']                                                                                                    
2019-12-03 05:41:47,300 statik.database DEBUG   Sorting round: 1 (['File', 'Info', 'Tag'])                                                                                                  
2019-12-03 05:41:47,300 statik.database DEBUG   Sorting round: 2 (['Tag', 'File', 'Info'])                                                 
2019-12-03 05:41:47,301 statik.database DEBUG   Sorted models: ['Tag', 'File', 'Info'] (2 rounds)                   
2019-12-03 05:41:47,301 statik.database DEBUG   Loading data for model: Tag                                                                                                                 
2019-12-03 05:41:47,303 statik.database DEBUG   Loading 3 instance(s) for model: Tag                                                                  
2019-12-03 05:41:47,303 statik.database DEBUG   StatikDatabaseInstance(model=Tag, pk=0, value=tag1)                                  
2019-12-03 05:41:47,313 statik.database DEBUG   StatikDatabaseInstance(model=Tag, pk=1, value=tag2)                                                   
2019-12-03 05:41:47,314 statik.database DEBUG   StatikDatabaseInstance(model=Tag, pk=2, value=tag3)                            
2019-12-03 05:41:47,314 statik.database DEBUG   Loading 0 instance(s) for model: Tag                                                                  
2019-12-03 05:41:47,317 statik.database DEBUG   Loading data for model: File                                                         
2019-12-03 05:41:47,324 statik.database DEBUG   Loading 4 instance(s) for model: File                                                                 
2019-12-03 05:41:47,324 statik.database DEBUG   Attempting to look up primary keys for ManyToMany field relationship: ['0', '1', '2']
2019-12-03 05:41:47,326 statik.database WARNING 0 not found in <class 'statik.database.Info'>                                                  
2019-12-03 05:41:47,327 statik.database WARNING 1 not found in <class 'statik.database.Info'>                                                                                               
2019-12-03 05:41:47,335 statik.database WARNING 2 not found in <class 'statik.database.Info'>```

Expected behaviour: `Sorted models: ['Info', 'Tag', 'File']`

mutr avatar Dec 03 '19 13:12 mutr