diff --git a/objrepo/record/models.py b/objrepo/record/models.py index b9d2860..8169e07 100644 --- a/objrepo/record/models.py +++ b/objrepo/record/models.py @@ -5,7 +5,9 @@ class Record(models.Model): metadata = JSONField(blank=True) title = models.TextField() - related = models.ManyToManyField('Record', through='Link') + @property + def all_metadata(self): + return self.metadata class Link(models.Model): link_from = models.ForeignKey(Record, related_name='out_links') diff --git a/objrepo/record/tests.py b/objrepo/record/tests.py index ab0cce1..4a76f5e 100644 --- a/objrepo/record/tests.py +++ b/objrepo/record/tests.py @@ -9,5 +9,31 @@ from django.test import TestCase from record.models import Record, Link class RecordTests(TestCase): - def test_boring(self): - pass + def setUp(self): + self.q = Record.objects.create( + title='Related object', + metadata={ + 'ex:another_property': 23, + }) + self.r = Record.objects.create( + title='A test record', + metadata={ + 'ex:llama_id': 42, + }) + + def test_metadata_one_record(self): + d = self.r.all_metadata + self.assertEqual(d['ex:llama_id'], 42) + + def test_metadata_one_record_noinherit(self): + # this should work the same way. + l = Link.objects.create( + link_from=self.r, + link_to=self.q, + label='ex:related_to', + inherit=False) + + d = self.r.all_metadata + + self.assertEqual(d['ex:llama_id'], 42) + self.assertNotIn('ex:related_to', d)