From 43da645be0827624d43e385d117466fdc9fdf3b8 Mon Sep 17 00:00:00 2001 From: scmmishra Date: Wed, 3 Oct 2018 09:30:56 +0530 Subject: [PATCH] Added Web Academy Applicant doctype --- .../doctype/web_academy_applicant/__init__.py | 0 .../test_web_academy_applicant.js | 23 ++ .../test_web_academy_applicant.py | 10 + .../web_academy_applicant.js | 8 + .../web_academy_applicant.json | 320 ++++++++++++++++++ .../web_academy_applicant.py | 48 +++ 6 files changed, 409 insertions(+) create mode 100644 erpnext/education/doctype/web_academy_applicant/__init__.py create mode 100644 erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.js create mode 100644 erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.py create mode 100644 erpnext/education/doctype/web_academy_applicant/web_academy_applicant.js create mode 100644 erpnext/education/doctype/web_academy_applicant/web_academy_applicant.json create mode 100644 erpnext/education/doctype/web_academy_applicant/web_academy_applicant.py diff --git a/erpnext/education/doctype/web_academy_applicant/__init__.py b/erpnext/education/doctype/web_academy_applicant/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.js b/erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.js new file mode 100644 index 0000000000..025a5131c1 --- /dev/null +++ b/erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +// rename this file from _test_[name] to test_[name] to activate +// and remove above this line + +QUnit.test("test: Web Academy Applicant", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially([ + // insert a new Web Academy Applicant + () => frappe.tests.make('Web Academy Applicant', [ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.py b/erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.py new file mode 100644 index 0000000000..1d856749e3 --- /dev/null +++ b/erpnext/education/doctype/web_academy_applicant/test_web_academy_applicant.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +class TestWebAcademyApplicant(unittest.TestCase): + pass diff --git a/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.js b/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.js new file mode 100644 index 0000000000..f498509915 --- /dev/null +++ b/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.js @@ -0,0 +1,8 @@ +// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Web Academy Applicant', { + refresh: function(frm) { + + } +}); diff --git a/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.json b/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.json new file mode 100644 index 0000000000..e8ff98783b --- /dev/null +++ b/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.json @@ -0,0 +1,320 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "autoname": "EDU-LMS-.YYYY.-.#####", + "beta": 0, + "creation": "2018-10-02 13:41:00.788521", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "first_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "First Name", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "middle_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Middle Name", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "last_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Last Name", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "program", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Program", + "length": 0, + "no_copy": 0, + "options": "Program", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "account_details_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Account Details", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "student_email_address", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Student Email Address", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 1, + "translatable": 0, + "unique": 1 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "password", + "fieldtype": "Password", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Password", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "payment_status", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Payment Status", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + } + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2018-10-02 15:01:59.632345", + "modified_by": "Administrator", + "module": "Education", + "name": "Web Academy Applicant", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1, + "track_seen": 0, + "track_views": 0 +} \ No newline at end of file diff --git a/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.py b/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.py new file mode 100644 index 0000000000..a6a94c9733 --- /dev/null +++ b/erpnext/education/doctype/web_academy_applicant/web_academy_applicant.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import print_function, unicode_literals +import frappe +from frappe import _ +from frappe.model.document import Document +from frappe.utils import getdate +from frappe.utils.password import get_decrypted_password + +class WebAcademyApplicant(Document): + def before_insert(self): + # Before a new document is saved + self.check_if_student_account_already_exists(self.student_email_address) + + def after_insert(self): + # After the application is inserted in the database, create a new student + self.create_new_student() + + def check_if_student_account_already_exists(self, email): + # Check if a student account alread exists, if it does, throw an error + get_accounts = frappe.get_all('Student', filters={'student_email_id': email}) + if len(get_accounts) != 0: + frappe.throw('Student with Email {0} already Exists.'.format(self.student_email_address)) + + def create_new_student(self): + student = frappe.get_doc({ + 'doctype': 'Student', + 'student_email_id': self.student_email_address, + 'first_name': self.first_name, + 'last_name': self.last_name, + 'middle_name': self.middle_name + }) + student_user_account = frappe.get_doc({ + 'doctype': 'User', + 'email': self.student_email_address, + 'first_name': self.first_name, + 'last_name': self.last_name, + 'new_passsword': get_decrypted_password(self.doctype, self.name, 'password') + + }) + student.save() + if(self.lms_user == 1): + student_user_account.add_roles("LMS User") + else: + student_user_account.add_roles("Student", "LMS User") + student_user_account.save() \ No newline at end of file