def _get_toggles_to_migrate(domain): from corehq.toggles import all_toggles, NAMESPACE_DOMAIN from toggle.models import Toggle from toggle.shortcuts import namespaced_item domain_item = namespaced_item(domain, NAMESPACE_DOMAIN) usernames = set(get_all_usernames_by_domain(domain)) for toggle in all_toggles() + all_previews(): try: current_toggle = Toggle.get(toggle.slug) except ResourceNotFound: continue enabled_for = set(current_toggle.enabled_users) new_toggle = Toggle(slug=toggle.slug, enabled_users=[]) if domain_item in enabled_for: new_toggle.enabled_users.append(domain_item) enabled_users = enabled_for & usernames new_toggle.enabled_users.extend(list(enabled_users)) if new_toggle.enabled_users: yield new_toggle.to_json()
def dump(self, output_stream): count = 0 usernames = get_all_usernames_by_domain(self.domain) for toggle in _get_toggles_to_migrate(self.domain, usernames): count += 1 output_stream.write(json.dumps(toggle)) output_stream.write('\n') self.stdout.write('Dumped {} Toggles\n'.format(count)) return Counter({'Toggle': count})
def get_filters(self, domain_name): """ :return: A generator of filters each filtering for at most 500 users. """ from corehq.apps.users.dbaccessors.all_commcare_users import get_all_usernames_by_domain usernames = get_all_usernames_by_domain(domain_name) for chunk in chunked(usernames, 500): filter = Q() for username in chunk: filter |= Q(username__iexact=username) yield filter
def get_filters(self, domain_name): """ :return: A generator of filters each filtering for at most 500 users. """ from corehq.apps.users.dbaccessors.all_commcare_users import get_all_usernames_by_domain usernames = get_all_usernames_by_domain(domain_name) for chunk in chunked(usernames, 500): filter = Q() for username in chunk: filter |= Q(username__iexact=username) yield filter
def get_filters(self, domain_name): """ :return: A generator of filters each filtering for at most 500 users. """ from corehq.apps.users.dbaccessors.all_commcare_users import get_all_usernames_by_domain from corehq.apps.users.dbaccessors.all_commcare_users import get_all_user_id_username_pairs_by_domain if self.user_ids: usernames = [ username for user_id, username in get_all_user_id_username_pairs_by_domain( domain_name, include_web_users=False) if user_id in self.user_ids ] else: usernames = get_all_usernames_by_domain(domain_name) for chunk in chunked(usernames, 500): filter = Q() for username in chunk: filter |= Q(username__iexact=username) yield filter
def test_get_all_usernames_by_domain(self): all_cc_users = [self.ccuser_1, self.ccuser_2, self.web_user] expected_usernames = [user.username for user in all_cc_users] actual_usernames = get_all_usernames_by_domain(self.ccdomain.name) self.assertItemsEqual(actual_usernames, expected_usernames)
def test_get_all_usernames_by_domain(self): all_cc_users = [self.ccuser_1, self.ccuser_2, self.web_user] expected_usernames = [user.username for user in all_cc_users] actual_usernames = get_all_usernames_by_domain(self.ccdomain.name) self.assertItemsEqual(actual_usernames, expected_usernames)