i hate expensive properties

This commit is contained in:
Chris Forbes 2013-07-25 11:18:01 +12:00
parent 75b44aa1d9
commit fc6640807c
2 changed files with 6 additions and 7 deletions

View file

@ -5,15 +5,14 @@ class Record(models.Model):
metadata = JSONField(blank=True) metadata = JSONField(blank=True)
title = models.TextField() title = models.TextField()
@property
def all_metadata(self): def all_metadata(self):
result = {} result = {}
for l in self.out_links.filter(inherit=True): for l in self.out_links.filter(inherit=True):
if l.prefix is None: if l.prefix is None:
result.update(l.link_to.all_metadata) result.update(l.link_to.all_metadata())
else: else:
for k,v in l.link_to.all_metadata.iteritems(): for k,v in l.link_to.all_metadata().iteritems():
result[l.prefix + ':' + k] = v result[l.prefix + ':' + k] = v
result.update(self.metadata) result.update(self.metadata)

View file

@ -22,7 +22,7 @@ class RecordTests(TestCase):
}) })
def test_metadata_one_record(self): def test_metadata_one_record(self):
d = self.r.all_metadata d = self.r.all_metadata()
self.assertEqual(d['ex:llama_id'], 42) self.assertEqual(d['ex:llama_id'], 42)
def test_metadata_noinherit(self): def test_metadata_noinherit(self):
@ -33,7 +33,7 @@ class RecordTests(TestCase):
label='ex:related_to', label='ex:related_to',
inherit=False) inherit=False)
d = self.r.all_metadata d = self.r.all_metadata()
self.assertEqual(d['ex:llama_id'], 42) self.assertEqual(d['ex:llama_id'], 42)
self.assertNotIn('ex:another_property', d) self.assertNotIn('ex:another_property', d)
@ -46,7 +46,7 @@ class RecordTests(TestCase):
label='ex:related_to', label='ex:related_to',
inherit=True) inherit=True)
d = self.r.all_metadata d = self.r.all_metadata()
self.assertEqual(d['ex:llama_id'], 42) self.assertEqual(d['ex:llama_id'], 42)
self.assertEqual(d['ex:another_property'], 23) self.assertEqual(d['ex:another_property'], 23)
@ -62,7 +62,7 @@ class RecordTests(TestCase):
inherit=True, inherit=True,
prefix='p') prefix='p')
d = self.r.all_metadata d = self.r.all_metadata()
self.assertEqual(d['ex:llama_id'], 42) self.assertEqual(d['ex:llama_id'], 42)
self.assertEqual(d['p:ex:another_property'], 23) self.assertEqual(d['p:ex:another_property'], 23)