blob: 304bc3d2c3cd897caa99ded5f810251ffe402146 [file] [log] [blame]
Neil Trini Lasrado06724592016-08-22 12:57:09 +05301# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
2# License: GNU General Public License v3. See license.txt
Aditya Hasef3c22f32019-01-22 18:22:20 +05303from __future__ import unicode_literals
Neil Trini Lasrado06724592016-08-22 12:57:09 +05304
Chillar Anand915b3432021-09-02 16:44:59 +05305import json
Neil Trini Lasrado06724592016-08-22 12:57:09 +05306import random
Chillar Anand915b3432021-09-02 16:44:59 +05307from datetime import datetime
8
9import frappe
10from frappe.utils.make_random import get_random
11
12from erpnext.demo.setup.setup_data import import_json
13
Neil Trini Lasrado06724592016-08-22 12:57:09 +053014
15def setup_data():
16 frappe.flags.mute_emails = True
17 make_masters()
18 setup_item()
19 make_student_applicants()
20 make_student_group()
21 make_fees_category()
22 make_fees_structure()
Manas Solankif60bd602017-06-01 18:30:35 +053023 make_assessment_groups()
Neil Trini Lasrado06724592016-08-22 12:57:09 +053024 frappe.db.commit()
25 frappe.clear_cache()
26
27def make_masters():
28 import_json("Room")
29 import_json("Department")
30 import_json("Instructor")
31 import_json("Course")
32 import_json("Program")
Manas Solankif60bd602017-06-01 18:30:35 +053033 import_json("Student Batch Name")
34 import_json("Assessment Criteria")
35 import_json("Grading Scale")
Neil Trini Lasrado06724592016-08-22 12:57:09 +053036 frappe.db.commit()
37
38def setup_item():
Manas Solanki966f1412017-11-23 15:22:10 +053039 items = json.loads(open(frappe.get_app_path('erpnext', 'demo', 'data', 'item_education.json')).read())
Neil Trini Lasrado06724592016-08-22 12:57:09 +053040 for i in items:
41 item = frappe.new_doc('Item')
42 item.update(i)
43 item.min_order_qty = random.randint(10, 30)
Manas Solanki087a2252018-05-04 16:02:38 +053044 item.item_defaults[0].default_warehouse = frappe.get_all('Warehouse',
45 filters={'warehouse_name': item.item_defaults[0].default_warehouse}, limit=1)[0].name
Neil Trini Lasrado06724592016-08-22 12:57:09 +053046 item.insert()
47
48def make_student_applicants():
49 blood_group = ["A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"]
50 male_names = []
51 female_names = []
52
53 file_path = get_json_path("Random Student Data")
54 with open(file_path, "r") as open_file:
55 random_student_data = json.loads(open_file.read())
56 count = 1
57
58 for d in random_student_data:
59 if d.get('gender') == "Male":
60 male_names.append(d.get('first_name').title())
61
62 if d.get('gender') == "Female":
63 female_names.append(d.get('first_name').title())
64
65 for idx, d in enumerate(random_student_data):
66 student_applicant = frappe.new_doc("Student Applicant")
67 student_applicant.first_name = d.get('first_name').title()
68 student_applicant.last_name = d.get('last_name').title()
69 student_applicant.image = d.get('image')
70 student_applicant.gender = d.get('gender')
71 student_applicant.program = get_random("Program")
72 student_applicant.blood_group = random.choice(blood_group)
73 year = random.randint(1990, 1998)
74 month = random.randint(1, 12)
75 day = random.randint(1, 28)
76 student_applicant.date_of_birth = datetime(year, month, day)
77 student_applicant.mother_name = random.choice(female_names) + " " + d.get('last_name').title()
78 student_applicant.father_name = random.choice(male_names) + " " + d.get('last_name').title()
79 if student_applicant.gender == "Male":
80 student_applicant.middle_name = random.choice(male_names)
81 else:
82 student_applicant.middle_name = random.choice(female_names)
83 student_applicant.student_email_id = d.get('first_name') + "_" + \
84 student_applicant.middle_name + "_" + d.get('last_name') + "@example.com"
85 if count <5:
86 student_applicant.insert()
87 frappe.db.commit()
88 else:
89 student_applicant.submit()
90 frappe.db.commit()
91 count+=1
92
93def make_student_group():
Manas Solankif60bd602017-06-01 18:30:35 +053094 for term in frappe.db.get_list("Academic Term"):
95 for program in frappe.db.get_list("Program"):
96 sg_tool = frappe.new_doc("Student Group Creation Tool")
97 sg_tool.academic_year = "2017-18"
98 sg_tool.academic_term = term.name
99 sg_tool.program = program.name
100 for d in sg_tool.get_courses():
101 d = frappe._dict(d)
102 student_group = frappe.new_doc("Student Group")
103 student_group.student_group_name = d.student_group_name
104 student_group.group_based_on = d.group_based_on
105 student_group.program = program.name
106 student_group.course = d.course
107 student_group.batch = d.batch
108 student_group.academic_term = term.name
109 student_group.academic_year = "2017-18"
110 student_group.save()
111 frappe.db.commit()
Neil Trini Lasrado06724592016-08-22 12:57:09 +0530112
113def make_fees_category():
114 fee_type = ["Tuition Fee", "Hostel Fee", "Logistics Fee",
115 "Medical Fee", "Mess Fee", "Security Deposit"]
116
117 fee_desc = {"Tuition Fee" : "Curricular activities which includes books, notebooks and faculty charges" ,
118 "Hostel Fee" : "Stay of students in institute premises",
119 "Logistics Fee" : "Lodging boarding of the students" ,
120 "Medical Fee" : "Medical welfare of the students",
121 "Mess Fee" : "Food and beverages for your ward",
122 "Security Deposit" : "In case your child is found to have damaged institutes property"
123 }
124
125 for i in fee_type:
126 fee_category = frappe.new_doc("Fee Category")
127 fee_category.category_name = i
128 fee_category.description = fee_desc[i]
129 fee_category.insert()
130 frappe.db.commit()
131
132def make_fees_structure():
133 for d in frappe.db.get_list("Program"):
134 program = frappe.get_doc("Program", d.name)
Manas Solankif60bd602017-06-01 18:30:35 +0530135 for academic_term in ["2017-18 (Semester 1)", "2017-18 (Semester 2)", "2017-18 (Semester 3)"]:
Neil Trini Lasrado06724592016-08-22 12:57:09 +0530136 fee_structure = frappe.new_doc("Fee Structure")
137 fee_structure.program = d.name
138 fee_structure.academic_term = random.choice(frappe.db.get_list("Academic Term")).name
139 for j in range(1,4):
140 temp = {"fees_category": random.choice(frappe.db.get_list("Fee Category")).name , "amount" : random.randint(500,1000)}
141 fee_structure.append("components", temp)
142 fee_structure.insert()
143 program.append("fees", {"academic_term": academic_term, "fee_structure": fee_structure.name, "amount": fee_structure.total_amount})
144 program.save()
145 frappe.db.commit()
146
Manas Solankif60bd602017-06-01 18:30:35 +0530147def make_assessment_groups():
148 for year in frappe.db.get_list("Academic Year"):
149 ag = frappe.new_doc('Assessment Group')
150 ag.assessment_group_name = year.name
151 ag.parent_assessment_group = "All Assessment Groups"
152 ag.is_group = 1
153 ag.insert()
154 for term in frappe.db.get_list("Academic Term", filters = {"academic_year": year.name}):
155 ag1 = frappe.new_doc('Assessment Group')
156 ag1.assessment_group_name = term.name
157 ag1.parent_assessment_group = ag.name
158 ag1.is_group = 1
159 ag1.insert()
160 for assessment_group in ['Term I', 'Term II']:
161 ag2 = frappe.new_doc('Assessment Group')
162 ag2.assessment_group_name = ag1.name + " " + assessment_group
163 ag2.parent_assessment_group = ag1.name
164 ag2.insert()
165 frappe.db.commit()
166
167
Neil Trini Lasrado06724592016-08-22 12:57:09 +0530168def get_json_path(doctype):
169 return frappe.get_app_path('erpnext', 'demo', 'data', frappe.scrub(doctype) + '.json')
Aditya Hasef3c22f32019-01-22 18:22:20 +0530170
Neil Trini Lasrado06724592016-08-22 12:57:09 +0530171def weighted_choice(weights):
172 totals = []
173 running_total = 0
174
175 for w in weights:
176 running_total += w
177 totals.append(running_total)
178
179 rnd = random.random() * running_total
180 for i, total in enumerate(totals):
181 if rnd < total:
182 return i