@@ -391,9 +391,16 @@ def empty_node(cls):
391391 def default_node (cls ):
392392 with tmp_to_org (Organization .default ()):
393393 defaults = {'value' : cls .default_value }
394- obj , created = cls .objects .get_or_create (
395- defaults = defaults , key = cls .default_key ,
396- )
394+ try :
395+ obj , created = cls .objects .get_or_create (
396+ defaults = defaults , key = cls .default_key ,
397+ )
398+ except IntegrityError as e :
399+ logger .error ("Create default node failed: {}" .format (e ))
400+ cls .modify_other_org_root_node_key ()
401+ obj , created = cls .objects .get_or_create (
402+ defaults = defaults , key = cls .default_key ,
403+ )
397404 return obj
398405
399406 @classmethod
@@ -407,12 +414,7 @@ def favorite_node(cls):
407414
408415 @classmethod
409416 def initial_some_nodes (cls ):
410- try :
411- cls .default_node ()
412- except IntegrityError as e :
413- logger .error ("Create default node failed: {}" .format (e ))
414- cls .modify_other_org_root_node_key ()
415- cls .default_node ()
417+ cls .default_node ()
416418 cls .empty_node ()
417419 cls .ungrouped_node ()
418420 cls .favorite_node ()
@@ -424,20 +426,22 @@ def modify_other_org_root_node_key(cls):
424426 因为在其他组织下存在 default 节点,故在 DEFAULT 组织下 get 不到 create 失败
425427 """
426428 logger .info ("Modify other org root node key" )
427- with transaction . atomic ():
428- with tmp_to_org (Organization .root ()):
429- node = cls .objects .filter (key = '1' ).first ()
430- if not node :
429+
430+ with tmp_to_org (Organization .root ()):
431+ node_key1 = cls .objects .filter (key = '1' ).first ()
432+ if not node_key1 :
431433 logger .info ("Not found node that `key` = 1" )
432434 return
433- if not node .org .is_real ():
435+ if not node_key1 .org .is_real ():
434436 logger .info ("Org is not real for node that `key` = 1" )
435437 return
436- with tmp_to_org (node .org ):
438+
439+ with transaction .atomic ():
440+ with tmp_to_org (node_key1 .org ):
441+ org_root_node_new_key = cls .get_next_org_root_node_key ()
437442 for n in cls .objects .all ():
438443 old_key = n .key
439444 key_list = n .key .split (':' )
440- org_root_node_new_key = cls .get_next_org_root_node_key ()
441445 key_list [0 ] = org_root_node_new_key
442446 new_key = ':' .join (key_list )
443447 n .key = new_key
0 commit comments