def other_story_links(self, instance, story): edges = set() nodes = set() type_str = Edge._type_string_from_model(instance) outgoing = Edge.objects.filter(verb="primary", subject_id=instance.id, subject_type=type_str).exclude(story=story) second_out = Edge.objects.filter(verb="secondary", subject_id=instance.id, subject_type=type_str, story=story) incoming = Edge.objects.filter(verb="primary", object_id=instance.id, object_type=type_str).exclude(story=story) second_in = Edge.objects.filter(verb="secondary", object_id=instance.id, object_type=type_str, story=story) outgoing = outgoing or second_out incoming = incoming or second_in for edge in outgoing: node = edge.object node.horizontal_position = -self.node_separation node.story = edge.story nodes.add(node) edges.add(edge) for edge in incoming: # The incoming links kink the wrong way on the map. Reversing the link fixes this. We do it in the view edge.incoming = True node = edge.subject node.horizontal_position = self.node_separation node.story = edge.story nodes.add(node) edges.add(edge) return nodes,edges
def other_story_links(self, instance, story): edges = set() nodes = set() type_str = Edge._type_string_from_model(instance) outgoing = Edge.objects.filter( verb="primary", subject_id=instance.id, subject_type=type_str).exclude(story=story) second_out = Edge.objects.filter(verb="secondary", subject_id=instance.id, subject_type=type_str, story=story) incoming = Edge.objects.filter( verb="primary", object_id=instance.id, object_type=type_str).exclude(story=story) second_in = Edge.objects.filter(verb="secondary", object_id=instance.id, object_type=type_str, story=story) outgoing = outgoing or second_out incoming = incoming or second_in for edge in outgoing: node = edge.object node.horizontal_position = -self.node_separation node.story = edge.story nodes.add(node) edges.add(edge) for edge in incoming: # The incoming links kink the wrong way on the map. Reversing the link fixes this. We do it in the view edge.incoming = True node = edge.subject node.horizontal_position = self.node_separation node.story = edge.story nodes.add(node) edges.add(edge) return nodes, edges
def test_type_string_generation(self): person = Person.objects.get(pk=1) self.assertEqual("core.person", Edge._type_string_from_model(person)) concept = Concept.objects.get(pk=1) self.assertEqual("core.concept", Edge._type_string_from_model(concept))
def test_type_string_generation(self): person = Person.objects.get(pk=1) self.assertEqual("core.person", Edge._type_string_from_model(person)) concept = Concept.objects.get(pk=1) self.assertEqual("core.concept", Edge._type_string_from_model(concept))