Esempio n. 1
0
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()
Esempio n. 2
0
    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})
Esempio n. 3
0
 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
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)