Skip to content

Commit

Permalink
fix models in separate apps
Browse files Browse the repository at this point in the history
  • Loading branch information
Paul van der Linden committed May 15, 2012
1 parent 44c0444 commit 2371999
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions easymode/tree/admin/relation.py
Expand Up @@ -104,27 +104,34 @@ class that this admin class makes editable:

invisible_in_admin = True
auto_aware = True
children = []
_children = None

_descriptor_cache = {}
_real_descriptor_cache = None

@property
def _descriptor_cache(self):
if self._real_descriptor_cache is None:
self._real_descriptor_cache = dict([(x[1].related.model, x[0]) for x in get_foreign_key_desciptors(self.model)])
return self._real_descriptor_cache

@property
def children(self):
if self._children is None:
if self.auto_aware:
self.children = self._descriptor_cache.keys()
else:
self.children = []
return self._children

@children.setter
def children(self, value):
self._children = value

class Media:
js = (
'easymode/js/adminoverride.js',
)

def __init__(self, model, admin_site):
super(ForeignKeyAwareModelAdmin, self).__init__(model, admin_site)

# look up all foreign key descriptors
descriptors = get_foreign_key_desciptors(self.model)
self._descriptor_cache = dict([(x[1].related.model, x[0]) for x in descriptors])

# if no children are set and autoaware is true,
# set the children
if not self.children and self.auto_aware:
self.children = [x[1].related.model for x in descriptors]

def get_model_perms(self, request):
perms = super(ForeignKeyAwareModelAdmin, self).get_model_perms(request)
perms['invisible_in_admin'] = self.invisible_in_admin
Expand Down

0 comments on commit 2371999

Please sign in to comment.