diff --git a/objrepo/record/models.py b/objrepo/record/models.py index c5b134d..a584a59 100644 --- a/objrepo/record/models.py +++ b/objrepo/record/models.py @@ -10,7 +10,11 @@ class Record(models.Model): result = {} for l in self.out_links.filter(inherit=True): - result.update(l.link_to.all_metadata) + if l.prefix is None: + result.update(l.link_to.all_metadata) + else: + for k,v in l.link_to.all_metadata.iteritems(): + result[l.prefix + ':' + k] = v result.update(self.metadata) return result diff --git a/objrepo/record/tests.py b/objrepo/record/tests.py index 03932a6..ba42e9a 100644 --- a/objrepo/record/tests.py +++ b/objrepo/record/tests.py @@ -50,3 +50,19 @@ class RecordTests(TestCase): self.assertEqual(d['ex:llama_id'], 42) self.assertEqual(d['ex:another_property'], 23) + + def test_metadata_inherit_with_prefix(self): + # these records are linked and marked to inherit, with a prefix 'p' + # this is interesting so you can inherit a related entity's metadata + # without making a mess of the namespace + l = Link.objects.create( + link_from=self.r, + link_to=self.q, + label='ex:related_to', + inherit=True, + prefix='p') + + d = self.r.all_metadata + + self.assertEqual(d['ex:llama_id'], 42) + self.assertEqual(d['p:ex:another_property'], 23)