Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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()