#NEWLINE# def load_from_json( json_data , item_db ) : #NEWLINE# #INDENT# if ( 'ref' in json_data ) : #NEWLINE# #INDENT# item = item_db [ json_data [ 'ref' ] ] #NEWLINE# return item #NEWLINE# #UNINDENT# item_type = json_data [ 'type' ] #NEWLINE# item_id = json_data [ 'id' ] #NEWLINE# if ( item_type == FOLDER ) : #NEWLINE# #INDENT# item = Folder ( ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( item_type == CONTEXT ) : #NEWLINE# #INDENT# item = Context ( ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( item_type == TASK ) : #NEWLINE# #INDENT# item = Task ( ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( item_type == PROJECT ) : #NEWLINE# #INDENT# item = Project ( ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# #UNINDENT# load_attrib ( item , 'id' , json_data , ( lambda x : x ) ) #NEWLINE# load_attrib ( item , 'link' , json_data , ( lambda x : x ) ) #NEWLINE# load_attrib ( item , 'status' , json_data , ( lambda x : x ) ) #NEWLINE# load_attrib ( item , 'name' , json_data , ( lambda x : x ) ) #NEWLINE# load_attrib ( item , 'date_completed' , json_data , ( lambda x : datetime . strptime ( x , TIME_FMT ) ) ) #NEWLINE# load_attrib ( item , 'date_to_start' , json_data , ( lambda x : datetime . strptime ( x , TIME_FMT ) ) ) #NEWLINE# load_attrib ( item , 'date_due' , item_type , ( lambda x : datetime . strptime ( x , TIME_FMT ) ) ) #NEWLINE# load_attrib ( item , 'flagged' , json_data , ( lambda x : x ) ) #NEWLINE# load_attrib ( item , 'next' , json_data , ( lambda x : x ) ) #NEWLINE# load_attrib ( item , 'note' , json_data , ( lambda x : JSONNote ( x ) ) ) #NEWLINE# load_attrib ( item , 'order' , json_data , ( lambda x : x ) ) #NEWLINE# for child_data in json_data [ 'children' ] : #NEWLINE# #INDENT# child = load_from_json ( child_data , item_db ) #NEWLINE# item . add_child ( child ) #NEWLINE# #UNINDENT# item_db [ item_id ] = item #NEWLINE# return item