def view_task(request, uid, return_context=False): task = Task.get(uid)[0] # Replace newlines with <br>, etc. task["definition"] = clean_html(task["definition"]) contrasts = Task.get_contrasts(task["id"]) # Make a lookup dictionary based on concept id concept_lookup = dict() for contrast in contrasts: contrast_concepts = Contrast.get_concepts(contrast["contrast_id"]) for concept in contrast_concepts: concept_lookup = update_lookup(concept_lookup, concept["concept_id"], contrast) # Retrieve conditions, make associations with contrasts conditions = Task.get_conditions(uid) context = { "task": task, "concepts": concept_lookup, "contrasts": contrasts, "conditions": conditions, "domain": DOMAIN } if return_context == True: return context return render(request, 'atlas/view_task.html', context)
def add_task_contrast(request, uid): '''add_task_contrast will display the view to add a contrast to a task, meaning a set of conditions and an operator over the conditions. This view is a box over the faded out view_task page :param uid: the unique id of the task ''' context = view_task(request, uid, return_context=True) context["conditions"] = Task.get_conditions(uid) return render(request, 'atlas/add_contrast.html', context)
def test_add_condition(self): self.assertTrue( self.client.login(username=self.user.username, password=self.password)) task = Task() condition = Condition() tsk = task.create("test_add_condition_task", { "prop": "prop", "definition": "definition" }) uid = tsk.properties['id'] response = self.client.post( reverse('add_condition', kwargs={'task_id': uid}), {'condition_name': 'test_add_condition'}) self.assertEqual(response.status_code, 200) relation = task.get_conditions(uid) self.assertEqual(len(relation), 1) self.assertEqual(relation[0]['condition_name'], 'test_add_condition') con = condition.graph.find_one('condition', 'id', relation[0]['condition_id']) tsk.delete_related() tsk.delete() con.delete()
class NodeChildrenTest(TestCase): def setUp(self): self.task = Task() self.node_name = "test_name" self.node_properties = {'test_key': 'test_value'} self.graph = Graph("http://graphdb:7474/db/data/") self.task1 = self.task.create( name=self.node_name, properties=self.node_properties) self.task2 = self.task.create( name=self.node_name, properties=self.node_properties) condition = Condition() self.cond = condition.create( name=self.node_name, properties=self.node_properties) contrast = Contrast() self.cont = contrast.create( name=self.node_name, properties=self.node_properties) concept = Concept() self.con = concept.create( name=self.node_name, properties=self.node_properties) self.task.link( self.task1.properties['id'], self.cond.properties['id'], "HASCONDITION", endnode_type='condition') self.task.link( self.task1.properties['id'], self.con.properties['id'], "ASSERTS", endnode_type='concept') condition.link( self.cond.properties['id'], self.cont.properties['id'], "HASCONTRAST", endnode_type='contrast') concept.link( self.con.properties['id'], self.cont.properties['id'], "MEASUREDBY", endnode_type='contrast') def tearDown(self): self.task1.delete_related() self.task2.delete_related() self.cond.delete_related() self.cont.delete_related() self.con.delete_related() self.task1.delete() self.task2.delete() self.cond.delete() self.cont.delete() self.con.delete() def test_task_get_contrasts(self): contrasts = self.task.get_contrasts(self.task1.properties['id']) self.assertEqual(len(contrasts), 1) self.assertEqual( contrasts[0]['contrast_id'], self.cont.properties['id']) def test_task_get_conditions(self): conditions = self.task.get_conditions(self.task1.properties['id']) self.assertEqual(len(conditions), 1) self.assertEqual( conditions[0]['condition_id'], self.cond.properties['id']) def test_contrast_get_conditions(self): contrast = Contrast() conditions = contrast.get_conditions(self.cont.properties['id']) self.assertEqual(len(conditions), 1) self.assertEqual( conditions[0]['condition_id'], self.cond.properties['id']) def test_contrast_get_concepts(self): contrast = Contrast() concepts = contrast.get_concepts(self.cont.properties['id']) self.assertEqual(len(concepts), 1) self.assertEqual(concepts[0]['concept_id'], self.con.properties['id']) def test_contrast_get_tasks(self): contrast = Contrast() tasks = contrast.get_tasks(self.cont.properties['id']) self.assertEqual(len(tasks), 1) self.assertEqual(tasks[0]['task_id'], self.task1.properties['id'])