def get_groups(self, wrap=True): group_ids = get_owner_ids_by_type(self.domain, 'group', self.get_id) if wrap: return set(Group.view( '_all_docs', keys=list(group_ids), include_docs=True, )) else: return set(group_ids)
def get_users(self, wrap=True, include_groups=False): user_ids = set(get_owner_ids_by_type(self.domain, 'user', self.get_id)) if include_groups: group_ids = self.get_groups(wrap=False) else: group_ids = set() users_in_groups = [group.get_users(only_commcare=True) for group in Group.view('_all_docs', keys=list(group_ids), include_docs=True )] if wrap: return set(CommCareUser.view('_all_docs', keys=list(user_ids), include_docs=True)).union(*users_in_groups) else: return user_ids | set([user.get_id for user in users_in_groups])
def locations(self): loc_ids = get_owner_ids_by_type(self.domain, 'location', self.get_id) return SQLLocation.objects.filter(location_id__in=loc_ids)