# Copyright (c) 2018, Frappe and Contributors # License: GNU General Public License v3. See license.txt import frappe from frappe.model.utils.rename_field import rename_field def execute(): # Rename and reload the Land Unit and Linked Land Unit doctypes if frappe.db.table_exists('Land Unit') and not frappe.db.table_exists('Location'): frappe.rename_doc('DocType', 'Land Unit', 'Location', force=True) frappe.reload_doc('assets', 'doctype', 'location') if frappe.db.table_exists('Linked Land Unit') and not frappe.db.table_exists('Linked Location'): frappe.rename_doc('DocType', 'Linked Land Unit', 'Linked Location', force=True) frappe.reload_doc('assets', 'doctype', 'linked_location') if not frappe.db.table_exists('Crop Cycle'): frappe.reload_doc('agriculture', 'doctype', 'crop_cycle') # Rename the fields in related doctypes if 'linked_land_unit' in frappe.db.get_table_columns('Crop Cycle'): rename_field('Crop Cycle', 'linked_land_unit', 'linked_location') if 'land_unit' in frappe.db.get_table_columns('Linked Location'): rename_field('Linked Location', 'land_unit', 'location') if not frappe.db.exists("Location", "All Land Units"): frappe.get_doc({"doctype": "Location", "is_group": True, "location_name": "All Land Units"}).insert(ignore_permissions=True) if frappe.db.table_exists('Land Unit'): land_units = frappe.get_all('Land Unit', fields=['*'], order_by='lft') for land_unit in land_units: if not frappe.db.exists('Location', land_unit.get('land_unit_name')): frappe.get_doc({ 'doctype': 'Location', 'location_name': land_unit.get('land_unit_name'), 'parent_location': land_unit.get('parent_land_unit') or "All Land Units", 'is_container': land_unit.get('is_container'), 'is_group': land_unit.get('is_group'), 'latitude': land_unit.get('latitude'), 'longitude': land_unit.get('longitude'), 'area': land_unit.get('area'), 'location': land_unit.get('location'), 'lft': land_unit.get('lft'), 'rgt': land_unit.get('rgt') }).insert(ignore_permissions=True) # Delete the Land Unit and Linked Land Unit doctypes if frappe.db.table_exists('Land Unit'): frappe.delete_doc('DocType', 'Land Unit', force=1) if frappe.db.table_exists('Linked Land Unit'): frappe.delete_doc('DocType', 'Linked Land Unit', force=1)