def update_insight_attributes(product: Product, insight: ProductInsight) -> bool: to_update = False if insight.brands != product.brands_tags: logger.info("Updating brand {} -> {} ({})".format( insight.brands, product.brands_tags, product.barcode)) to_update = True insight.brands = product.brands_tags if insight.countries != product.countries_tags: logger.info("Updating countries {} -> {} ({})".format( insight.countries, product.countries_tags, product.barcode)) to_update = True insight.countries = product.countries_tags if insight.unique_scans_n != product.unique_scans_n: logger.info("Updating unique scan count {} -> {} ({})".format( insight.unique_scans_n, product.unique_scans_n, product.barcode)) to_update = True insight.unique_scans_n = product.unique_scans_n if to_update: insight.save() return to_update
def add_fields( insight: ProductInsight, product: Product, timestamp: datetime.datetime, server_domain: str, server_type: str, ): """Add mandatory insight fields.""" barcode = insight.barcode insight.reserved_barcode = is_reserved_barcode(barcode) insight.server_domain = server_domain insight.server_type = server_type insight.id = str(uuid.uuid4()) insight.timestamp = timestamp insight.countries = product.countries_tags insight.brands = product.brands_tags insight.n_votes = 0 if insight.automatic_processing: insight.process_after = timestamp + datetime.timedelta( minutes=settings.INSIGHT_AUTOMATIC_PROCESSING_WAIT)