style: bulk format code with black

v13 port because otherwise backports will result in conflicts always
This commit is contained in:
Ankush Menat
2022-03-29 17:29:34 +05:30
parent 7cc84dcbb4
commit c07713b860
1555 changed files with 96709 additions and 66138 deletions

View File

@@ -27,5 +27,5 @@ class Crop(Document):
@frappe.whitelist()
def get_item_details(item_code):
item = frappe.get_doc('Item', item_code)
item = frappe.get_doc("Item", item_code)
return {"uom": item.stock_uom, "rate": item.valuation_rate}

View File

@@ -1,13 +1,5 @@
from frappe import _
def get_data():
return {
'transactions': [
{
'label': _('Crop Cycle'),
'items': ['Crop Cycle']
}
]
}
return {"transactions": [{"label": _("Crop Cycle"), "items": ["Crop Cycle"]}]}

View File

@@ -7,7 +7,8 @@ import frappe
test_dependencies = ["Fertilizer"]
class TestCrop(unittest.TestCase):
def test_crop_period(self):
basil = frappe.get_doc('Crop', 'Basil from seed')
basil = frappe.get_doc("Crop", "Basil from seed")
self.assertEqual(basil.period, 15)

View File

@@ -22,7 +22,7 @@ class CropCycle(Document):
self.create_tasks_for_diseases()
def set_missing_values(self):
crop = frappe.get_doc('Crop', self.crop)
crop = frappe.get_doc("Crop", self.crop)
if not self.crop_spacing_uom:
self.crop_spacing_uom = crop.crop_spacing_uom
@@ -31,7 +31,7 @@ class CropCycle(Document):
self.row_spacing_uom = crop.row_spacing_uom
def create_crop_cycle_project(self):
crop = frappe.get_doc('Crop', self.crop)
crop = frappe.get_doc("Crop", self.crop)
self.project = self.create_project(crop.period, crop.agriculture_task)
self.create_task(crop.agriculture_task, self.project, self.start_date)
@@ -42,49 +42,56 @@ class CropCycle(Document):
self.import_disease_tasks(disease.disease, disease.start_date)
disease.tasks_created = True
frappe.msgprint(_("Tasks have been created for managing the {0} disease (on row {1})").format(disease.disease, disease.idx))
frappe.msgprint(
_("Tasks have been created for managing the {0} disease (on row {1})").format(
disease.disease, disease.idx
)
)
def import_disease_tasks(self, disease, start_date):
disease_doc = frappe.get_doc('Disease', disease)
disease_doc = frappe.get_doc("Disease", disease)
self.create_task(disease_doc.treatment_task, self.project, start_date)
def create_project(self, period, crop_tasks):
project = frappe.get_doc({
"doctype": "Project",
"project_name": self.title,
"expected_start_date": self.start_date,
"expected_end_date": add_days(self.start_date, period - 1)
}).insert()
project = frappe.get_doc(
{
"doctype": "Project",
"project_name": self.title,
"expected_start_date": self.start_date,
"expected_end_date": add_days(self.start_date, period - 1),
}
).insert()
return project.name
def create_task(self, crop_tasks, project_name, start_date):
for crop_task in crop_tasks:
frappe.get_doc({
"doctype": "Task",
"subject": crop_task.get("task_name"),
"priority": crop_task.get("priority"),
"project": project_name,
"exp_start_date": add_days(start_date, crop_task.get("start_day") - 1),
"exp_end_date": add_days(start_date, crop_task.get("end_day") - 1)
}).insert()
frappe.get_doc(
{
"doctype": "Task",
"subject": crop_task.get("task_name"),
"priority": crop_task.get("priority"),
"project": project_name,
"exp_start_date": add_days(start_date, crop_task.get("start_day") - 1),
"exp_end_date": add_days(start_date, crop_task.get("end_day") - 1),
}
).insert()
@frappe.whitelist()
def reload_linked_analysis(self):
linked_doctypes = ['Soil Texture', 'Soil Analysis', 'Plant Analysis']
required_fields = ['location', 'name', 'collection_datetime']
linked_doctypes = ["Soil Texture", "Soil Analysis", "Plant Analysis"]
required_fields = ["location", "name", "collection_datetime"]
output = {}
for doctype in linked_doctypes:
output[doctype] = frappe.get_all(doctype, fields=required_fields)
output['Location'] = []
output["Location"] = []
for location in self.linked_location:
output['Location'].append(frappe.get_doc('Location', location.location))
output["Location"].append(frappe.get_doc("Location", location.location))
frappe.publish_realtime("List of Linked Docs",
output, user=frappe.session.user)
frappe.publish_realtime("List of Linked Docs", output, user=frappe.session.user)
@frappe.whitelist()
def append_to_child(self, obj_to_append):
@@ -96,11 +103,11 @@ class CropCycle(Document):
def get_coordinates(doc):
return ast.literal_eval(doc.location).get('features')[0].get('geometry').get('coordinates')
return ast.literal_eval(doc.location).get("features")[0].get("geometry").get("coordinates")
def get_geometry_type(doc):
return ast.literal_eval(doc.location).get('features')[0].get('geometry').get('type')
return ast.literal_eval(doc.location).get("features")[0].get("geometry").get("type")
def is_in_location(point, vs):
@@ -114,8 +121,7 @@ def is_in_location(point, vs):
xi, yi = vs[i]
xj, yj = vs[j]
intersect = ((yi > y) != (yj > y)) and (
x < (xj - xi) * (y - yi) / (yj - yi) + xi)
intersect = ((yi > y) != (yj > y)) and (x < (xj - xi) * (y - yi) / (yj - yi) + xi)
if intersect:
inside = not inside

View File

@@ -11,8 +11,8 @@ test_dependencies = ["Crop", "Fertilizer", "Location", "Disease"]
class TestCropCycle(unittest.TestCase):
def test_crop_cycle_creation(self):
cycle = frappe.get_doc('Crop Cycle', 'Basil from seed 2017')
self.assertTrue(frappe.db.exists('Crop Cycle', 'Basil from seed 2017'))
cycle = frappe.get_doc("Crop Cycle", "Basil from seed 2017")
self.assertTrue(frappe.db.exists("Crop Cycle", "Basil from seed 2017"))
# check if the tasks were created
self.assertEqual(check_task_creation(), True)
@@ -23,45 +23,48 @@ def check_task_creation():
all_task_dict = {
"Survey and find the aphid locations": {
"exp_start_date": datetime.date(2017, 11, 21),
"exp_end_date": datetime.date(2017, 11, 22)
"exp_end_date": datetime.date(2017, 11, 22),
},
"Apply Pesticides": {
"exp_start_date": datetime.date(2017, 11, 23),
"exp_end_date": datetime.date(2017, 11, 23)
"exp_end_date": datetime.date(2017, 11, 23),
},
"Plough the field": {
"exp_start_date": datetime.date(2017, 11, 11),
"exp_end_date": datetime.date(2017, 11, 11)
"exp_end_date": datetime.date(2017, 11, 11),
},
"Plant the seeds": {
"exp_start_date": datetime.date(2017, 11, 12),
"exp_end_date": datetime.date(2017, 11, 13)
"exp_end_date": datetime.date(2017, 11, 13),
},
"Water the field": {
"exp_start_date": datetime.date(2017, 11, 14),
"exp_end_date": datetime.date(2017, 11, 14)
"exp_end_date": datetime.date(2017, 11, 14),
},
"First harvest": {
"exp_start_date": datetime.date(2017, 11, 18),
"exp_end_date": datetime.date(2017, 11, 18)
"exp_end_date": datetime.date(2017, 11, 18),
},
"Add the fertilizer": {
"exp_start_date": datetime.date(2017, 11, 20),
"exp_end_date": datetime.date(2017, 11, 22)
"exp_end_date": datetime.date(2017, 11, 22),
},
"Final cut": {
"exp_start_date": datetime.date(2017, 11, 25),
"exp_end_date": datetime.date(2017, 11, 25)
}
"exp_end_date": datetime.date(2017, 11, 25),
},
}
all_tasks = frappe.get_all('Task')
all_tasks = frappe.get_all("Task")
for task in all_tasks:
sample_task = frappe.get_doc('Task', task.name)
sample_task = frappe.get_doc("Task", task.name)
if sample_task.subject in list(all_task_dict):
if sample_task.exp_start_date != all_task_dict[sample_task.subject]['exp_start_date'] or sample_task.exp_end_date != all_task_dict[sample_task.subject]['exp_end_date']:
if (
sample_task.exp_start_date != all_task_dict[sample_task.subject]["exp_start_date"]
or sample_task.exp_end_date != all_task_dict[sample_task.subject]["exp_end_date"]
):
return False
all_task_dict.pop(sample_task.subject)
@@ -69,4 +72,4 @@ def check_task_creation():
def check_project_creation():
return True if frappe.db.exists('Project', {'project_name': 'Basil from seed 2017'}) else False
return True if frappe.db.exists("Project", {"project_name": "Basil from seed 2017"}) else False

View File

@@ -15,5 +15,6 @@ class Disease(Document):
if task.start_day > task.end_day:
frappe.throw(_("Start day is greater than end day in task '{0}'").format(task.task_name))
# to calculate the period of the Crop Cycle
if task.end_day > max_period: max_period = task.end_day
if task.end_day > max_period:
max_period = task.end_day
self.treatment_period = max_period

View File

@@ -8,5 +8,5 @@ import frappe
class TestDisease(unittest.TestCase):
def test_treatment_period(self):
disease = frappe.get_doc('Disease', 'Aphids')
disease = frappe.get_doc("Disease", "Aphids")
self.assertEqual(disease.treatment_period, 3)

View File

@@ -9,6 +9,6 @@ from frappe.model.document import Document
class Fertilizer(Document):
@frappe.whitelist()
def load_contents(self):
docs = frappe.get_all("Agriculture Analysis Criteria", filters={'linked_doctype':'Fertilizer'})
docs = frappe.get_all("Agriculture Analysis Criteria", filters={"linked_doctype": "Fertilizer"})
for doc in docs:
self.append('fertilizer_contents', {'title': str(doc.name)})
self.append("fertilizer_contents", {"title": str(doc.name)})

View File

@@ -8,4 +8,4 @@ import frappe
class TestFertilizer(unittest.TestCase):
def test_fertilizer_creation(self):
self.assertEqual(frappe.db.exists('Fertilizer', 'Urea'), 'Urea')
self.assertEqual(frappe.db.exists("Fertilizer", "Urea"), "Urea")

View File

@@ -9,6 +9,8 @@ from frappe.model.document import Document
class PlantAnalysis(Document):
@frappe.whitelist()
def load_contents(self):
docs = frappe.get_all("Agriculture Analysis Criteria", filters={'linked_doctype':'Plant Analysis'})
docs = frappe.get_all(
"Agriculture Analysis Criteria", filters={"linked_doctype": "Plant Analysis"}
)
for doc in docs:
self.append('plant_analysis_criteria', {'title': str(doc.name)})
self.append("plant_analysis_criteria", {"title": str(doc.name)})

View File

@@ -9,6 +9,8 @@ from frappe.model.document import Document
class SoilAnalysis(Document):
@frappe.whitelist()
def load_contents(self):
docs = frappe.get_all("Agriculture Analysis Criteria", filters={'linked_doctype':'Soil Analysis'})
docs = frappe.get_all(
"Agriculture Analysis Criteria", filters={"linked_doctype": "Soil Analysis"}
)
for doc in docs:
self.append('soil_analysis_criteria', {'title': str(doc.name)})
self.append("soil_analysis_criteria", {"title": str(doc.name)})

View File

@@ -10,62 +10,74 @@ from frappe.utils import cint, flt
class SoilTexture(Document):
soil_edit_order = [2, 1, 0]
soil_types = ['clay_composition', 'sand_composition', 'silt_composition']
soil_types = ["clay_composition", "sand_composition", "silt_composition"]
@frappe.whitelist()
def load_contents(self):
docs = frappe.get_all("Agriculture Analysis Criteria", filters={'linked_doctype':'Soil Texture'})
docs = frappe.get_all(
"Agriculture Analysis Criteria", filters={"linked_doctype": "Soil Texture"}
)
for doc in docs:
self.append('soil_texture_criteria', {'title': str(doc.name)})
self.append("soil_texture_criteria", {"title": str(doc.name)})
def validate(self):
self.update_soil_edit('sand_composition')
self.update_soil_edit("sand_composition")
for soil_type in self.soil_types:
if self.get(soil_type) > 100 or self.get(soil_type) < 0:
frappe.throw(_("{0} should be a value between 0 and 100").format(soil_type))
if sum(self.get(soil_type) for soil_type in self.soil_types) != 100:
frappe.throw(_('Soil compositions do not add up to 100'))
frappe.throw(_("Soil compositions do not add up to 100"))
@frappe.whitelist()
def update_soil_edit(self, soil_type):
self.soil_edit_order[self.soil_types.index(soil_type)] = max(self.soil_edit_order)+1
self.soil_edit_order[self.soil_types.index(soil_type)] = max(self.soil_edit_order) + 1
self.soil_type = self.get_soil_type()
def get_soil_type(self):
# update the last edited soil type
if sum(self.soil_edit_order) < 5: return
if sum(self.soil_edit_order) < 5:
return
last_edit_index = self.soil_edit_order.index(min(self.soil_edit_order))
# set composition of the last edited soil
self.set(self.soil_types[last_edit_index],
100 - sum(cint(self.get(soil_type)) for soil_type in self.soil_types) + cint(self.get(self.soil_types[last_edit_index])))
self.set(
self.soil_types[last_edit_index],
100
- sum(cint(self.get(soil_type)) for soil_type in self.soil_types)
+ cint(self.get(self.soil_types[last_edit_index])),
)
# calculate soil type
c, sa, si = flt(self.clay_composition), flt(self.sand_composition), flt(self.silt_composition)
if si + (1.5 * c) < 15:
return 'Sand'
return "Sand"
elif si + 1.5 * c >= 15 and si + 2 * c < 30:
return 'Loamy Sand'
elif ((c >= 7 and c < 20) or (sa > 52) and ((si + 2*c) >= 30) or (c < 7 and si < 50 and (si+2*c) >= 30)):
return 'Sandy Loam'
elif ((c >= 7 and c < 27) and (si >= 28 and si < 50) and (sa <= 52)):
return 'Loam'
elif ((si >= 50 and (c >= 12 and c < 27)) or ((si >= 50 and si < 80) and c < 12)):
return 'Silt Loam'
elif (si >= 80 and c < 12):
return 'Silt'
elif ((c >= 20 and c < 35) and (si < 28) and (sa > 45)):
return 'Sandy Clay Loam'
elif ((c >= 27 and c < 40) and (sa > 20 and sa <= 45)):
return 'Clay Loam'
elif ((c >= 27 and c < 40) and (sa <= 20)):
return 'Silty Clay Loam'
elif (c >= 35 and sa > 45):
return 'Sandy Clay'
elif (c >= 40 and si >= 40):
return 'Silty Clay'
elif (c >= 40 and sa <= 45 and si < 40):
return 'Clay'
return "Loamy Sand"
elif (
(c >= 7 and c < 20)
or (sa > 52)
and ((si + 2 * c) >= 30)
or (c < 7 and si < 50 and (si + 2 * c) >= 30)
):
return "Sandy Loam"
elif (c >= 7 and c < 27) and (si >= 28 and si < 50) and (sa <= 52):
return "Loam"
elif (si >= 50 and (c >= 12 and c < 27)) or ((si >= 50 and si < 80) and c < 12):
return "Silt Loam"
elif si >= 80 and c < 12:
return "Silt"
elif (c >= 20 and c < 35) and (si < 28) and (sa > 45):
return "Sandy Clay Loam"
elif (c >= 27 and c < 40) and (sa > 20 and sa <= 45):
return "Clay Loam"
elif (c >= 27 and c < 40) and (sa <= 20):
return "Silty Clay Loam"
elif c >= 35 and sa > 45:
return "Sandy Clay"
elif c >= 40 and si >= 40:
return "Silty Clay"
elif c >= 40 and sa <= 45 and si < 40:
return "Clay"
else:
return 'Select'
return "Select"

View File

@@ -8,7 +8,9 @@ import frappe
class TestSoilTexture(unittest.TestCase):
def test_texture_selection(self):
soil_tex = frappe.get_all('Soil Texture', fields=['name'], filters={'collection_datetime': '2017-11-08'})
doc = frappe.get_doc('Soil Texture', soil_tex[0].name)
soil_tex = frappe.get_all(
"Soil Texture", fields=["name"], filters={"collection_datetime": "2017-11-08"}
)
doc = frappe.get_doc("Soil Texture", soil_tex[0].name)
self.assertEqual(doc.silt_composition, 50)
self.assertEqual(doc.soil_type, 'Silt Loam')
self.assertEqual(doc.soil_type, "Silt Loam")

View File

@@ -10,9 +10,11 @@ from frappe.model.document import Document
class WaterAnalysis(Document):
@frappe.whitelist()
def load_contents(self):
docs = frappe.get_all("Agriculture Analysis Criteria", filters={'linked_doctype':'Water Analysis'})
docs = frappe.get_all(
"Agriculture Analysis Criteria", filters={"linked_doctype": "Water Analysis"}
)
for doc in docs:
self.append('water_analysis_criteria', {'title': str(doc.name)})
self.append("water_analysis_criteria", {"title": str(doc.name)})
@frappe.whitelist()
def update_lab_result_date(self):
@@ -21,6 +23,6 @@ class WaterAnalysis(Document):
def validate(self):
if self.collection_datetime > self.laboratory_testing_datetime:
frappe.throw(_('Lab testing datetime cannot be before collection datetime'))
frappe.throw(_("Lab testing datetime cannot be before collection datetime"))
if self.laboratory_testing_datetime > self.result_datetime:
frappe.throw(_('Lab result datetime cannot be before testing datetime'))
frappe.throw(_("Lab result datetime cannot be before testing datetime"))

View File

@@ -9,6 +9,6 @@ from frappe.model.document import Document
class Weather(Document):
@frappe.whitelist()
def load_contents(self):
docs = frappe.get_all("Agriculture Analysis Criteria", filters={'linked_doctype':'Weather'})
docs = frappe.get_all("Agriculture Analysis Criteria", filters={"linked_doctype": "Weather"})
for doc in docs:
self.append('weather_parameter', {'title': str(doc.name)})
self.append("weather_parameter", {"title": str(doc.name)})

View File

@@ -1,4 +1,3 @@
import frappe
from frappe import _
@@ -6,427 +5,493 @@ from erpnext.setup.utils import insert_record
def setup_agriculture():
if frappe.get_all('Agriculture Analysis Criteria'):
if frappe.get_all("Agriculture Analysis Criteria"):
# already setup
return
create_agriculture_data()
def create_agriculture_data():
records = [
dict(
doctype='Item Group',
item_group_name='Fertilizer',
doctype="Item Group",
item_group_name="Fertilizer",
is_group=0,
parent_item_group=_('All Item Groups')),
parent_item_group=_("All Item Groups"),
),
dict(
doctype='Item Group',
item_group_name='Seed',
doctype="Item Group", item_group_name="Seed", is_group=0, parent_item_group=_("All Item Groups")
),
dict(
doctype="Item Group",
item_group_name="By-product",
is_group=0,
parent_item_group=_('All Item Groups')),
parent_item_group=_("All Item Groups"),
),
dict(
doctype='Item Group',
item_group_name='By-product',
doctype="Item Group",
item_group_name="Produce",
is_group=0,
parent_item_group=_('All Item Groups')),
parent_item_group=_("All Item Groups"),
),
dict(
doctype='Item Group',
item_group_name='Produce',
is_group=0,
parent_item_group=_('All Item Groups')),
dict(
doctype='Agriculture Analysis Criteria',
title='Nitrogen Content',
doctype="Agriculture Analysis Criteria",
title="Nitrogen Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Phosphorous Content',
doctype="Agriculture Analysis Criteria",
title="Phosphorous Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Potassium Content',
doctype="Agriculture Analysis Criteria",
title="Potassium Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Calcium Content',
doctype="Agriculture Analysis Criteria",
title="Calcium Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Sulphur Content',
doctype="Agriculture Analysis Criteria",
title="Sulphur Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Magnesium Content',
doctype="Agriculture Analysis Criteria",
title="Magnesium Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Iron Content',
doctype="Agriculture Analysis Criteria",
title="Iron Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Copper Content',
doctype="Agriculture Analysis Criteria",
title="Copper Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Zinc Content',
doctype="Agriculture Analysis Criteria",
title="Zinc Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Boron Content',
doctype="Agriculture Analysis Criteria",
title="Boron Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Manganese Content',
doctype="Agriculture Analysis Criteria",
title="Manganese Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Chlorine Content',
doctype="Agriculture Analysis Criteria",
title="Chlorine Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Molybdenum Content',
doctype="Agriculture Analysis Criteria",
title="Molybdenum Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Sodium Content',
doctype="Agriculture Analysis Criteria",
title="Sodium Content",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Humic Acid',
doctype="Agriculture Analysis Criteria",
title="Humic Acid",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Fulvic Acid',
doctype="Agriculture Analysis Criteria",
title="Fulvic Acid",
standard=1,
linked_doctype='Fertilizer'),
linked_doctype="Fertilizer",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Inert',
standard=1,
linked_doctype='Fertilizer'),
doctype="Agriculture Analysis Criteria", title="Inert", standard=1, linked_doctype="Fertilizer"
),
dict(
doctype='Agriculture Analysis Criteria',
title='Others',
standard=1,
linked_doctype='Fertilizer'),
doctype="Agriculture Analysis Criteria", title="Others", standard=1, linked_doctype="Fertilizer"
),
dict(
doctype='Agriculture Analysis Criteria',
title='Nitrogen',
doctype="Agriculture Analysis Criteria",
title="Nitrogen",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Phosphorous',
doctype="Agriculture Analysis Criteria",
title="Phosphorous",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Potassium',
doctype="Agriculture Analysis Criteria",
title="Potassium",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Calcium',
doctype="Agriculture Analysis Criteria",
title="Calcium",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Magnesium',
doctype="Agriculture Analysis Criteria",
title="Magnesium",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Sulphur',
doctype="Agriculture Analysis Criteria",
title="Sulphur",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Boron',
doctype="Agriculture Analysis Criteria",
title="Boron",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Copper',
doctype="Agriculture Analysis Criteria",
title="Copper",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Iron',
doctype="Agriculture Analysis Criteria",
title="Iron",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Manganese',
doctype="Agriculture Analysis Criteria",
title="Manganese",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Zinc',
doctype="Agriculture Analysis Criteria",
title="Zinc",
standard=1,
linked_doctype='Plant Analysis'),
linked_doctype="Plant Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Depth (in cm)',
doctype="Agriculture Analysis Criteria",
title="Depth (in cm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Soil pH',
doctype="Agriculture Analysis Criteria",
title="Soil pH",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Salt Concentration (%)',
doctype="Agriculture Analysis Criteria",
title="Salt Concentration (%)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Organic Matter (%)',
doctype="Agriculture Analysis Criteria",
title="Organic Matter (%)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='CEC (Cation Exchange Capacity) (MAQ/100mL)',
doctype="Agriculture Analysis Criteria",
title="CEC (Cation Exchange Capacity) (MAQ/100mL)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Potassium Saturation (%)',
doctype="Agriculture Analysis Criteria",
title="Potassium Saturation (%)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Calcium Saturation (%)',
doctype="Agriculture Analysis Criteria",
title="Calcium Saturation (%)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Manganese Saturation (%)',
doctype="Agriculture Analysis Criteria",
title="Manganese Saturation (%)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Nirtogen (ppm)',
doctype="Agriculture Analysis Criteria",
title="Nirtogen (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Phosphorous (ppm)',
doctype="Agriculture Analysis Criteria",
title="Phosphorous (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Potassium (ppm)',
doctype="Agriculture Analysis Criteria",
title="Potassium (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Calcium (ppm)',
doctype="Agriculture Analysis Criteria",
title="Calcium (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Magnesium (ppm)',
doctype="Agriculture Analysis Criteria",
title="Magnesium (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Sulphur (ppm)',
doctype="Agriculture Analysis Criteria",
title="Sulphur (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Copper (ppm)',
doctype="Agriculture Analysis Criteria",
title="Copper (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Iron (ppm)',
doctype="Agriculture Analysis Criteria",
title="Iron (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Manganese (ppm)',
doctype="Agriculture Analysis Criteria",
title="Manganese (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Zinc (ppm)',
doctype="Agriculture Analysis Criteria",
title="Zinc (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Aluminium (ppm)',
doctype="Agriculture Analysis Criteria",
title="Aluminium (ppm)",
standard=1,
linked_doctype='Soil Analysis'),
linked_doctype="Soil Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Water pH',
doctype="Agriculture Analysis Criteria",
title="Water pH",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Conductivity (mS/cm)',
doctype="Agriculture Analysis Criteria",
title="Conductivity (mS/cm)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Hardness (mg/CaCO3)',
doctype="Agriculture Analysis Criteria",
title="Hardness (mg/CaCO3)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Turbidity (NTU)',
doctype="Agriculture Analysis Criteria",
title="Turbidity (NTU)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Odor',
doctype="Agriculture Analysis Criteria",
title="Odor",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Color',
doctype="Agriculture Analysis Criteria",
title="Color",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Nitrate (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Nitrate (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Nirtite (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Nirtite (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Calcium (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Calcium (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Magnesium (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Magnesium (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Sulphate (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Sulphate (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Boron (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Boron (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Copper (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Copper (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Iron (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Iron (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Manganese (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Manganese (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Zinc (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Zinc (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Chlorine (mg/L)',
doctype="Agriculture Analysis Criteria",
title="Chlorine (mg/L)",
standard=1,
linked_doctype='Water Analysis'),
linked_doctype="Water Analysis",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Bulk Density',
doctype="Agriculture Analysis Criteria",
title="Bulk Density",
standard=1,
linked_doctype='Soil Texture'),
linked_doctype="Soil Texture",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Field Capacity',
doctype="Agriculture Analysis Criteria",
title="Field Capacity",
standard=1,
linked_doctype='Soil Texture'),
linked_doctype="Soil Texture",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Wilting Point',
doctype="Agriculture Analysis Criteria",
title="Wilting Point",
standard=1,
linked_doctype='Soil Texture'),
linked_doctype="Soil Texture",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Hydraulic Conductivity',
doctype="Agriculture Analysis Criteria",
title="Hydraulic Conductivity",
standard=1,
linked_doctype='Soil Texture'),
linked_doctype="Soil Texture",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Organic Matter',
doctype="Agriculture Analysis Criteria",
title="Organic Matter",
standard=1,
linked_doctype='Soil Texture'),
linked_doctype="Soil Texture",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Temperature High',
doctype="Agriculture Analysis Criteria",
title="Temperature High",
standard=1,
linked_doctype='Weather'),
linked_doctype="Weather",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Temperature Low',
doctype="Agriculture Analysis Criteria",
title="Temperature Low",
standard=1,
linked_doctype='Weather'),
linked_doctype="Weather",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Temperature Average',
doctype="Agriculture Analysis Criteria",
title="Temperature Average",
standard=1,
linked_doctype='Weather'),
linked_doctype="Weather",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Dew Point',
standard=1,
linked_doctype='Weather'),
doctype="Agriculture Analysis Criteria", title="Dew Point", standard=1, linked_doctype="Weather"
),
dict(
doctype='Agriculture Analysis Criteria',
title='Precipitation Received',
doctype="Agriculture Analysis Criteria",
title="Precipitation Received",
standard=1,
linked_doctype='Weather'),
linked_doctype="Weather",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Humidity',
standard=1,
linked_doctype='Weather'),
doctype="Agriculture Analysis Criteria", title="Humidity", standard=1, linked_doctype="Weather"
),
dict(
doctype='Agriculture Analysis Criteria',
title='Pressure',
standard=1,
linked_doctype='Weather'),
doctype="Agriculture Analysis Criteria", title="Pressure", standard=1, linked_doctype="Weather"
),
dict(
doctype='Agriculture Analysis Criteria',
title='Insolation/ PAR (Photosynthetically Active Radiation)',
doctype="Agriculture Analysis Criteria",
title="Insolation/ PAR (Photosynthetically Active Radiation)",
standard=1,
linked_doctype='Weather'),
linked_doctype="Weather",
),
dict(
doctype='Agriculture Analysis Criteria',
title='Degree Days',
doctype="Agriculture Analysis Criteria",
title="Degree Days",
standard=1,
linked_doctype='Weather')
linked_doctype="Weather",
),
]
insert_record(records)