def run(self, entity_name=None, path=None, sample_data=False, force=False, init_index_only=False): """Run the initialization :param str,list,NoneType entity_name: entity(ies) to initialize :param str,NoneType path: path of the file to import :param bool sample_data: True if sample data need to be used :param bool force: if True, update item even if it has been modified by user :param bool init_index_only: if True, it only initializes index only """ logger.info('Starting data initialization') logger.info('Config: %s', app.config['APP_ABSPATH']) # create indexes in mongo app.init_indexes() # put mapping to elastic app.data.init_elastic(app) if init_index_only: logger.info('Only indexes initialized.') return 0 if sample_data: if not path: path = INIT_DATA_PATH.parent / 'data_sample' else: raise ValueError( 'path and sample_data should not be set at the same time') if entity_name: if isinstance(entity_name, str): entity_name = [entity_name] for name in entity_name: (file_name, index_params, do_patch) = __entities__[name] self.import_file(name, path, file_name, index_params, do_patch, force) return 0 for name, (file_name, index_params, do_patch) in __entities__.items(): try: self.import_file(name, path, file_name, index_params, do_patch, force) except KeyError: continue except Exception as ex: logger.exception(ex) logger.info('Exception loading entity {} from {}'.format( name, file_name)) logger.info('Data import finished') return 0
def run(self, entity_name=None, path=None, sample_data=False, force=False, init_index_only=False): """Run the initialization :param str,list,NoneType entity_name: entity(ies) to initialize :param str,NoneType path: path of the file to import :param bool sample_data: True if sample data need to be used :param bool force: if True, update item even if it has been modified by user :param bool init_index_only: if True, it only initializes index only """ logger.info('Starting data initialization') logger.info('Config: %s', app.config['APP_ABSPATH']) # create indexes in mongo app.init_indexes() # put mapping to elastic app.data.init_elastic(app) if init_index_only: logger.info('Only indexes initialized.') return 0 if sample_data: if not path: path = INIT_DATA_PATH.parent / 'data_sample' else: raise ValueError('path and sample_data should not be set at the same time') if entity_name: if isinstance(entity_name, str): entity_name = [entity_name] for name in entity_name: (file_name, index_params, do_patch) = __entities__[name] self.import_file(name, path, file_name, index_params, do_patch, force) return 0 for name, (file_name, index_params, do_patch) in __entities__.items(): try: self.import_file(name, path, file_name, index_params, do_patch, force) except KeyError: continue except Exception as ex: logger.exception(ex) logger.info('Exception loading entity {} from {}'.format(name, file_name)) logger.info('Data import finished') return 0
def _create(self, docs): for doc in docs: if doc.get("remove_first"): clean_dbs(app, force=True) app.init_indexes() app.data.init_elastic(app) get_resource_service("users").stop_updating_stage_visibility() user = get_resource_service("users").find_one( username=get_default_user()["username"], req=None) if not user: get_resource_service("users").post([get_default_user()]) prepopulate_data(doc.get("profile") + ".json", get_default_user()) get_resource_service("users").start_updating_stage_visibility() get_resource_service("users").update_stage_visibility_for_users()
def run(self, entity_name=None, path=None, sample_data=False, force=False, init_index_only=False): """Run the initialization :param str,list,NoneType entity_name: entity(ies) to initialize :param str,NoneType path: path of the file to import :param bool sample_data: True if sample data need to be used :param bool force: if True, update item even if it has been modified by user :param bool init_index_only: if True, it only initializes index only """ logger.info("Starting data initialization") logger.info("Config: %s", app.config["APP_ABSPATH"]) # create indexes in mongo # We can safely ignore duplicate key errors as this only affects performance # As we want the rest of this command to still execute app.init_indexes(ignore_duplicate_keys=True) # put mapping to elastic try: app.data.init_elastic(app) except (elasticsearch.exceptions.TransportError) as err: logger.error(err) logger.warning( "Can't update the mapping, please run app:rebuild_elastic_index command." ) if init_index_only: logger.info("Only indexes initialized.") return 0 if sample_data: if not path: path = INIT_DATA_PATH.parent / "data_sample" else: raise ValueError( "path and sample_data should not be set at the same time") if entity_name: if isinstance(entity_name, str): entity_name = [entity_name] for name in entity_name: (file_name, index_params, do_patch) = __entities__[name] self.import_file(name, path, file_name, index_params, do_patch, force) return 0 for name, (file_name, index_params, do_patch) in __entities__.items(): try: self.import_file(name, path, file_name, index_params, do_patch, force) except KeyError: continue except Exception as ex: logger.exception(ex) logger.info("Exception loading entity {} from {}".format( name, file_name)) logger.info("Data import finished") return 0