diff --git a/foundation/erpnext_foundation/doctype/foundation_fellowship/foundation_fellowship.json b/foundation/erpnext_foundation/doctype/foundation_fellowship/foundation_fellowship.json index 1ef4473a..37746f3a 100644 --- a/foundation/erpnext_foundation/doctype/foundation_fellowship/foundation_fellowship.json +++ b/foundation/erpnext_foundation/doctype/foundation_fellowship/foundation_fellowship.json @@ -557,4 +557,4 @@ "sort_order": "DESC", "track_changes": 1, "track_seen": 0 -} \ No newline at end of file +} diff --git a/foundation/public/css/erpnext-org-theme.css b/foundation/public/css/erpnext-org-theme.css index 8eb90482..a7c90ef3 100644 --- a/foundation/public/css/erpnext-org-theme.css +++ b/foundation/public/css/erpnext-org-theme.css @@ -1024,7 +1024,7 @@ img.blog-cover-image, padding-bottom: 1.5rem; } .feature-img { - width: 300px; + max-width: 250px; } .community-bg { background-image: linear-gradient(to bottom, rgba(117, 116, 254, 0.52), #7574fe), url("/assets/foundation/img/community-2016.jpg"); diff --git a/foundation/public/img/service-providers.png b/foundation/public/img/service-providers.png index 8ec7d8c3..db82d2df 100644 Binary files a/foundation/public/img/service-providers.png and b/foundation/public/img/service-providers.png differ diff --git a/foundation/public/less/erpnext-org-theme.less b/foundation/public/less/erpnext-org-theme.less index 36eb9ca0..619ddcb8 100644 --- a/foundation/public/less/erpnext-org-theme.less +++ b/foundation/public/less/erpnext-org-theme.less @@ -1014,7 +1014,7 @@ img.blog-cover-image, } .feature-img { - width: 300px; + max-width: 250px; } .community-bg { diff --git a/foundation/templates/includes/footer/footer.html b/foundation/templates/includes/footer/footer.html index c57ded3d..42412ea9 100644 --- a/foundation/templates/includes/footer/footer.html +++ b/foundation/templates/includes/footer/footer.html @@ -129,7 +129,7 @@

-

Content licensed under CC-BY-SA 3.0. Read the terms of use. +

Content licensed under CC-BY-SA 3.0 | Terms of use.

diff --git a/foundation/website/doctype/web_form/__init__.py b/foundation/website/doctype/web_form/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/foundation/website/doctype/web_form/test_records.json b/foundation/website/doctype/web_form/test_records.json deleted file mode 100644 index 080217e8..00000000 --- a/foundation/website/doctype/web_form/test_records.json +++ /dev/null @@ -1,48 +0,0 @@ -[{ - "allow_comments": 0, - "allow_edit": 1, - "allow_multiple": 1, - "doc_type": "Event", - "docstatus": 0, - "doctype": "Web Form", - "introduction_text": "Add events", - "login_required": 1, - "name": "manage-events", - "owner": "Administrator", - "page_name": "manage-events", - "published": 1, - "success_url": "/manage-events", - "title": "Manage Events", - "web_form_fields": [ - { - "doctype": "Web Form Field", - "fieldname": "subject", - "fieldtype": "Data", - "hidden": 0, - "idx": 1, - "label": "Title", - "read_only": 0, - "reqd": 1 - }, - { - "doctype": "Web Form Field", - "fieldname": "starts_on", - "fieldtype": "Date", - "hidden": 0, - "idx": 2, - "label": "Event Date", - "read_only": 0, - "reqd": 1 - }, - { - "doctype": "Web Form Field", - "fieldname": "description", - "fieldtype": "Text", - "hidden": 0, - "idx": 3, - "label": "Description", - "read_only": 0, - "reqd": 0 - } - ] -}] diff --git a/foundation/website/doctype/web_form/test_web_form.py b/foundation/website/doctype/web_form/test_web_form.py deleted file mode 100644 index ab2af2fb..00000000 --- a/foundation/website/doctype/web_form/test_web_form.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# See license.txt -from __future__ import unicode_literals - -import frappe -import unittest, json - -from frappe.website.render import build_page -from frappe.website.doctype.web_form.web_form import accept - -test_records = frappe.get_test_records('Web Form') - -class TestWebForm(unittest.TestCase): - def setUp(self): - frappe.conf.disable_website_cache = True - frappe.local.path = None - - def tearDown(self): - frappe.conf.disable_website_cache = False - frappe.local.path = None - - def test_basic(self): - frappe.set_user("Guest") - html = build_page("manage-events") - self.assertTrue('
' in html) - - def test_logged_in(self): - frappe.set_user("Administrator") - html = build_page("manage-events") - self.assertFalse('
' in html) - self.assertTrue('"/manage-events?new=1"' in html) - - def test_new(self): - frappe.set_user("Administrator") - frappe.local.form_dict.new = 1 - html = build_page("manage-events") - self.assertTrue('name="subject"' in html) - - def test_accept(self): - frappe.set_user("Administrator") - accept(web_form='manage-events', data=json.dumps({ - 'doctype': 'Event', - 'subject': '_Test Event Web Form', - 'description': '_Test Event Description', - 'starts_on': '2014-09-09' - })) - - self.event_name = frappe.db.get_value("Event", - {"subject": "_Test Event Web Form"}) - self.assertTrue(self.event_name) - - def test_edit(self): - self.test_accept() - doc={ - 'doctype': 'Event', - 'subject': '_Test Event Web Form', - 'description': '_Test Event Description 1', - 'starts_on': '2014-09-09', - 'name': self.event_name - } - - self.assertNotEquals(frappe.db.get_value("Event", - self.event_name, "description"), doc.get('description')) - - accept(web_form='manage-events', data=json.dumps(doc)) - - self.assertEquals(frappe.db.get_value("Event", - self.event_name, "description"), doc.get('description')) diff --git a/foundation/website/doctype/web_form/web_form.js b/foundation/website/doctype/web_form/web_form.js deleted file mode 100644 index 67f32ef0..00000000 --- a/foundation/website/doctype/web_form/web_form.js +++ /dev/null @@ -1,80 +0,0 @@ -frappe.web_form = { - set_fieldname_select: function(frm) { - var me = this, - doc = frm.doc; - if (doc.doc_type) { - frappe.model.with_doctype(doc.doc_type, function() { - var fields = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { - if (frappe.model.no_value_type.indexOf(d.fieldtype) === -1 || - d.fieldtype === 'Table') { - return { label: d.label + ' (' + d.fieldtype + ')', value: d.fieldname } - } else { - return null; - } - }) - var currency_fields = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { - if (d.fieldtype === 'Currency' || d.fieldtype === 'Float') { - return { label: d.label, value: d.fieldname } - } else { - return null; - } - }) - frappe.meta.get_docfield("Web Form Field", "fieldname", frm.doc.name).options = [""].concat(fields); - frappe.meta.get_docfield("Web Form", "amount_field", frm.doc.name).options = [""].concat(currency_fields); - frm.refresh_field("amount_field"); - }); - } - } -} - -frappe.ui.form.on("Web Form", { - refresh: function(frm) { - // show is-standard only if developer mode - frm.get_field("is_standard").toggle(frappe.boot.developer_mode); - - frappe.web_form.set_fieldname_select(frm); - - if (frm.doc.is_standard && !frappe.boot.developer_mode) { - frm.set_read_only(); - frm.disable_save(); - } - }, - - title: function(frm) { - if (frm.doc.__islocal) { - var page_name = frm.doc.title.toLowerCase().replace(/ /g, "-"); - frm.set_value("route", page_name); - frm.set_value("success_url", "/" + page_name); - } - }, - - doc_type: function(frm) { - frappe.web_form.set_fieldname_select(frm); - } -}); - - -frappe.ui.form.on("Web Form Field", { - fieldtype: function(frm, doctype, name) { - var doc = frappe.get_doc(doctype, name); - if (['Section Break', 'Column Break', 'Page Break'].includes(doc.fieldtype)) { - doc.fieldname = ''; - frm.refresh_field("web_form_fields"); - } - }, - fieldname: function(frm, doctype, name) { - var doc = frappe.get_doc(doctype, name); - var df = $.map(frappe.get_doc("DocType", frm.doc.doc_type).fields, function(d) { - return doc.fieldname == d.fieldname ? d : null; - })[0]; - - doc.label = df.label; - doc.reqd = df.reqd; - doc.options = df.options; - doc.fieldtype = frappe.meta.get_docfield("Web Form Field", "fieldtype") - .options.split("\n").indexOf(df.fieldtype) === -1 ? "Data" : df.fieldtype; - doc.description = df.description; - doc["default"] = df["default"]; - - } -}); \ No newline at end of file diff --git a/foundation/website/doctype/web_form/web_form.json b/foundation/website/doctype/web_form/web_form.json deleted file mode 100644 index ea0b9436..00000000 --- a/foundation/website/doctype/web_form/web_form.json +++ /dev/null @@ -1,1217 +0,0 @@ -{ - "allow_copy": 0, - "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, - "autoname": "", - "beta": 0, - "creation": "2014-09-01 14:08:48.624556", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "Document", - "editable_grid": 0, - "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": 0, - "in_standard_filter": 0, - "label": "Title", - "length": 0, - "no_copy": 1, - "permlevel": 0, - "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": "route", - "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": "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": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 1 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "doc_type", - "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": 1, - "label": "Select DocType", - "length": 0, - "no_copy": 0, - "options": "DocType", - "permlevel": 0, - "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": "module", - "fieldtype": "Link", - "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": "Module", - "length": 0, - "no_copy": 0, - "options": "Module Def", - "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": "column_break_4", - "fieldtype": "Column 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, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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": "is_standard", - "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": "Is Standard", - "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, - "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": "login_required", - "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": "Login Required", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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, - "depends_on": "login_required", - "fieldname": "allow_edit", - "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": "Allow Edit", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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, - "depends_on": "login_required", - "fieldname": "allow_multiple", - "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": "Allow Multiple", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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, - "depends_on": "allow_multiple", - "fieldname": "allow_delete", - "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": "Allow Delete", - "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": "allow_print", - "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": "Allow Print", - "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, - "depends_on": "allow_print", - "fieldname": "print_format", - "fieldtype": "Link", - "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": "Print Format", - "length": 0, - "no_copy": 0, - "options": "Print Format", - "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, - "depends_on": "login_required", - "fieldname": "allow_comments", - "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": "Allow Comments", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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, - "description": "Allow saving if mandatory fields are not filled", - "fieldname": "allow_incomplete", - "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": "Allow Incomplete Forms", - "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": "fields", - "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": "Fields", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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": "introduction_text", - "fieldtype": "Text Editor", - "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, - "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": "web_form_fields", - "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": "Web Form Fields", - "length": 0, - "no_copy": 0, - "options": "Web Form Field", - "permlevel": 0, - "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": "max_attachment_size", - "fieldtype": "Int", - "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": "Max Attachment Size (in MB)", - "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": "actions", - "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": "Actions", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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, - "description": "Message to be displayed on successful completion (only for Guest users)", - "fieldname": "success_message", - "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": "Success Message", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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, - "description": "Go to this URL after completing the form (only for Guest users)", - "fieldname": "success_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": "Success URL", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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": 1, - "columns": 0, - "fieldname": "sidebar_settings", - "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": "Sidebar Settings", - "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, - "default": "1", - "fieldname": "show_sidebar", - "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": "Show Sidebar", - "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": "sidebar_items", - "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": "Sidebar Items", - "length": 0, - "no_copy": 0, - "options": "Portal Menu Item", - "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": 1, - "collapsible_depends_on": "accept_payment", - "columns": 0, - "fieldname": "payments", - "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": "Payments", - "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": "accept_payment", - "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": "Accept Payment", - "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, - "depends_on": "accept_payment", - "fieldname": "payment_gateway", - "fieldtype": "Link", - "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 Gateway", - "length": 0, - "no_copy": 0, - "options": "Payment Gateway", - "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, - "default": "Buy Now", - "depends_on": "accept_payment", - "fieldname": "payment_button_label", - "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": "Button Label", - "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, - "depends_on": "accept_payment", - "fieldname": "payment_button_help", - "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": "Button Help", - "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": "column_break_28", - "fieldtype": "Column 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, - "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, - "depends_on": "accept_payment", - "fieldname": "amount_based_on_field", - "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": "Amount Based On Field", - "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, - "depends_on": "eval:doc.accept_payment && doc.amount_based_on_field", - "fieldname": "amount_field", - "fieldtype": "Select", - "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": "Amount Field", - "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, - "depends_on": "eval:doc.accept_payment && !doc.amount_based_on_field", - "fieldname": "amount", - "fieldtype": "Currency", - "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": "Amount", - "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, - "depends_on": "accept_payment", - "fieldname": "currency", - "fieldtype": "Link", - "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": "Currency", - "length": 0, - "no_copy": 0, - "options": "Currency", - "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": 1, - "columns": 0, - "fieldname": "advanced", - "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": "Advanced", - "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, - "description": "Text to be displayed for Link to Web Page if this form has a web page. Link route will be automatically generated based on `page_name` and `parent_website_route`", - "fieldname": "web_page_link_text", - "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": "Web Page Link Text", - "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, - "description": "List as [{\"label\": _(\"Jobs\"), \"route\":\"jobs\"}]", - "fieldname": "breadcrumbs", - "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": "Breadcrumbs", - "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": 1, - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-edit", - "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-13 18:55:07.031224", - "modified_by": "Administrator", - "module": "Website", - "name": "Web Form", - "name_case": "", - "owner": "Administrator", - "permissions": [ - { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 1, - "role": "Website Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, - "write": 1 - } - ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, - "sort_field": "modified", - "sort_order": "DESC", - "title_field": "title", - "track_changes": 1, - "track_seen": 0 -} \ No newline at end of file diff --git a/foundation/website/doctype/web_form/web_form.py b/foundation/website/doctype/web_form/web_form.py deleted file mode 100644 index c0ca1c2e..00000000 --- a/foundation/website/doctype/web_form/web_form.py +++ /dev/null @@ -1,485 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors -# For license information, please see license.txt - -from __future__ import unicode_literals -import frappe, json, os -from frappe.website.website_generator import WebsiteGenerator -from frappe import _, scrub -from frappe.utils import cstr -from frappe.utils.file_manager import save_file, remove_file_by_url -from frappe.website.utils import get_comment_list -from frappe.custom.doctype.customize_form.customize_form import docfield_properties -from frappe.utils.file_manager import get_max_file_size -from frappe.modules.utils import export_module_json, get_doc_module -from six.moves.urllib.parse import urlencode -from frappe.integrations.utils import get_payment_gateway_controller -from six import iteritems - - -class WebForm(WebsiteGenerator): - website = frappe._dict( - no_cache = 1 - ) - - def onload(self): - super(WebForm, self).onload() - if self.is_standard and not frappe.conf.developer_mode: - self.use_meta_fields() - - def validate(self): - super(WebForm, self).validate() - - if not self.module: - self.module = frappe.db.get_value('DocType', self.doc_type, 'module') - - if (not (frappe.flags.in_install or frappe.flags.in_patch or frappe.flags.in_test or frappe.flags.in_fixtures) - and self.is_standard and not frappe.conf.developer_mode): - frappe.throw(_("You need to be in developer mode to edit a Standard Web Form")) - - if not frappe.flags.in_import: - self.validate_fields() - - if self.accept_payment: - self.validate_payment_amount() - - def validate_fields(self): - '''Validate all fields are present''' - from frappe.model import no_value_fields - missing = [] - meta = frappe.get_meta(self.doc_type) - for df in self.web_form_fields: - if df.fieldname and (df.fieldtype not in no_value_fields and not meta.has_field(df.fieldname)): - missing.append(df.fieldname) - - if missing: - frappe.throw(_('Following fields are missing:') + '
' + '
'.join(missing)) - - def validate_payment_amount(self): - if self.amount_based_on_field and not self.amount_field: - frappe.throw(_("Please select a Amount Field.")) - elif not self.amount_based_on_field and not self.amount > 0: - frappe.throw(_("Amount must be greater than 0.")) - - - def reset_field_parent(self): - '''Convert link fields to select with names as options''' - for df in self.web_form_fields: - df.parent = self.doc_type - - def use_meta_fields(self): - '''Override default properties for standard web forms''' - meta = frappe.get_meta(self.doc_type) - - for df in self.web_form_fields: - meta_df = meta.get_field(df.fieldname) - - if not meta_df: - continue - - for prop in docfield_properties: - if df.fieldtype==meta_df.fieldtype and prop not in ("idx", - "reqd", "default", "description", "default", "options", - "hidden", "read_only", "label"): - df.set(prop, meta_df.get(prop)) - - - # TODO translate options of Select fields like Country - - # export - def on_update(self): - """ - Writes the .txt for this page and if write_content is checked, - it will write out a .html file - """ - path = export_module_json(self, self.is_standard, self.module) - - if path: - # js - if not os.path.exists(path + '.js'): - with open(path + '.js', 'w') as f: - f.write("""frappe.ready(function() { - // bind events here -})""") - - # py - if not os.path.exists(path + '.py'): - with open(path + '.py', 'w') as f: - f.write("""from __future__ import unicode_literals - -import frappe - -def get_context(context): - # do your magic here - pass -""") - - def get_context(self, context): - '''Build context to render the `web_form.html` template''' - self.set_web_form_module() - - context._login_required = False - if self.login_required and frappe.session.user == "Guest": - context._login_required = True - - doc, delimeter = make_route_string(frappe.form_dict) - context.doc = doc - context.delimeter = delimeter - - # check permissions - if frappe.session.user == "Guest" and frappe.form_dict.name: - frappe.throw(_("You need to be logged in to access this {0}.").format(self.doc_type), frappe.PermissionError) - - if frappe.form_dict.name and not has_web_form_permission(self.doc_type, frappe.form_dict.name): - frappe.throw(_("You don't have the permissions to access this document"), frappe.PermissionError) - - self.reset_field_parent() - - if self.is_standard: - self.use_meta_fields() - - if not context._login_required: - if self.allow_edit: - if self.allow_multiple: - if not frappe.form_dict.name and not frappe.form_dict.new: - self.build_as_list(context) - else: - if frappe.session.user != 'Guest' and not frappe.form_dict.name: - frappe.form_dict.name = frappe.db.get_value(self.doc_type, {"owner": frappe.session.user}, "name") - - if not frappe.form_dict.name: - # only a single doc allowed and no existing doc, hence new - frappe.form_dict.new = 1 - - # always render new form if login is not required or doesn't allow editing existing ones - if not self.login_required or not self.allow_edit: - frappe.form_dict.new = 1 - - self.load_document(context) - context.parents = self.get_parents(context) - - if self.breadcrumbs: - context.parents = frappe.safe_eval(self.breadcrumbs, { "_": _ }) - - context.has_header = ((frappe.form_dict.name or frappe.form_dict.new) - and (frappe.session.user!="Guest" or not self.login_required)) - - if context.success_message: - context.success_message = frappe.db.escape(context.success_message.replace("\n", - "
")) - - self.add_custom_context_and_script(context) - if not context.max_attachment_size: - context.max_attachment_size = get_max_file_size() / 1024 / 1024 - - def load_document(self, context): - '''Load document `doc` and `layout` properties for template''' - if frappe.form_dict.name or frappe.form_dict.new: - context.layout = self.get_layout() - context.parents = [{"route": self.route, "label": _(self.title) }] - - if frappe.form_dict.name: - context.doc = frappe.get_doc(self.doc_type, frappe.form_dict.name) - context.title = context.doc.get(context.doc.meta.get_title_field()) - context.doc.add_seen() - - context.reference_doctype = context.doc.doctype - context.reference_name = context.doc.name - - if self.allow_comments: - context.comment_list = get_comment_list(context.doc.doctype, - context.doc.name) - - def build_as_list(self, context): - '''Web form is a list, show render as list.html''' - from frappe.www.list import get_context as get_list_context - - # set some flags to make list.py/list.html happy - frappe.form_dict.web_form_name = self.name - frappe.form_dict.doctype = self.doc_type - frappe.flags.web_form = self - - self.update_params_from_form_dict(context) - self.update_list_context(context) - get_list_context(context) - context.is_list = True - - def update_params_from_form_dict(self, context): - '''Copy params from list view to new view''' - context.params_from_form_dict = '' - - params = {} - for key, value in iteritems(frappe.form_dict): - if frappe.get_meta(self.doc_type).get_field(key): - params[key] = value - - if params: - context.params_from_form_dict = '&' + urlencode(params) - - - def update_list_context(self, context): - '''update list context for stanard modules''' - if hasattr(self, 'web_form_module') and hasattr(self.web_form_module, 'get_list_context'): - self.web_form_module.get_list_context(context) - - def get_payment_gateway_url(self, doc): - if self.accept_payment: - controller = get_payment_gateway_controller(self.payment_gateway) - - title = "Payment for {0} {1}".format(doc.doctype, doc.name) - amount = self.amount - if self.amount_based_on_field: - amount = doc.get(self.amount_field) - payment_details = { - "amount": amount, - "title": title, - "description": title, - "reference_doctype": doc.doctype, - "reference_docname": doc.name, - "payer_email": frappe.session.user, - "payer_name": frappe.utils.get_fullname(frappe.session.user), - "order_id": doc.name, - "currency": self.currency, - "redirect_to": frappe.utils.get_url(self.route) - } - - # Redirect the user to this url - return controller.get_payment_url(**payment_details) - - def add_custom_context_and_script(self, context): - '''Update context from module if standard and append script''' - if self.web_form_module: - new_context = self.web_form_module.get_context(context) - - if new_context: - context.update(new_context) - - js_path = os.path.join(os.path.dirname(self.web_form_module.__file__), scrub(self.name) + '.js') - if os.path.exists(js_path): - context.script = frappe.render_template(open(js_path, 'r').read().decode('utf-8'), context) - - css_path = os.path.join(os.path.dirname(self.web_form_module.__file__), scrub(self.name) + '.css') - if os.path.exists(css_path): - context.style = open(css_path, 'r').read() - - def get_layout(self): - layout = [] - def add_page(df=None): - new_page = {'sections': []} - layout.append(new_page) - if df and df.fieldtype=='Page Break': - new_page.update(df.as_dict()) - - return new_page - - def add_section(df=None): - new_section = {'columns': []} - layout[-1]['sections'].append(new_section) - if df and df.fieldtype=='Section Break': - new_section.update(df.as_dict()) - - return new_section - - def add_column(df=None): - new_col = [] - layout[-1]['sections'][-1]['columns'].append(new_col) - - return new_col - - page, section, column = None, None, None - for df in self.web_form_fields: - - # breaks - if df.fieldtype=='Page Break': - page = add_page(df) - section, column = None, None - - if df.fieldtype=='Section Break': - section = add_section(df) - column = None - - if df.fieldtype=='Column Break': - column = add_column(df) - - # input - if df.fieldtype not in ('Section Break', 'Column Break', 'Page Break'): - if not page: - page = add_page() - section, column = None, None - if not section: - section = add_section() - column = None - if column==None: - column = add_column() - column.append(df) - - return layout - - def get_parents(self, context): - parents = None - - if context.is_list and not context.parents: - parents = [{"title": _("My Account"), "name": "me"}] - elif context.parents: - parents = context.parents - - return parents - - def set_web_form_module(self): - '''Get custom web form module if exists''' - if self.is_standard: - self.web_form_module = get_doc_module(self.module, self.doctype, self.name) - else: - self.web_form_module = None - - def validate_mandatory(self, doc): - '''Validate mandatory web form fields''' - missing = [] - for f in self.web_form_fields: - if f.reqd and doc.get(f.fieldname) in (None, [], ''): - missing.append(f) - - if missing: - frappe.throw(_('Mandatory Information missing:') + '

' - + '
'.join(['{0} ({1})'.format(d.label, d.fieldtype) for d in missing])) - - -@frappe.whitelist(allow_guest=True) -def accept(web_form, data, for_payment=False): - '''Save the web form''' - data = frappe._dict(json.loads(data)) - files = [] - files_to_delete = [] - - web_form = frappe.get_doc("Web Form", web_form) - if data.doctype != web_form.doc_type: - frappe.throw(_("Invalid Request")) - - elif data.name and not web_form.allow_edit: - frappe.throw(_("You are not allowed to update this Web Form Document")) - - frappe.flags.in_web_form = True - - if data.name: - # update - doc = frappe.get_doc(data.doctype, data.name) - else: - # insert - doc = frappe.new_doc(data.doctype) - - # set values - for fieldname, value in iteritems(data): - if value and isinstance(value, dict): - try: - if "__file_attachment" in value: - files.append((fieldname, value)) - continue - if '__no_attachment' in value: - files_to_delete.append(doc.get(fieldname)) - value = '' - - except ValueError: - pass - - doc.set(fieldname, value) - - if for_payment: - web_form.validate_mandatory(doc) - doc.run_method('validate_payment') - - if doc.name: - if has_web_form_permission(doc.doctype, doc.name, "write"): - doc.save(ignore_permissions=True) - else: - # only if permissions are present - doc.save() - - else: - # insert - if web_form.login_required and frappe.session.user=="Guest": - frappe.throw(_("You must login to submit this form")) - - doc.insert(ignore_permissions = True) - - # add files - if files: - for f in files: - fieldname, filedata = f - - # remove earlier attached file (if exists) - if doc.get(fieldname): - remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) - - # save new file - filedoc = save_file(filedata["filename"], filedata["dataurl"], - doc.doctype, doc.name, decode=True) - - # update values - doc.set(fieldname, filedoc.file_url) - - doc.save() - - if files_to_delete: - for f in files_to_delete: - if f: - remove_file_by_url(f, doc.doctype, doc.name) - - frappe.flags.web_form_doc = doc - - if for_payment: - return web_form.get_payment_gateway_url(doc) - else: - return doc.name - -@frappe.whitelist() -def delete(web_form, name): - web_form = frappe.get_doc("Web Form", web_form) - - owner = frappe.db.get_value(web_form.doc_type, name, "owner") - if frappe.session.user == owner and web_form.allow_delete: - frappe.delete_doc(web_form.doc_type, name, ignore_permissions=True) - else: - raise frappe.PermissionError("Not Allowed") - -def has_web_form_permission(doctype, name, ptype='read'): - if frappe.session.user=="Guest": - return False - - # owner matches - elif frappe.db.get_value(doctype, name, "owner")==frappe.session.user: - return True - - elif frappe.has_website_permission(name, ptype=ptype, doctype=doctype): - return True - - elif check_webform_perm(doctype, name): - return True - - else: - return False - - -def check_webform_perm(doctype, name): - doc = frappe.get_doc(doctype, name) - if hasattr(doc, "has_webform_permission"): - if doc.has_webform_permission(): - return True - -def get_web_form_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by=None): - from frappe.www.list import get_list - if not filters: - filters = {} - - filters["owner"] = frappe.session.user - - return get_list(doctype, txt, filters, limit_start, limit_page_length, order_by=order_by, - ignore_permissions=True) - -def make_route_string(parameters): - route_string = "" - delimeter = '?' - if isinstance(parameters, dict): - for key in parameters: - if key != "web_form_name": - route_string += route_string + delimeter + key + "=" + cstr(parameters[key]) - delimeter = '&' - return (route_string, delimeter) \ No newline at end of file diff --git a/foundation/website/doctype/web_form_field/__init__.py b/foundation/website/doctype/web_form_field/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/foundation/website/doctype/web_form_field/web_form_field.json b/foundation/website/doctype/web_form_field/web_form_field.json deleted file mode 100644 index b16d29a0..00000000 --- a/foundation/website/doctype/web_form_field/web_form_field.json +++ /dev/null @@ -1,432 +0,0 @@ -{ - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "beta": 0, - "creation": "2014-09-01 14:14:14.292173", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "", - "editable_grid": 1, - "fields": [ - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "fieldname", - "fieldtype": "Select", - "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": "Fieldname", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "fieldtype", - "fieldtype": "Select", - "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": "Fieldtype", - "length": 0, - "no_copy": 0, - "options": "Attach\nCheck\nData\nDate\nDatetime\nFloat\nHTML\nInt\nLink\nSelect\nSmall Text\nText\nText Editor\nTable\nSection Break\nColumn Break\nPage Break", - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "label", - "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": "Label", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "reqd", - "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": "Mandatory", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "read_only", - "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": "Read Only", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "hidden", - "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": "Hidden", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_4", - "fieldtype": "Column 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, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "options", - "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": "Options", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "max_length", - "fieldtype": "Int", - "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": "Max Length", - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "eval:doc.fieldtype=='Int'", - "fieldname": "max_value", - "fieldtype": "Int", - "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": "Max Value", - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "section_break_6", - "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, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "description", - "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": "Description", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_8", - "fieldtype": "Column 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, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "default", - "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": "Default", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "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 - } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 1, - "max_attachments": 0, - "modified": "2017-02-27 15:55:00.850515", - "modified_by": "Administrator", - "module": "Website", - "name": "Web Form Field", - "name_case": "", - "owner": "Administrator", - "permissions": [], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 0, - "track_seen": 0 -} \ No newline at end of file diff --git a/foundation/website/doctype/web_form_field/web_form_field.py b/foundation/website/doctype/web_form_field/web_form_field.py deleted file mode 100644 index ec3c3fbe..00000000 --- a/foundation/website/doctype/web_form_field/web_form_field.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2015, 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 WebFormField(Document): - pass diff --git a/foundation/www/index.html b/foundation/www/index.html index 5d6775c8..947c323b 100644 --- a/foundation/www/index.html +++ b/foundation/www/index.html @@ -5,7 +5,7 @@
ERP software for Everybody

ERP for Everybody

-

Worlds Leading Fully Opensource ERP Software That Helps You Stay In Control Of Your Business

+

World's leading fully open source ERP software that helps you stay in control of your business

Get Started