From 50f13e17a7e7d33819ff26d2daf2f9123069df24 Mon Sep 17 00:00:00 2001 From: Vishal Date: Thu, 14 Sep 2017 15:24:24 +0530 Subject: [PATCH] [new] Chapter Doctype Added --- .../non_profit/doctype/chapter/__init__.py | 0 erpnext/non_profit/doctype/chapter/chapter.js | 8 + .../non_profit/doctype/chapter/chapter.json | 337 ++++++++++++++++++ erpnext/non_profit/doctype/chapter/chapter.py | 35 ++ .../doctype/chapter/templates/chapter.html | 66 ++++ .../chapter/templates/chapter_row.html | 17 + .../doctype/chapter/test_chapter.js | 23 ++ .../doctype/chapter/test_chapter.py | 10 + .../doctype/chapter_member/__init__.py | 0 .../chapter_member/chapter_member.json | 162 +++++++++ .../doctype/chapter_member/chapter_member.py | 13 + .../doctype/chapter_message/__init__.py | 0 .../chapter_message/chapter_message.js | 12 + .../chapter_message/chapter_message.json | 152 ++++++++ .../chapter_message/chapter_message.py | 43 +++ .../chapter_message/test_chapter_message.js | 23 ++ .../chapter_message/test_chapter_message.py | 10 + 17 files changed, 911 insertions(+) create mode 100644 erpnext/non_profit/doctype/chapter/__init__.py create mode 100644 erpnext/non_profit/doctype/chapter/chapter.js create mode 100644 erpnext/non_profit/doctype/chapter/chapter.json create mode 100644 erpnext/non_profit/doctype/chapter/chapter.py create mode 100644 erpnext/non_profit/doctype/chapter/templates/chapter.html create mode 100644 erpnext/non_profit/doctype/chapter/templates/chapter_row.html create mode 100644 erpnext/non_profit/doctype/chapter/test_chapter.js create mode 100644 erpnext/non_profit/doctype/chapter/test_chapter.py create mode 100644 erpnext/non_profit/doctype/chapter_member/__init__.py create mode 100644 erpnext/non_profit/doctype/chapter_member/chapter_member.json create mode 100644 erpnext/non_profit/doctype/chapter_member/chapter_member.py create mode 100644 erpnext/non_profit/doctype/chapter_message/__init__.py create mode 100644 erpnext/non_profit/doctype/chapter_message/chapter_message.js create mode 100644 erpnext/non_profit/doctype/chapter_message/chapter_message.json create mode 100644 erpnext/non_profit/doctype/chapter_message/chapter_message.py create mode 100644 erpnext/non_profit/doctype/chapter_message/test_chapter_message.js create mode 100644 erpnext/non_profit/doctype/chapter_message/test_chapter_message.py diff --git a/erpnext/non_profit/doctype/chapter/__init__.py b/erpnext/non_profit/doctype/chapter/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/non_profit/doctype/chapter/chapter.js b/erpnext/non_profit/doctype/chapter/chapter.js new file mode 100644 index 0000000000..c7841e1f11 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/chapter.js @@ -0,0 +1,8 @@ +// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Chapter', { + refresh: function(frm) { + + } +}); diff --git a/erpnext/non_profit/doctype/chapter/chapter.json b/erpnext/non_profit/doctype/chapter/chapter.json new file mode 100644 index 0000000000..b559870e19 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/chapter.json @@ -0,0 +1,337 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 1, + "allow_import": 0, + "allow_rename": 0, + "autoname": "field:title", + "beta": 0, + "creation": "2017-09-14 13:36:03.904702", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "title", + "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": "Title", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "chapter_head", + "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": "Chapter Head", + "length": 0, + "no_copy": 0, + "options": "User", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "introduction", + "fieldtype": "Text Editor", + "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": "Introduction", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "meetup_embed_html", + "fieldtype": "Code", + "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": "Meetup Embed HTML", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "published", + "fieldtype": "Check", + "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": "Published", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "route", + "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": "Route", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "region", + "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": "Region", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "address", + "fieldtype": "Text", + "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": "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": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "members", + "fieldtype": "Table", + "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": "Members", + "length": 0, + "no_copy": 0, + "options": "Chapter Member", + "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, + "unique": 0 + } + ], + "has_web_view": 1, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_published_field": "published", + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2017-09-14 15:16:56.369358", + "modified_by": "Administrator", + "module": "Non Profit", + "name": "Chapter", + "name_case": "Title Case", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 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, + "route": "chapter", + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1, + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/non_profit/doctype/chapter/chapter.py b/erpnext/non_profit/doctype/chapter/chapter.py new file mode 100644 index 0000000000..c93214ba8c --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/chapter.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.website.website_generator import WebsiteGenerator +from frappe.model.document import Document +from frappe import _ + +class Chapter(WebsiteGenerator): + def get_context(self, context): + context.no_cache = True + + def validate(self): + chapter_head = self.chapter_head + chapter = frappe.get_all('Chapter', filters={'published': True}, fields=['chapter_head']) + + # if chapter_head in [d.chapter_head for d in chapter]: + # frappe.throw(_('You are not allow to create more than one Chapter')) + + def enable(self): + chapter = frappe.get_doc('Chapter', frappe.form_dict.name) + chapter.append('members', dict(enable=self.value)) + chapter.save(ignore_permissions=1) + frappe.db.commit() + + +def get_list_context(context): + context.allow_guest = True + context.no_cache = True + context.title = 'All Chapters' + context.no_breadcrumbs = True + context.order_by = 'creation desc' + context.introduction = '

All Chapters

' diff --git a/erpnext/non_profit/doctype/chapter/templates/chapter.html b/erpnext/non_profit/doctype/chapter/templates/chapter.html new file mode 100644 index 0000000000..c2d871c5e7 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/templates/chapter.html @@ -0,0 +1,66 @@ +{% extends "templates/web.html" %} + +{% block page_content %} +

{{ title }}

+

Details

+

{{ introduction }}

+{% if meetup_embed_html %} +{{ meetup_embed_html }} +{% endif %} +

List of Members

+{% if members %} + + + + + + {% for user in members %} + + + + + {% endfor %} +
Member Details
{{ loop.index }} +
+
{{ frappe.db.get_value('User', user.user, 'full_name') }}
+
+ {% if user.website_url %} + {{ user.website_url or '' }} + {% endif %} +
+
+ {% if user.introduction %} + {{ user.introduction }} + {% endif %} +
+
+
+{% else %} +

No member yet.

+{% endif %} + +

Chapter Head

+ + + + + + + + + + + + + +
Name{{ frappe.db.get_value('User', chapter_head, 'full_name') }}
Email{{ frappe.db.get_value('User', chapter_head, 'email') or '' }}
Phone{{ frappe.db.get_value('User', chapter_head, 'phone') or '' }}
+

Address

+

{{ address }}

+ +

Join this Chapter

+

Leave this Chapter

+ + +{% endblock %} + + \ No newline at end of file diff --git a/erpnext/non_profit/doctype/chapter/templates/chapter_row.html b/erpnext/non_profit/doctype/chapter/templates/chapter_row.html new file mode 100644 index 0000000000..042aede17c --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/templates/chapter_row.html @@ -0,0 +1,17 @@ +
+ +

{{ doc.title }}

+

+ {{ frappe.db.get_value('User', chapter_head, 'full_name') }} + + {% if members %} + Members: {{ members|length }} + {% else %} + Members: 0 + {% endif %} + +

+

{{ html2text(doc.introduction[:200]) }}{% if introduction|len > 200 %}...{% endif %}

+
+
+ \ No newline at end of file diff --git a/erpnext/non_profit/doctype/chapter/test_chapter.js b/erpnext/non_profit/doctype/chapter/test_chapter.js new file mode 100644 index 0000000000..e30d6a5bf9 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/test_chapter.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: Chapter", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially([ + // insert a new Chapter + () => frappe.tests.make('Chapter', [ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/erpnext/non_profit/doctype/chapter/test_chapter.py b/erpnext/non_profit/doctype/chapter/test_chapter.py new file mode 100644 index 0000000000..ff1ac9a273 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter/test_chapter.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +class TestChapter(unittest.TestCase): + pass diff --git a/erpnext/non_profit/doctype/chapter_member/__init__.py b/erpnext/non_profit/doctype/chapter_member/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/non_profit/doctype/chapter_member/chapter_member.json b/erpnext/non_profit/doctype/chapter_member/chapter_member.json new file mode 100644 index 0000000000..f1cefd5e75 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_member/chapter_member.json @@ -0,0 +1,162 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2017-09-14 13:38:04.296375", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "user", + "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": "User", + "length": 0, + "no_copy": 0, + "options": "User", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "introduction", + "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": "Introduction", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "website_url", + "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": "Website URL", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "enabled", + "fieldtype": "Check", + "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": "Enabled", + "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, + "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": 1, + "max_attachments": 0, + "modified": "2017-09-14 15:15:02.427559", + "modified_by": "Administrator", + "module": "Non Profit", + "name": "Chapter Member", + "name_case": "", + "owner": "Administrator", + "permissions": [], + "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 +} \ No newline at end of file diff --git a/erpnext/non_profit/doctype/chapter_member/chapter_member.py b/erpnext/non_profit/doctype/chapter_member/chapter_member.py new file mode 100644 index 0000000000..0e0248d26b --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_member/chapter_member.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document + +class ChapterMember(Document): + def get_context(self, context): + context.no_cache = True + + diff --git a/erpnext/non_profit/doctype/chapter_message/__init__.py b/erpnext/non_profit/doctype/chapter_message/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/non_profit/doctype/chapter_message/chapter_message.js b/erpnext/non_profit/doctype/chapter_message/chapter_message.js new file mode 100644 index 0000000000..832c93b3dd --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_message/chapter_message.js @@ -0,0 +1,12 @@ +// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Chapter Message', { + onload: function(frm){ + console.log("here" + frappe.session.user) + chapter_head = frappe.session.user + frappe.db.get_value('Chapter', {chapter_head: chapter_head}, 'name', function(data) { + frm.set_value('chapter', data.name); + }) + }, +}); diff --git a/erpnext/non_profit/doctype/chapter_message/chapter_message.json b/erpnext/non_profit/doctype/chapter_message/chapter_message.json new file mode 100644 index 0000000000..0b01cb3963 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_message/chapter_message.json @@ -0,0 +1,152 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2017-09-14 13:40:12.353109", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "subject", + "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": "Subject", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "message", + "fieldtype": "Text", + "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": "Message", + "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, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "chapter", + "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": "Chapter", + "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, + "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": "2017-09-14 15:14:51.740148", + "modified_by": "Administrator", + "module": "Non Profit", + "name": "Chapter Message", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 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 +} \ No newline at end of file diff --git a/erpnext/non_profit/doctype/chapter_message/chapter_message.py b/erpnext/non_profit/doctype/chapter_message/chapter_message.py new file mode 100644 index 0000000000..c7dd73e4a6 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_message/chapter_message.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document +from frappe import _ + +class ChapterMessage(Document): + def get_context(self, context): + context.no_cache = True + + def validate(self): + chapter = frappe.get_doc('Chapter', self.chapter) + if frappe.session.user != chapter.chapter_head: + frappe.throw(_('You are not athourize to send message for this Chapter.')) + + def on_update(self): + chapter = frappe.get_doc('Chapter', self.chapter) + recipients = [d.user for d in chapter.members] + message = self.message + message += "Chapter Title: " + self.chapter + # chapter_title = self.chapter + + frappe.sendmail(recipients = recipients, + message = self.message, + subject = self.subject) + # reference_doctype=self.doctype, reference_name=self.name) + + +def get_members_emails(chapterTitle): + + members_list = frappe.get_all('User', fields=['email'], + filters={'chapter.title': chapterTitle}) + + out = [] + for e in members_list: + if e.email: + # don't add if holiday + out.append(e.email) + print out + return out \ No newline at end of file diff --git a/erpnext/non_profit/doctype/chapter_message/test_chapter_message.js b/erpnext/non_profit/doctype/chapter_message/test_chapter_message.js new file mode 100644 index 0000000000..bda7aa06e4 --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_message/test_chapter_message.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: Chapter Message", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially([ + // insert a new Chapter Message + () => frappe.tests.make('Chapter Message', [ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/erpnext/non_profit/doctype/chapter_message/test_chapter_message.py b/erpnext/non_profit/doctype/chapter_message/test_chapter_message.py new file mode 100644 index 0000000000..e3f3e4ae7f --- /dev/null +++ b/erpnext/non_profit/doctype/chapter_message/test_chapter_message.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +class TestChapterMessage(unittest.TestCase): + pass