changeset 338:514de37e0bcf

Cache field definitions
author Sylvain Beucler <beuc@beuc.net>
date Mon, 23 Aug 2010 07:15:10 +0200
parents af82331e34ca
children 8710b49dd7cc
files savane/tracker/models.py
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/savane/tracker/models.py
+++ b/savane/tracker/models.py
@@ -510,6 +510,9 @@
         values + group-specific overlay).  Only apply sensible
         overlay values (cf. FieldOverlay model definition).
         """
+        if hasattr(self, '_cache_field_defs'):
+            return self._cache_field_defs
+
         fields = deepcopy(field_defs)
         for overlays in (FieldOverlay.objects.filter(tracker=self.tracker_id, group=None),
                          FieldOverlay.objects.filter(tracker=self.tracker_id, group=self.group)):
@@ -520,7 +523,8 @@
             if fields[name]['display_type'] == 'SB':
                 fields[name]['choices'] = field_get_values(self.tracker_id, self.group,
                                                           fields[name], self.get_value(name))
-        return fields
+        self._cache_field_defs = fields
+        return self._cache_field_defs
 
     def get_form_fields(self, user=None):
         """