chore: whitespace cleanup from codebase

This commit is contained in:
Ankush Menat
2021-08-19 14:33:03 +05:30
parent e536f6d13f
commit 9bb69e711a
1218 changed files with 1391 additions and 1643 deletions

View File

@@ -22,9 +22,9 @@ class AcademicTerm(Document):
and getdate(self.term_start_date) > getdate(self.term_end_date):
frappe.throw(_("The Term End Date cannot be earlier than the Term Start Date. Please correct the dates and try again."))
# Check that the start of the term is not before the start of the academic year
# Check that the start of the term is not before the start of the academic year
# and end of term is not after the end of the academic year"""
year = frappe.get_doc("Academic Year",self.academic_year)
if self.term_start_date and getdate(year.year_start_date) and (getdate(self.term_start_date) < getdate(year.year_start_date)):
frappe.throw(_("The Term Start Date cannot be earlier than the Year Start Date of the Academic Year to which the term is linked (Academic Year {}). Please correct the dates and try again.").format(self.academic_year))

View File

@@ -22,4 +22,4 @@ def get_data():
'items': ['Assessment Plan', 'Assessment Result']
}
]
}
}

View File

@@ -21,4 +21,4 @@ QUnit.test('Test: Academic Term', function(assert){
},
() => done()
]);
});
});

View File

@@ -1,2 +1,2 @@
frappe.ui.form.on("Academic Year", {
});
});

View File

@@ -22,4 +22,4 @@ def get_data():
'items': ['Assessment Plan', 'Assessment Result']
}
]
}
}

View File

@@ -20,4 +20,4 @@ QUnit.test('Test: Academic Year', function(assert){
},
() => done()
]);
});
});

View File

@@ -53,4 +53,4 @@ let get_topics_without_article = function(article) {
method: 'erpnext.education.doctype.article.article.get_topics_without_article',
args: {'article': article}
});
};
};

View File

@@ -18,4 +18,4 @@ def get_topics_without_article(article):
topic_contents = [tc.content for tc in topic.topic_content]
if not topic_contents or article not in topic_contents:
data.append(topic.name)
return data
return data

View File

@@ -12,4 +12,4 @@ STD_CRITERIA = ["total", "total score", "total grade", "maximum score", "score",
class AssessmentCriteria(Document):
def validate(self):
if self.assessment_criteria.lower() in STD_CRITERIA:
frappe.throw(_("Can't create standard criteria. Please rename the criteria"))
frappe.throw(_("Can't create standard criteria. Please rename the criteria"))

View File

@@ -13,4 +13,4 @@ QUnit.test('Test: Assessment Criteria', function(assert){
},
() => done()
]);
});
});

View File

@@ -12,4 +12,4 @@ QUnit.test('Test: Assessment Criteria Group', function(assert){
},
() => done()
]);
});
});

View File

@@ -12,4 +12,4 @@ def get_data():
'items': ['Assessment Plan', 'Assessment Result']
}
]
}
}

View File

@@ -1,3 +1,3 @@
frappe.treeview_settings["Assessment Group"] = {
}
}

View File

@@ -62,4 +62,4 @@ frappe.map_group = {
() => frappe.click_button('Create New'),
]);
}
};
};

View File

@@ -75,4 +75,4 @@ frappe.ui.form.on('Assessment Plan', {
maximum_assessment_score: function(frm) {
frm.trigger('course');
}
});
});

View File

@@ -18,4 +18,4 @@ def get_data():
'items': ['Assessment Plan Status']
}
]
}
}

View File

@@ -122,4 +122,4 @@ frappe.ui.form.on('Assessment Result Detail', {
});
}
}
});
});

View File

@@ -42,7 +42,3 @@ class AssessmentResult(Document):
"student":self.student, "assessment_plan":self.assessment_plan, "docstatus":("!=", 2)})
if assessment_result:
frappe.throw(_("Assessment Result record {0} already exists.").format(getlink("Assessment Result",assessment_result[0].name)))

View File

@@ -11,4 +11,4 @@ def get_data():
'items': ['Final Assessment Grades', 'Course wise Assessment Report']
}
]
}
}

View File

@@ -70,4 +70,4 @@ QUnit.test('Test: Assessment Result', function(assert){
() => done()
]);
});
});

View File

@@ -16,4 +16,3 @@ class TestAssessmentResult(unittest.TestCase):
grade = get_grade("_Test Grading Scale", 70)
self.assertEqual("B", grade)

View File

@@ -7,4 +7,4 @@ import frappe
from frappe.model.document import Document
class AssessmentResultTool(Document):
pass
pass

View File

@@ -26,4 +26,4 @@ QUnit.test('Test: Assessment Result Tool', function(assert){
},
() => done()
]);
});
});

View File

@@ -76,4 +76,4 @@ let get_programs_without_course = function(course) {
method: 'erpnext.education.doctype.course.course.get_programs_without_course',
args: {'course': course}
});
}
}

View File

@@ -53,4 +53,4 @@ def get_programs_without_course(course):
courses = [c.course for c in program.courses]
if not courses or course not in courses:
data.append(program.name)
return data
return data

View File

@@ -20,4 +20,4 @@ def get_data():
'items': ['Assessment Plan', 'Assessment Result']
},
]
}
}

View File

@@ -33,4 +33,4 @@ QUnit.test('test course', function(assert) {
},
() => done()
]);
});
});

View File

@@ -16,4 +16,4 @@ class CourseActivity(Document):
if frappe.db.exists("Course Enrollment", self.enrollment):
return True
else:
frappe.throw(_("Course Enrollment {0} does not exists").format(self.enrollment))
frappe.throw(_("Course Enrollment {0} does not exists").format(self.enrollment))

View File

@@ -91,4 +91,4 @@ def check_activity_exists(enrollment, content_type, content):
if activity:
return activity[0].name
else:
return None
return None

View File

@@ -12,4 +12,4 @@ def get_data():
'items': ['Course Activity', 'Quiz Activity']
}
]
}
}

View File

@@ -39,6 +39,3 @@ class TestCourseEnrollment(unittest.TestCase):
doc = frappe.get_doc("Program Enrollment", entry.name)
doc.cancel()
doc.delete()

View File

@@ -13,4 +13,4 @@ frappe.ui.form.on("Course Schedule", {
}).addClass("btn-primary");
}
}
});
});

View File

@@ -14,11 +14,11 @@ class CourseSchedule(Document):
self.validate_course()
self.validate_date()
self.validate_overlap()
def set_title(self):
"""Set document Title"""
self.title = self.course + " by " + (self.instructor_name if self.instructor_name else self.instructor)
def validate_course(self):
group_based_on, course = frappe.db.get_value("Student Group", self.student_group, ["group_based_on", "course"])
if group_based_on == "Course":
@@ -28,23 +28,22 @@ class CourseSchedule(Document):
"""Validates if from_time is greater than to_time"""
if self.from_time > self.to_time:
frappe.throw(_("From Time cannot be greater than To Time."))
def validate_overlap(self):
"""Validates overlap for Student Group, Instructor, Room"""
from erpnext.education.utils import validate_overlap_for
#Validate overlapping course schedules.
if self.student_group:
validate_overlap_for(self, "Course Schedule", "student_group")
validate_overlap_for(self, "Course Schedule", "instructor")
validate_overlap_for(self, "Course Schedule", "room")
#validate overlapping assessment schedules.
if self.student_group:
validate_overlap_for(self, "Assessment Plan", "student_group")
validate_overlap_for(self, "Assessment Plan", "room")
validate_overlap_for(self, "Assessment Plan", "supervisor", self.instructor)

View File

@@ -12,4 +12,4 @@ def get_data():
'items': ['Student Attendance']
}
]
}
}

View File

@@ -17,28 +17,28 @@ class TestCourseSchedule(unittest.TestCase):
def test_student_group_conflict(self):
cs1 = make_course_schedule_test_record(simulate= True)
cs2 = make_course_schedule_test_record(schedule_date=cs1.schedule_date, from_time= cs1.from_time,
cs2 = make_course_schedule_test_record(schedule_date=cs1.schedule_date, from_time= cs1.from_time,
to_time= cs1.to_time, instructor="_Test Instructor 2", room=frappe.get_all("Room")[1].name, do_not_save= 1)
self.assertRaises(OverlapError, cs2.save)
def test_instructor_conflict(self):
cs1 = make_course_schedule_test_record(simulate= True)
cs2 = make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time,
cs2 = make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time,
student_group="Course-TC101-2014-2015 (_Test Academic Term)", room=frappe.get_all("Room")[1].name, do_not_save= 1)
self.assertRaises(OverlapError, cs2.save)
def test_room_conflict(self):
cs1 = make_course_schedule_test_record(simulate= True)
cs2 = make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time,
cs2 = make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time,
student_group="Course-TC101-2014-2015 (_Test Academic Term)", instructor="_Test Instructor 2", do_not_save= 1)
self.assertRaises(OverlapError, cs2.save)
def test_no_conflict(self):
cs1 = make_course_schedule_test_record(simulate= True)
make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time,
make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time,
student_group="Course-TC102-2014-2015 (_Test Academic Term)", instructor="_Test Instructor 2", room=frappe.get_all("Room")[1].name)
def make_course_schedule_test_record(**args):
@@ -49,12 +49,12 @@ def make_course_schedule_test_record(**args):
course_schedule.course = args.course or "TC101"
course_schedule.instructor = args.instructor or "_Test Instructor"
course_schedule.room = args.room or frappe.get_all("Room")[0].name
course_schedule.schedule_date = args.schedule_date or today()
course_schedule.from_time = args.from_time or to_timedelta("01:00:00")
course_schedule.to_time = args.to_time or course_schedule.from_time + datetime.timedelta(hours= 1)
if not args.do_not_save:
if args.simulate:
while True:

View File

@@ -41,4 +41,4 @@ frappe.ui.form.on('Course Scheduling Tool', {
});
});
}
});
});

View File

@@ -36,4 +36,4 @@ class EducationSettings(Document):
make_property_setter('Instructor', "naming_series", "hidden", 1, "Check", validate_fields_for_doctype=False)
def update_website_context(context):
context["lms_enabled"] = frappe.get_doc("Education Settings").enable_lms
context["lms_enabled"] = frappe.get_doc("Education Settings").enable_lms

View File

@@ -130,4 +130,4 @@ frappe.ui.form.on('Fee Schedule Student Group', {
});
}
}
})
})

View File

@@ -10,4 +10,4 @@ def get_data():
'items': ['Fees']
}
]
}
}

View File

@@ -69,4 +69,4 @@ frappe.ui.form.on('Fee Component', {
}
frm.set_value('total_amount', total_amount);
}
});
});

View File

@@ -11,13 +11,13 @@ from frappe.model.mapper import get_mapped_doc
class FeeStructure(Document):
def validate(self):
self.calculate_total()
def calculate_total(self):
"""Calculates total amount."""
self.total_amount = 0
for d in self.components:
self.total_amount += d.amount
@frappe.whitelist()
def make_fee_schedule(source_name, target_doc=None):
@@ -31,4 +31,4 @@ def make_fee_schedule(source_name, target_doc=None):
"Fee Component": {
"doctype": "Fee Component"
}
}, target_doc)
}, target_doc)

View File

@@ -12,4 +12,4 @@ def get_data():
'items': ['Fees', 'Fee Schedule']
}
]
}
}

View File

@@ -132,4 +132,4 @@ def get_list_context(context=None):
"title": _("Fees"),
"get_list": get_fee_list,
"row_template": "templates/includes/fee/fee_row.html"
}
}

View File

@@ -9,4 +9,4 @@ frappe.listview_settings['Fees'] = {
return [__("Overdue"), "red", "outstanding_amount,>,0|due_date,<=,Today"];
}
}
};
};

View File

@@ -17,4 +17,4 @@ class GradingScale(Document):
else:
thresholds.append(cint(d.threshold))
if 0 not in thresholds:
frappe.throw(_("Please define grade for Threshold 0%"))
frappe.throw(_("Please define grade for Threshold 0%"))

View File

@@ -99,4 +99,4 @@ QUnit.test('Test: Grading Scale', function(assert){
() => done()
]);
});
});

View File

@@ -31,4 +31,4 @@ QUnit.test('Test: Guardian', function(assert){
},
() => done()
]);
});
});

View File

@@ -61,4 +61,4 @@ frappe.ui.form.on("Instructor", {
};
});
}
});
});

View File

@@ -21,4 +21,4 @@ def get_data():
'items': ['Student Group']
}
]
}
}

View File

@@ -4,5 +4,5 @@
cur_frm.add_fetch('fee_structure', 'total_amount', 'amount');
frappe.ui.form.on("Program", "refresh", function(frm) {
});
});

View File

@@ -11,4 +11,4 @@ class Program(Document):
def get_course_list(self):
program_course_list = self.courses
course_list = [frappe.get_doc("Course", program_course.course) for program_course in program_course_list]
return course_list
return course_list

View File

@@ -21,4 +21,4 @@ def get_data():
'items': ['Assessment Plan', 'Assessment Result']
}
]
}
}

View File

@@ -31,4 +31,4 @@ QUnit.test('Test: Program', function(assert){
},
() => done()
]);
});
});

View File

@@ -88,4 +88,4 @@ def setup_program():
course_list = [course['course_name'] for course in test_data['course']]
program = make_program_and_linked_courses(test_data['program_name'], course_list)
return program
return program

View File

@@ -101,4 +101,4 @@ frappe.ui.form.on('Program Enrollment Course', {
return { filters: [['Course', 'name', 'not in', course_list]] };
};
}
});
});

View File

@@ -174,4 +174,3 @@ def get_students(doctype, txt, searchfield, start, page_len, filters):
tuple(students + ["%%%s%%" % txt, start, page_len]
)
)

View File

@@ -16,4 +16,4 @@ def get_data():
'items': ['Student and Guardian Contact Details']
}
]
}
}

View File

@@ -32,4 +32,4 @@ class TestProgramEnrollment(unittest.TestCase):
for entry in frappe.db.get_all("Program Enrollment"):
doc = frappe.get_doc("Program Enrollment", entry.name)
doc.cancel()
doc.delete()
doc.delete()

View File

@@ -43,4 +43,4 @@ class Question(Document):
elif len(answers) == 1:
return answers[0]
else:
return answers
return answers

View File

@@ -68,4 +68,4 @@ let get_topics_without_quiz = function(quiz) {
method: 'erpnext.education.doctype.quiz.quiz.get_topics_without_quiz',
args: {'quiz': quiz}
});
};
};

View File

@@ -68,4 +68,4 @@ def get_topics_without_quiz(quiz):
topic_contents = [tc.content for tc in topic.topic_content]
if not topic_contents or quiz not in topic_contents:
data.append(topic.name)
return data
return data

View File

@@ -1,2 +1,2 @@
frappe.ui.form.on("Room", {
});
});

View File

@@ -16,4 +16,4 @@ def get_data():
'items': ['Assessment Plan']
}
]
}
}

View File

@@ -60,4 +60,4 @@ frappe.ui.form.on('Student Sibling', {
return { filters: [['Student', 'name', 'not in', sibling_list]] };
};
}
});
});

View File

@@ -1,3 +1,3 @@
frappe.listview_settings['Student'] = {
add_fields: [ "image"]
}
}

View File

@@ -68,4 +68,4 @@ def get_student(email):
student_id = frappe.get_all("Student", {"student_email_id": email}, ["name"])[0].name
return frappe.get_doc("Student", student_id)
except IndexError:
return None
return None

View File

@@ -41,4 +41,4 @@
</div>
</div>
</a>
</div>
</div>

View File

@@ -37,4 +37,4 @@ QUnit.test('Test: Student Admission', function(assert) {
},
() => done()
]);
});
});

View File

@@ -59,4 +59,4 @@ frappe.ui.form.on('Student Sibling', {
frm.add_fetch("student", "gender", "gender");
frm.add_fetch("student", "date_of_birth", "date_of_birth");
}
});
});

View File

@@ -49,7 +49,7 @@ class StudentApplicant(Document):
frappe.throw(_("Please select Student Admission which is mandatory for the paid student applicant"))
def validation_from_student_admission(self):
student_admission = get_student_admission_data(self.student_admission, self.program)
if student_admission and student_admission.min_age and \

View File

@@ -18,4 +18,4 @@ frappe.listview_settings['Student Applicant'] = {
return [__("Admitted"), "blue", "application_status,=,Admitted"];
}
}
};
};

View File

@@ -92,4 +92,4 @@ QUnit.test('Test: Student Applicant', function(assert){
},
() => done()
]);
});
});

View File

@@ -84,4 +84,4 @@ QUnit.test('Make Students', function(assert){
},
() => done()
]);
});
});

View File

@@ -107,4 +107,4 @@ QUnit.test('test student applicant', function(assert){
},
() => done()
]);
});
});

View File

@@ -2,4 +2,4 @@
// For license information, please see license.txt
cur_frm.add_fetch("course_schedule", "schedule_date", "date");
cur_frm.add_fetch("course_schedule", "student_group", "student_group")
cur_frm.add_fetch("course_schedule", "student_group", "student_group")

View File

@@ -9,4 +9,4 @@ def get_data():
'items': ['Student Monthly Attendance Sheet', 'Student Batch-Wise Attendance']
}
]
}
}

View File

@@ -8,4 +8,4 @@ frappe.listview_settings['Student Attendance'] = {
return [__("Present"), "green", "status,=,Present"];
}
}
};
};

View File

@@ -28,4 +28,4 @@ QUnit.test('Test: Student Attendance', function(assert){
() => done()
]);
});
});

View File

@@ -38,4 +38,4 @@ def get_student_attendance_records(based_on, date=None, student_group=None, cour
if student.student == attendance.student:
student.status = attendance.status
return student_list
return student_list

View File

@@ -82,4 +82,4 @@ QUnit.test('Test: Student Attendace Tool', function(assert){
() => done()
]);
});
});

View File

@@ -142,4 +142,4 @@ frappe.ui.form.on('Student Group Instructor', {
return { filters: [['Instructor', 'name', 'not in', instructor_list]] };
};
}
});
});

View File

@@ -128,4 +128,3 @@ def fetch_students(doctype, txt, searchfield, start, page_len, filters):
order by idx desc, name
limit %s, %s""".format(searchfield),
tuple(["%%%s%%" % txt, "%%%s%%" % txt, start, page_len]))

View File

@@ -16,4 +16,4 @@ def get_data():
'items': ['Course Schedule']
}
]
}
}

View File

@@ -53,4 +53,4 @@ QUnit.test('Test: Student Group', function(assert){
() => done()
]);
});
});

View File

@@ -37,4 +37,4 @@ frappe.ui.form.on("Student Group Creation Tool", "onload", function(frm){
}
};
});
});
});

View File

@@ -76,4 +76,4 @@ class StudentGroupCreationTool(Document):
student_group.append('students', student)
student_group.save()
frappe.msgprint(_("{0} Student Groups created.").format(l))
frappe.msgprint(_("{0} Student Groups created.").format(l))

View File

@@ -81,4 +81,4 @@ QUnit.test('Test: Student Group Creation Tool', function(assert){
() => done()
]);
});
});

View File

@@ -7,4 +7,4 @@ import frappe
from frappe.model.document import Document
class StudentGroupStudent(Document):
pass
pass

View File

@@ -8,4 +8,4 @@ def get_data():
'items': ['Student Attendance']
}
]
}
}

View File

@@ -66,4 +66,4 @@ QUnit.test('Test: Student Leave Application', function(assert){
() => done()
]);
});
});

View File

@@ -112,4 +112,4 @@ def create_holiday_list():
company = get_default_company() or frappe.get_all('Company')[0].name
frappe.db.set_value('Company', company, 'default_holiday_list', holiday_list)
return holiday_list
return holiday_list

View File

@@ -32,4 +32,4 @@ QUnit.test('Test: Student Log', function(assert){
},
() => done()
]);
});
});

View File

@@ -12,67 +12,67 @@
padding: 0.75in;
margin: auto;
}
.print-format.landscape {
max-width: 11.69in;
padding: 0.2in;
}
.page-break {
padding: 30px 0px;
border-bottom: 1px dashed #888;
}
.page-break:first-child {
padding-top: 0px;
}
.page-break:last-child {
border-bottom: 0px;
}
/* mozilla hack for images in table */
body:last-child .print-format td img {
width: 100% !important;
}
@media(max-width: 767px) {
.print-format {
padding: 0.2in;
}
}
}
@media print {
.print-format p {
margin-left: 1px;
margin-right: 1px;
}
}
.data-field {
margin-top: 5px;
margin-bottom: 5px;
}
.data-field .value {
word-wrap: break-word;
}
.important .value {
font-size: 120%;
font-weight: bold;
}
.important label {
line-height: 1.8;
margin: 0px;
}
.table {
margin: 20px 0px;
}
.square-image {
width: 100%;
height: 0;
@@ -83,88 +83,88 @@
background-position: center center;
border-radius: 4px;
}
.print-item-image {
object-fit: contain;
}
.pdf-variables,
.pdf-variable,
.visible-pdf {
display: none !important;
}
.print-format {
font-size: 9pt;
font-family: "Helvetica Neue", Helvetica, Arial, "Open Sans", sans-serif;
-webkit-print-color-adjust:exact;
}
.page-break {
page-break-after: always;
}
.print-heading {
border-bottom: 1px solid #aaa;
margin-bottom: 10px;
}
.print-heading h2 {
margin: 0px;
}
.print-heading h4 {
margin-top: 5px;
}
table.no-border, table.no-border td {
border: 0px;
}
.print-format label {
/* wkhtmltopdf breaks label into multiple lines when it is inline-block */
display: block;
}
.print-format img {
max-width: 100%;
}
.print-format table td > .primary:first-child {
font-weight: bold;
}
.print-format td, .print-format th {
vertical-align: top !important;
padding: 6px !important;
}
.print-format p {
margin: 3px 0px 3px;
}
table td div {
/* needed to avoid partial cutting of text between page break in wkhtmltopdf */
page-break-inside: avoid !important;
}
/* hack for webkit specific browser */
@media (-webkit-min-device-pixel-ratio:0) {
thead, tfoot { display: table-row-group; }
}
[document-status] {
margin-bottom: 5mm;
}
.signature-img {
background: #fff;
border-radius: 3px;
margin-top: 5px;
max-height: 150px;
}
.print-heading {
text-align: right;
text-transform: uppercase;
@@ -173,16 +173,16 @@
margin-bottom: 20px;
border-bottom: 1px solid #d1d8dd;
}
.print-heading h2 {
font-size: 24px;
}
.print-format th {
background-color: #eee !important;
border-bottom: 0px !important;
}
/* modern format: for-test */
.pbi_avoid {
@@ -344,7 +344,7 @@
<br>
<div class="row section-break pbi_avoid">
<div class="col-xs-6 column-break">
<div class="col-xs-6 column-break">
<h4>{{ _("Student Attendance")}}</h4> <br>
<div>
Present {{ doc.attendance.get("Present") if doc.attendance.get("Present") != None else '0' }} days
@@ -352,7 +352,7 @@
</div>
</div>
<div class="col-xs-6 column-break">
<div class="col-xs-6 column-break">
<h4>{{ _("Parents Teacher Meeting Attendance")}}</h4> <br>
<div>
Present {{ doc.parents_attendance if doc.parents_attendance != None else '0' }}

View File

@@ -52,4 +52,4 @@ let get_courses_without_topic = function(topic) {
method: 'erpnext.education.doctype.topic.topic.get_courses_without_topic',
args: {'topic': topic}
});
};
};

View File

@@ -56,4 +56,4 @@ def add_content_to_topics(content_type, content, topics):
topic.save()
frappe.db.commit()
frappe.msgprint(_('{0} {1} has been added to all the selected topics successfully.').format(content_type, frappe.bold(content)),
title=_('Topics updated'), indicator='green')
title=_('Topics updated'), indicator='green')

View File

@@ -121,4 +121,3 @@ def get_chart_data(data):
},
'type': 'bar'
}

View File

@@ -9,4 +9,4 @@ frappe.query_reports["Student Batch-Wise Attendance"] = {
"default": frappe.datetime.get_today(),
"reqd": 1
}]
}
}

View File

@@ -67,4 +67,4 @@ def get_student_attendance(student_group, date):
student_group= %s and date= %s and docstatus = 1 and
(course_schedule is Null or course_schedule='') group by status""",
(student_group, date), as_dict=1)
return student_attendance
return student_attendance

View File

@@ -39,4 +39,4 @@ frappe.query_reports["Student Monthly Attendance Sheet"] = {
}
});
}
}
}

View File

@@ -1,3 +1,3 @@
frappe.ready(function() {
// bind events here
})
})