Files
FireGame/BaseModels/search_optimization/ld_json/ld_product.py
2023-05-16 17:14:16 +03:00

179 lines
6.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# import json
#
# import project_sets
# from BaseModels.functions import add_domain
#
#
# def get_ld_shipping_data_for_product(shipping_terms):
# shipping_terms_list = []
# for item in shipping_terms:
# data = {
# "@type": "OfferShippingDetails",
# "shippingRate": {
# "@type": "MonetaryAmount",
# "value": item.price,
# "currency": project_sets.base_currency
# },
# "shippingDestination": {
# "@type": "DefinedRegion",
# "addressCountry": project_sets.shipping_region, # обязательно
# # "postalCodeRange": {
# # "postalCodeBegin": "98100",
# # "postalCodeEnd": "98199"
# # }
# },
# "deliveryTime": {
# "@type": "ShippingDeliveryTime",
# "cutOffTime": project_sets.cutOffTime, # "19:30-08:00",
#
# # Стандартное время от получения оплаты до отправки товаров со склада (или подготовки к самовывозу, если используется такой вариант)
# "handlingTime": {
# "@type": "QuantitativeValue",
# "minValue": "0", # дней
# "maxValue": "1" # дней
# },
# # Стандартное время от отправки заказа до его прибытия к конечному покупателю.
# "transitTime": {
# "@type": "QuantitativeValue",
# "minValue": "1", # дней
# "maxValue": "5" # дней
# },
# # Время, после которого новые заказы не обрабатываются в тот же день
#
# # Дни недели, по которым вы обрабатываете заказы
# "businessDays": {
# "@type": "OpeningHoursSpecification",
# "dayOfWeek": ["https://schema.org/Monday", "https://schema.org/Tuesday",
# "https://schema.org/Wednesday", "https://schema.org/Thursday"]
# }
# }
# }
#
# shipping_terms_list.append(data)
#
# data = {
# "shippingDetails": shipping_terms_list
# }
#
# return data
#
#
# def get_ld_offers_for_product(product, domain, shipping_terms):
# data = {
# "offers": {
# "@type": "Offer",
# "url": '{0}{1}'.format(domain, product.get_site_url()),
# "itemCondition": "https://schema.org/NewCondition",
# # "https://schema.org/NewCondition"
# # "https://schema.org/UsedCondition"
# "availability": "https://schema.org/InStock",
# # https://schema.org/BackOrder
# # https://schema.org/Discontinued
# # https://schema.org/InStock
# # https://schema.org/InStoreOnly
# # https://schema.org/LimitedAvailability
# # https://schema.org/OnlineOnly
# # https://schema.org/OutOfStock
# # https://schema.org/PreOrder
# # https://schema.org/PreSale
# # https://schema.org/SoldOut
# "price": str(product.price),
# "priceCurrency": project_sets.base_currency,
# # "priceValidUntil": "2020-11-20", #дата окончания действия цены
# # "shippingSettingsLink": '{0}{1}'.format(project_sets.domain, 'delivery/'),
#
# },
# }
#
# if shipping_terms:
# data["offers"].update(get_ld_shipping_data_for_product(shipping_terms))
#
# return data
#
#
# def get_aggregate_rating(product):
# data = {
# # "review": {
# # "@type": "Review",
# # "reviewRating": {
# # "@type": "Rating",
# # "ratingValue": "4",
# # "bestRating": "5"
# # },
# # "author": {
# # "@type": "Person",
# # "name": "Fred Benson"
# # }
# # },
# "aggregateRating": {
# "@type": "AggregateRating",
# "ratingValue": product.ratingValue,
# "reviewCount": product.reviewCount
# }
# }
#
# return data
#
#
# def get_ld_product(product, domain, shipping_terms):
# from GeneralApp.views import get_cur_domain
# serv_domain, local_domain = get_cur_domain()
#
# data = {
# "@context": "https://schema.org/",
# "@type": "Product",
# "name": product.name,
# "sku": '{0}-{1}'.format(str(product.brand), str(product.article)),
# "url": '{0}{1}'.format(domain, product.get_site_url()),
# }
#
# if product.description:
# data.update({
# "description": product.description,
# })
#
# barcode = getattr(product, 'barcode', None)
# if barcode:
# data.update({
# "gtin14": barcode,
# })
#
# gallery = getattr(product, 'gallery', None)
# if gallery:
# try:
# photos = gallery.get_photos()
# photos = list(map(lambda ph: '{0}{1}'.format(serv_domain, ph), photos))
# except Exception as e:
# photos = None
#
# if photos:
# data.update({
# "image": photos,
# })
#
# brand = getattr(product, 'brand', None)
# if brand:
# if type(brand) not in [str]:
# brand = brand.name
#
# data.update({
# "brand": {
# "@type": "Brand",
# "name": brand
# },
# })
#
# FAQ = {}
#
# from ...
#
# aggregate_rating = getattr(product, 'ratingValue', None)
# if aggregate_rating != None:
# data.update(get_aggregate_rating(product))
#
# price = getattr(product, 'price', None)
# if price:
# data.update(get_ld_offers_for_product(product, domain, shipping_terms))
#
# return json.dumps(data)