def grapher(): graph = Graph('foo2') def cleanup(): #@IgnorePep8 graph._db.shutdown() import shutil shutil.rmtree('foo2') graph.on_abort(cleanup) with graph.transaction(): graph.register(Tag) graph.register(Question) graph.register(Pro) graph.register(Con) graph.register(Idea) graph.nodes.w.create_index('roots') Question.referrer(user=1) Idea.referrer(user=1) Pro.referrer(user=1) Con.referrer(user=1) Tag.referrer(user=1) tag_1 = Tag.nodes.create(_status=1, text='wicked problem', user=1) tag_1.index_under('tags', 'name', 'wicked problem') tag_2 = Tag.nodes.create(text='avoid', user=1, _status=1) tag_2.index_under('tags', 'name', 'avoid') root = tag_2.n.root() root.data.public.text = 'This is the root' root.save() question_0 = Question.anchorer(user=1) question_1 = Question( _status=1, down=0, text='How do you avoid the wicked problem?', up=0, user=1, ) question_1.save() question_1.weigh_anchor(user=1) question_1.index_under('questions', 'tag', 'wicked problem') tag_1.link('TAGGED', question_1) question_1.index_under('questions', 'tag', 'avoid') tag_2.link('TAGGED', question_1) question_1.index_under('questions', 'prime', True) question_2 = Question( _status=1, down=0, text="How do you even know it's a wicked problem?", up=0, user=1, ) question_2.save() question_1.questions.add(question_2, user=1) idea_2 = question_2.ideas.create( _status=1, down=0, text="You are confused", up=0, user=1, link_props=dict(user=1), ) pro_1 = idea_2.pros.create( _status=1, down=0, text="I'd certainly feel confused", up=0, user=1, link_props=dict(user=1), ) pro_1.up = 6 pro_1.text = "I'd certainly really feel confused" pro_1.user = 2 pro_1.save() con_1 = idea_2.cons.create( _status=1, down=0, text="I don't feel confused", up=0, user=1, link_props=dict(user=1), ) con_1.save() idea_3 = question_2.ideas.create( _status=1, down=0, text="You are flummoxed", up=0, user=1, link_props=dict(user=1), ) question_3 = idea_3.questions.create( _status=1, down=0, text="Isn't that the same as confusion?", up=0, user=1, link_props=dict(user=1), ) idea_4 = question_3.ideas.create( _status=1, down=0, text="No", up=0, user=1, link_props=dict(user=1), ) idea_4.text = 'No, Really' idea_4.save() idea_5 = question_3.ideas.create( _status=1, down=0, text='Yes, but faster!', up=0, user=1, link_props=dict(user=1), ) con_3 = idea_5.cons.create( _status=1, down=0, text="Spans both positions", up=0, user=1, link_props=dict(user=1), ) con_3.user = 2 con_3.save() idea_6 = question_2.ideas.create( _status=1, down=0, text="You are surrounded by hellfire", up=0, user=1, link_props=dict(user=1), ) question_4 = idea_6.questions.create( _status=1, down=0, text="Is there no appeal from hellfire?", up=0, user=1, link_props=dict(user=1), ) idea_7 = question_4.ideas.create( _status=1, down=0, text="You better hope there's an appeal", up=0, user=1, link_props=dict(user=1), ) idea_1 = question_1.ideas.create( _status=1, down=0, text='DUCK!', up=0, user=1, link_props=dict(user=1), ) question_5 = idea_7.questions.create( _status=1, down=0, text="Isn't that a simple problem?", up=0, user=1, link_props=dict(user=1), ) question_5.up = 15 question_5.save() pro_2 = idea_1.pros.create( _status=1, down=0, text="It's simple", up=0, user=1, link_props=dict(user=1), ) pro_4 = pro_2.fork() pro_4.save() pro_2.user = pro_4.user pro_2.save() pro_3 = idea_1.pros.create( _status=1, down=0, text='It avoids wicked problems shaped like projectiles', up=0, user=1, link_props=dict(user=1), ) pro_3.down = 1 pro_3.save() con_4 = idea_1.cons.create( _status=1, down=0, text="It may not actually avoid the problem", up=0, user=1, link_props=dict(user=1), ) con_4.up = 1 con_4.save() con_5 = idea_1.cons.create( _status=1, _versions=0, down=0, text='Harder to do while asleep', up=0, user=1, link_props=dict(user=1), ) con_5.text = 'Harder to do while asleep with your eyes closed' con_5.save() con_5.text = 'Much harder to do while asleep with your eyes closed' con_5.save() pro_9 = idea_1.pros.create( _status=1, down=0, text='It avoids wicked problems shaped like projectiles', up=0, user=1, link_props=dict(user=1), ) pro_9.delete() try: # questions ins = question_1.nodes.ins assert ins[3] == idea_1 assert ins[2] == question_2 assert ins[1] == question_0.anchor assert ins[0] == question_0.reference outs = question_1.nodes.outs questions = question_1.questions link_outs = question_1.links.outs assert link_outs[3].kind == 'IDEA_ABOUT' assert link_outs[3] == Idea.links.get(link_outs[3].id) assert link_outs[2].kind == 'QUESTION_ABOUT' assert link_outs[1].kind == 'QUESTION_ROOTED_IN' assert link_outs[0].kind == 'QUESTION_NODE_OF' link_ins = question_1.links.ins ideas = question_1.ideas tags = question_1.tags assert question_1.data.private._status == 1 assert question_1.down == 0 assert question_1.text == 'How do you avoid the wicked problem?' assert question_1.up == 0 assert question_1.user == 1 assert question_2.data.private._status == 1 assert question_2.down == 0 assert question_2.text == escape( "How do you even know it's a wicked problem?" ) assert question_2.up == 0 assert question_2.user == 1 assert question_3.data.private._status == 1 assert question_3.down == 0 assert question_3.text == escape("Isn't that the same as confusion?") assert question_3.up == 0 assert question_3.user == 1 assert question_4.data.private._status == 1 assert question_4.down == 0 assert question_4.text == escape("Is there no appeal from hellfire?") assert question_4.up == 0 assert question_4.user == 1 assert question_5.data.private._status == 1 assert question_5.down == 0 assert question_5.up == 15 assert question_5.text == escape("Isn't that a simple problem?") assert question_5.user == 1 # ideas assert idea_1.data.private._status == 1 assert idea_1.down == 0 assert idea_1.text == 'DUCK!' assert idea_1.up == 0 assert idea_1.user == 1 assert idea_2.data.private._status == 1 assert idea_2.down == 0 assert idea_2.text == "You are confused" assert idea_2.up == 0 assert idea_2.user == 1 assert idea_3.data.private._status == 1 assert idea_3.down == 0 assert idea_3.text == "You are flummoxed" assert idea_3.up == 0 assert idea_3.user == 1 assert idea_4.data.private._status == 1 assert idea_4.down == 0 assert idea_4.text == 'No, Really' assert idea_4.up == 0 assert idea_4.user == 1 assert idea_5.data.private._status == 1 assert idea_5.down == 0 assert idea_5.text == 'Yes, but faster!' assert idea_5.up == 0 assert idea_5.user == 1 assert idea_6.data.private._status == 1 assert idea_6.down == 0 assert idea_6.text == "You are surrounded by hellfire" assert idea_6.up == 0 assert idea_6.user == 1 # pros assert pro_1.data.private._status == 1 assert pro_1.down == 0 assert pro_1.text == escape("I'd certainly really feel confused") assert pro_1.up == 6 assert pro_1.user == 2 assert pro_2.data.private._status == 1 assert pro_2.down == 0 assert pro_2.text == escape("It's simple") assert pro_2.up == 0 assert pro_2.user == 1 assert pro_3.data.private._status == 1 assert pro_3.down == 1 assert pro_3.text == escape( 'It avoids wicked problems shaped like projectiles' ) assert pro_3.up == 0 assert pro_3.user == 1 assert pro_4.data.private._status == 1 assert pro_4.down == 0 assert pro_4.text == escape("It's simple") assert pro_4.up == 0 assert pro_4.user == 1 # cons assert con_1.data.private._status == 1 assert con_1.down == 0 assert con_1.text == escape("I don't feel confused") assert con_1.up == 0 assert con_1.user == 1 assert con_3.data.private._status == 1 assert con_3.down == 0 assert con_3.text == "Spans both positions" assert con_3.up == 0 assert con_3.user == 2 assert con_4.data.private._status == 1 assert con_4.down == 0 assert con_4.text == "It may not actually avoid the problem" assert con_4.up == 1 assert con_4.user == 1 assert con_5.data.private._status == 1 assert con_5.down == 0 assert con_5.text == escape( 'Much harder to do while asleep with your eyes closed' ) assert con_5.up == 0 assert con_5.user == 1 con_6 = Con.n.get(con_5.id) assert con_6.user == con_5.user assert con_6.down == con_5.down assert con_6.text == con_5.text assert con_6.data.private._status == con_5.data.private._status # tags assert tag_1.text == 'wicked problem' assert tag_1.user == 1 assert tag_2.text == 'avoid' assert tag_2.user == 1 assert root.data.public.text == 'This is the root' finally: cleanup()