def process_products(session_context, days=None, resume=False): if resume: # registers the start of the operation and the cutoff_date timestamp = session_context.get_present_date() real_time_start = time() required_fields = session_context.product_model_factory.get_custom_required_attributes() latest_batch_info = session_context.data_proxy.fetch_latest_batch_info_product_models() if latest_batch_info is not None: cutoff_date = latest_batch_info["timestamp"] else: cutoff_date = None if cutoff_date is not None: log.info("Loading product ids of all products updated after {0}...".format(cutoff_date)) else: log.info("Loading all product ids...".format(cutoff_date)) product_ids = [p for p in session_context.data_proxy.fetch_all_product_ids( allow_deleted=False, required_fields=required_fields, min_date=cutoff_date, product_date_field="updated_at")] log.info("Loaded %d products." % len(product_ids)) for product_id in product_ids: process_product(session_context, product_id, force_update=True) session_context.data_proxy.save_timestamp_product_models( timestamp, cutoff_date, time() - real_time_start) log.info("Done.") else: prd.process_products_from_scratch(session_context, days)
def setup_class(cls): cls.session_context = tests.init_session(cls.custom_settings) cls.db_proxy = cls.session_context.data_proxy cls.db_proxy.drop_database() cls.db_proxy.ensure_indexes(create_ttl_indexes=False) # Populate the database dp.populate_users(cls.session_context) dp.populate_products(cls.session_context) product_maintenance.process_products_from_scratch(cls.session_context) dp.populate_activities(cls.session_context) # Make a backup of the database so that after each test we can send it back to its original state cls.db_proxy.backup_database()