def sync_denormalized(self): from ella.newman.permission import compute_applicable_categories_objects denormalized = [] cats = [] #for p in self.group.permissions.all(): for p in self.group.permissions.all().iterator(): code = '%s.%s' % (p.content_type.app_label, p.codename) # Category list is NOT NECESSARILY identical for every permission code in CUR's group cats = compute_applicable_categories_objects(self.user, code) #print 'Denormalizing %s for %d categories' % (code, len(cats)) # create denormalized roles for c in cats: root_cat = c.main_parent if not root_cat: root_cat = c #c is top category elif root_cat.tree_parent_id: root_cat = root_cat.get_tree_parent() try: obj = DenormalizedCategoryUserRole.objects.create( contenttype_id=p.content_type.pk, user_id=self.user.pk, permission_codename=code, permission_id=p.pk, category_id=c.pk, root_category_id=root_cat.pk ) denormalized.append(obj) except IntegrityError: pass return denormalized
def sync_denormalized(self): from ella.newman.permission import compute_applicable_categories_objects for p in self.group.permissions.all(): code = '%s.%s' % (p.content_type.app_label, p.codename) cats = compute_applicable_categories_objects(self.user, code) # create denormalized roles for c in cats: root_cat = c.main_parent if not root_cat: root_cat = c #c is top category elif root_cat.tree_parent_id: root_cat = root_cat.get_tree_parent() obj, created = DenormalizedCategoryUserRole.objects.get_or_create( contenttype_id=p.content_type.pk, user_id=self.user.pk, permission_codename=code, permission_id=p.pk, category_id=c.pk, root_category_id=root_cat.pk )