def test_get_domain_ids_by_names(self): def _create_domain(name): domain = Domain(name=name) domain.save() self.addCleanup(domain.delete) return domain._id names = ['b', 'a', 'c'] expected_ids = [_create_domain(name) for name in names] ids = get_domain_ids_by_names(names) self.assertEqual(ids, expected_ids) ids = get_domain_ids_by_names(names[:-1]) self.assertEqual(ids, expected_ids[:-1])
def _filter_missing_domains(configs): """Return a list of configs whose domain exists on this environment""" domain_names = [config.domain for config in configs if config.is_static] existing_domains = list(get_domain_ids_by_names(domain_names)) return [ config for config in configs if not config.is_static or config.domain in existing_domains ]
def _filter_missing_domains(configs): """Return a list of configs whose domain exists on this environment""" domain_names = [config.domain for config in configs if config.is_static] existing_domains = list(get_domain_ids_by_names(domain_names)) return [ config for config in configs if not config.is_static or config.domain in existing_domains ]
def _filter_domains_to_skip(configs): """Return a list of configs whose domain exists on this environment""" domain_names = list({config.domain for config in configs if config.is_static}) existing_domains = list(get_domain_ids_by_names(domain_names)) migrating_domains = all_domains_with_migrations_in_progress() return [ config for config in configs if config.domain not in migrating_domains and (not config.is_static or config.domain in existing_domains) ]
def handle(self, migration_file, **options): name_by_map = {} with open(migration_file, 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: name_by_map[row[0]] = row[1] domain_ids = get_domain_ids_by_names(name_by_map.keys()) def update_domain(doc): domain = Domain.wrap(doc) new_bu = name_by_map[domain.name] if new_bu not in BUSINESS_UNITS: print('Unknown BU: domain={}, BU={}'.format(domain.name, new_bu)) return domain.internal.business_unit = new_bu return DocUpdate(doc) iter_update(Domain.get_db(), update_domain, domain_ids, verbose=True)
def handle(self, *args, **options): if len(args) != 1: raise CommandError("Usage is ./manage.py migrate_domain_bu [migration_file]!") name_by_map = {} with open(args[0], 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: name_by_map[row[0]] = row[1] domain_ids = get_domain_ids_by_names(name_by_map.keys()) def update_domain(doc): domain = Domain.wrap(doc) new_bu = name_by_map[domain.name] if new_bu not in BUSINESS_UNITS: print 'Unknown BU: domain={}, BU={}'.format(domain.name, new_bu) return domain.internal.business_unit = new_bu return DocUpdate(doc) iter_update(Domain.get_db(), update_domain, domain_ids, verbose=True)