fix: Patch fix for fresh installs

- minor sider fix
- patch fix for fresh installs
This commit is contained in:
marination 2021-05-18 15:13:33 +05:30
parent 8c20f66905
commit d29b94f46e
3 changed files with 38 additions and 15 deletions

View File

@ -7,20 +7,37 @@ def execute():
frappe.reload_doc("e_commerce", "doctype", "website_item")
frappe.reload_doc("stock", "doctype", "item")
web_fields_to_map = ["route", "slideshow", "website_image", "website_image_alt",
item_fields = ["item_code", "item_name", "item_group", "stock_uom", "brand", "image",
"has_variants", "variant_of", "description", "weightage"]
web_fields_to_map = ["route", "slideshow", "website_image_alt",
"website_warehouse", "web_long_description", "website_content"]
items = frappe.db.sql("""
Select
item_code, item_name, item_group, stock_uom, brand, image,
has_variants, variant_of, description, weightage,
route, slideshow, website_image_alt,
website_warehouse, web_long_description, website_content
from
`tabItem`
where
show_in_website = 1
or show_variant_in_website = 1""", as_dict=1)
item_table_fields = frappe.db.sql("desc `tabItem`", as_dict=1)
item_table_fields = [d.get('Field') for d in item_table_fields]
# prepare fields to query from Item, check if the field exists in Item master
web_query_fields = []
for field in web_fields_to_map:
if field in item_table_fields:
web_query_fields.append(field)
item_fields.append(field)
# check if the filter fields exist in Item master
or_filters = {}
for field in ["show_in_website", "show_variant_in_website"]:
if field in item_table_fields:
or_filters[field] = 1
if not web_query_fields or not or_filters:
# web fields to map are not present in Item master schema
# most likely a fresh installation that doesnt need this patch
return
items = frappe.db.get_all(
"Item",
fields=item_fields,
or_filters=or_filters
)
for item in items:
if frappe.db.exists("Website Item", {"item_code": item.item_code}):
@ -34,12 +51,15 @@ def execute():
website_item.save()
# move Website Item Group & Website Specification table to Website Item
for doc in ("Website Item Group", "Item Website Specification"):
frappe.db.sql("""Update `tab{doctype}`
for doctype in ("Website Item Group", "Item Website Specification"):
web_item, item = website_item.name, item.item_code
frappe.db.sql(f"""
Update `tab{doctype}`
set
parenttype = 'Website Item',
parent = '{web_item}'
where
parenttype = 'Item'
and parent = '{item}'
""".format(doctype=doc, web_item=website_item.name, item=item.item_code))
"""
)

View File

@ -11,4 +11,5 @@ def execute():
row.item_code = web_item
homepage.flags.ignore_mandatory = True
homepage.save()

View File

@ -4,6 +4,8 @@ from frappe.utils import cint
def execute():
frappe.reload_doc("e_commerce", "doctype", "e_commerce_settings")
frappe.reload_doc("portal", "doctype", "website_filter_field")
frappe.reload_doc("portal", "doctype", "website_attribute")
products_settings_fields = [
"hide_variants", "home_page_is_products", "products_per_page",