def handle(self, **options): for doc in Domain.get_all(include_docs=False): domain = doc['key'] if not use_new_exports(domain): set_toggle(toggles.OLD_EXPORTS.slug, domain, True, namespace=toggles.NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain)
def handle(self, *args, **options): for doc in Domain.get_all(include_docs=False): domain = doc['key'] if not use_new_exports(domain): set_toggle( toggles.OLD_EXPORTS.slug, domain, True, namespace=toggles.NAMESPACE_DOMAIN ) toggle_js_domain_cachebuster.clear(domain)
def revert_migrate_domain(domain, dryrun=False): instances = get_form_export_instances(domain) instances.extend(get_case_export_instances(domain)) reverted_exports = revert_new_exports(instances, dryrun=dryrun) if not dryrun: set_toggle(OLD_EXPORTS.slug, domain, True, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) for reverted_export in reverted_exports: print('Reverted export: {}'.format(reverted_export._id))
def revert_migrate_domain(domain, dryrun=False): instances = get_form_export_instances(domain) instances.extend(get_case_export_instances(domain)) reverted_exports = revert_new_exports(instances, dryrun=dryrun) if not dryrun: set_toggle(OLD_EXPORTS.slug, domain, True, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) for reverted_export in reverted_exports: print 'Reverted export: {}'.format(reverted_export._id)
def call_save_fn(self, changed_entries, currently_enabled): for entry in changed_entries: if entry.startswith(NAMESPACE_DOMAIN): domain = entry.split(":")[-1] if self.static_toggle.save_fn is not None: self.static_toggle.save_fn(domain, entry in currently_enabled) toggle_js_domain_cachebuster.clear(domain) else: # these are sent down with no namespace assert ':' not in entry, entry username = entry toggle_js_user_cachebuster.clear(username)
def _call_save_fn_and_clear_cache(toggle_slug, changed_entries, currently_enabled, static_toggle): for entry in changed_entries: enabled = entry in currently_enabled namespace, entry = parse_toggle(entry) if namespace == NAMESPACE_DOMAIN: domain = entry if static_toggle.save_fn is not None: static_toggle.save_fn(domain, enabled) toggle_js_domain_cachebuster.clear(domain) else: # these are sent down with no namespace assert ':' not in entry, entry username = entry toggle_js_user_cachebuster.clear(username) clear_toggle_cache(toggle_slug, entry, namespace=namespace)
def set_flags(self): from corehq.toggles import all_toggles, NAMESPACE_DOMAIN from corehq.feature_previews import all_previews from corehq.apps.hqwebapp.templatetags.hq_shared_tags import toggle_js_domain_cachebuster for toggle in all_toggles(): if toggle.enabled(self.existing_domain): self.stdout.write("Setting flag: {}".format(toggle.slug)) if not self.no_commmit: toggle.set(self.new_domain, True, NAMESPACE_DOMAIN) for preview in all_previews(): if preview.enabled(self.existing_domain): self.stdout.write("Setting preview: {}".format(preview.slug)) if not self.no_commmit: preview.set(self.new_domain, True, NAMESPACE_DOMAIN) if preview.save_fn is not None: preview.save_fn(self.new_domain, True) toggle_js_domain_cachebuster.clear(self.new_domain)
def set_flags(self): from corehq.toggles import all_toggles, NAMESPACE_DOMAIN from corehq.feature_previews import all_previews from corehq.apps.hqwebapp.templatetags.hq_shared_tags import toggle_js_domain_cachebuster for toggle in all_toggles(): if toggle.enabled(self.existing_domain): self.stdout.write('Setting flag: {}'.format(toggle.slug)) if not self.no_commmit: toggle.set(self.new_domain, True, NAMESPACE_DOMAIN) for preview in all_previews(): if preview.enabled(self.existing_domain): self.stdout.write('Setting preview: {}'.format(preview.slug)) if not self.no_commmit: preview.set(self.new_domain, True, NAMESPACE_DOMAIN) if preview.save_fn is not None: preview.save_fn(self.new_domain, True) toggle_js_domain_cachebuster.clear(self.new_domain)
def migrate_domain(domain, dryrun=False, force_convert_columns=False): from couchexport.models import SavedExportSchema export_count = stale_get_export_count(domain) metas = [] if export_count: for old_export in with_progress_bar(get_exports_json(domain), length=export_count, prefix=domain): with CriticalSection(['saved-export-{}'.format(old_export['_id'])], timeout=120): try: _, migration_meta = convert_saved_export_to_export_instance( domain, SavedExportSchema.get(old_export['_id']), dryrun=dryrun, force_convert_columns=force_convert_columns, ) except Exception as e: print('Failed parsing {}: {}'.format(old_export['_id'], e)) raise else: metas.append(migration_meta) if not dryrun: set_toggle(OLD_EXPORTS.slug, domain, False, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) # Remote app migrations must have access to UserDefined columns and tables if any(map(lambda meta: meta.is_remote_app_migration, metas)): set_toggle(ALLOW_USER_DEFINED_EXPORT_COLUMNS.slug, domain, True, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) for meta in metas: if not meta.skipped_tables and not meta.skipped_columns: continue output = '* Export information for export: {} *'.format( meta.old_export_url) schema_id_output = 'Generated schema: {}'.format( meta.generated_schema_id) print('') print('*' * len(output)) print(output) print('* {}{} *'.format( schema_id_output, ' ' * (len(output) - len(schema_id_output) - 4))) print('*' * len(output)) print('') if meta.skipped_tables: print('# Skipped tables #') for table_meta in meta.skipped_tables: table_meta.pretty_print() if meta.skipped_columns: print('# Skipped columns #') for column_meta in meta.skipped_columns: column_meta.pretty_print() return metas
try: _, migration_meta = convert_saved_export_to_export_instance( domain, SavedExportSchema.wrap(old_export), dryrun=dryrun, force_convert_columns=force_convert_columns, ) except Exception, e: print 'Failed parsing {}: {}'.format(old_export['_id'], e) raise e else: metas.append(migration_meta) if not dryrun: set_toggle(NEW_EXPORTS.slug, domain, True, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) # Remote app migrations must have access to UserDefined columns and tables if any(map(lambda meta: meta.is_remote_app_migration, metas)): set_toggle(ALLOW_USER_DEFINED_EXPORT_COLUMNS.slug, domain, True, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) for meta in metas: print '' print '***' * 15 print '* Export information for export: {}'.format( meta.saved_export_id) print '***' * 15
try: _, migration_meta = convert_saved_export_to_export_instance( domain, SavedExportSchema.wrap(old_export), dryrun=dryrun, force_convert_columns=force_convert_columns, ) except Exception, e: print 'Failed parsing {}: {}'.format(old_export['_id'], e) raise e else: metas.append(migration_meta) if not dryrun: set_toggle(OLD_EXPORTS.slug, domain, False, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) # Remote app migrations must have access to UserDefined columns and tables if any(map(lambda meta: meta.is_remote_app_migration, metas)): set_toggle( ALLOW_USER_DEFINED_EXPORT_COLUMNS.slug, domain, True, namespace=NAMESPACE_DOMAIN ) toggle_js_domain_cachebuster.clear(domain) for meta in metas: if not meta.skipped_tables and not meta.skipped_columns: continue