- contentlet_specs, contentreference_specs = page.template.containers
-
- contentlets = page.contentlets.filter(name__in=contentlet_specs)
- self.contentlets = dict(((c.name, c) for c in contentlets))
-
- q = Q()
- for name, ct in contentreference_specs.items():
- q |= Q(name=name, content_type=ct)
- references = page.contentreferences.filter(q)
- self.references = dict(((c.name, c) for c in references))
+ self.page = page
+
+ def get_contentlets(self):
+ if not hasattr(self, '_contentlets'):
+ self._contentlets = dict(((c.name, c) for c in self.page.contentlets.all()))
+ return self._contentlets
+
+ def get_references(self):
+ if not hasattr(self, '_references'):
+ references = self.page.contentreferences.all()
+ self._references = dict((((c.name, ContentType.objects.get_for_id(c.content_type_id)), c) for c in references))
+ return self._references