first commit
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
.DS_Store
|
||||||
|
*.pyc
|
||||||
|
*.egg-info
|
||||||
|
*.swp
|
||||||
|
tags
|
||||||
|
foundation/docs/current
|
||||||
18
MANIFEST.in
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
include MANIFEST.in
|
||||||
|
include requirements.txt
|
||||||
|
include *.json
|
||||||
|
include *.md
|
||||||
|
include *.py
|
||||||
|
include *.txt
|
||||||
|
recursive-include foundation *.css
|
||||||
|
recursive-include foundation *.csv
|
||||||
|
recursive-include foundation *.html
|
||||||
|
recursive-include foundation *.ico
|
||||||
|
recursive-include foundation *.js
|
||||||
|
recursive-include foundation *.json
|
||||||
|
recursive-include foundation *.md
|
||||||
|
recursive-include foundation *.png
|
||||||
|
recursive-include foundation *.py
|
||||||
|
recursive-include foundation *.svg
|
||||||
|
recursive-include foundation *.txt
|
||||||
|
recursive-exclude foundation *.pyc
|
||||||
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
## ERPNext Foundation
|
||||||
|
|
||||||
|
Website for ERPNext Foundation
|
||||||
|
|
||||||
|
#### License
|
||||||
|
|
||||||
|
MIT
|
||||||
5
foundation/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
|
||||||
0
foundation/config/__init__.py
Normal file
14
foundation/config/desktop.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
from frappe import _
|
||||||
|
|
||||||
|
def get_data():
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"module_name": "ERPNext Foundation",
|
||||||
|
"color": "grey",
|
||||||
|
"icon": "octicon octicon-file-directory",
|
||||||
|
"type": "module",
|
||||||
|
"label": _("ERPNext Foundation")
|
||||||
|
}
|
||||||
|
]
|
||||||
11
foundation/config/docs.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
"""
|
||||||
|
Configuration for docs
|
||||||
|
"""
|
||||||
|
|
||||||
|
# source_link = "https://github.com/[org_name]/foundation"
|
||||||
|
# docs_base_url = "https://[org_name].github.io/foundation"
|
||||||
|
# headline = "App that does everything"
|
||||||
|
# sub_heading = "Yes, you got that right the first time, everything"
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
context.brand_html = "ERPNext Foundation"
|
||||||
0
foundation/erpnext_foundation/__init__.py
Normal file
0
foundation/erpnext_foundation/doctype/__init__.py
Normal file
8
foundation/erpnext_foundation/doctype/member/member.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2016, EOSSF and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Member', {
|
||||||
|
refresh: function(frm) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
237
foundation/erpnext_foundation/doctype/member/member.json
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
{
|
||||||
|
"allow_copy": 0,
|
||||||
|
"allow_import": 0,
|
||||||
|
"allow_rename": 0,
|
||||||
|
"autoname": "field:member_name",
|
||||||
|
"beta": 0,
|
||||||
|
"creation": "2017-02-24 11:47:56.865726",
|
||||||
|
"custom": 0,
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "DocType",
|
||||||
|
"document_type": "",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "member_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": "Member 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,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "membership_type",
|
||||||
|
"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": "Membership Type",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "Gold\nSilver\nIndividual",
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "email",
|
||||||
|
"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": "Email",
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "image",
|
||||||
|
"fieldtype": "Attach Image",
|
||||||
|
"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": "Image",
|
||||||
|
"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": "address",
|
||||||
|
"fieldtype": "Small 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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "expires_on",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"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": "Expires On",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide_heading": 0,
|
||||||
|
"hide_toolbar": 0,
|
||||||
|
"idx": 0,
|
||||||
|
"image_view": 0,
|
||||||
|
"in_create": 0,
|
||||||
|
"in_dialog": 0,
|
||||||
|
"is_submittable": 0,
|
||||||
|
"issingle": 0,
|
||||||
|
"istable": 0,
|
||||||
|
"max_attachments": 0,
|
||||||
|
"modified": "2017-02-28 16:20:10.046062",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "Member",
|
||||||
|
"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
|
||||||
|
}
|
||||||
10
foundation/erpnext_foundation/doctype/member/member.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Member(Document):
|
||||||
|
pass
|
||||||
12
foundation/erpnext_foundation/doctype/member/test_member.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and Contributors
|
||||||
|
# See license.txt
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
# test_records = frappe.get_test_records('Member')
|
||||||
|
|
||||||
|
class TestMember(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2016, EOSSF and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Membership', {
|
||||||
|
refresh: function(frm) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
267
foundation/erpnext_foundation/doctype/membership/membership.json
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
{
|
||||||
|
"allow_copy": 0,
|
||||||
|
"allow_import": 0,
|
||||||
|
"allow_rename": 0,
|
||||||
|
"beta": 0,
|
||||||
|
"creation": "2017-02-24 11:56:55.208964",
|
||||||
|
"custom": 0,
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "DocType",
|
||||||
|
"document_type": "",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "member",
|
||||||
|
"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": "Member",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "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
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "membership_type",
|
||||||
|
"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": "Membership Type",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "Gold\nSilver\nIndividual",
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "from",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"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": "From",
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "to",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"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": "To",
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "paid",
|
||||||
|
"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": "Paid",
|
||||||
|
"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": "currency",
|
||||||
|
"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": "Currency",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "USD\nINR",
|
||||||
|
"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": "amount",
|
||||||
|
"fieldtype": "Float",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide_heading": 0,
|
||||||
|
"hide_toolbar": 0,
|
||||||
|
"idx": 0,
|
||||||
|
"image_view": 0,
|
||||||
|
"in_create": 0,
|
||||||
|
"in_dialog": 0,
|
||||||
|
"is_submittable": 0,
|
||||||
|
"issingle": 0,
|
||||||
|
"istable": 0,
|
||||||
|
"max_attachments": 0,
|
||||||
|
"modified": "2017-02-28 16:18:54.592372",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "Membership",
|
||||||
|
"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
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Membership(Document):
|
||||||
|
def validate(self):
|
||||||
|
member_name = frappe.get_value('Member', dict(email=frappe.user.name))
|
||||||
|
|
||||||
|
if not member_name:
|
||||||
|
member = frappe.get_doc(dict(
|
||||||
|
doctype='Member',
|
||||||
|
))
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and Contributors
|
||||||
|
# See license.txt
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
# test_records = frappe.get_test_records('Membership')
|
||||||
|
|
||||||
|
class TestMembership(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2016, EOSSF and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Portal Job', {
|
||||||
|
refresh: function(frm) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
328
foundation/erpnext_foundation/doctype/portal_job/portal_job.json
Normal file
@@ -0,0 +1,328 @@
|
|||||||
|
{
|
||||||
|
"allow_copy": 0,
|
||||||
|
"allow_import": 0,
|
||||||
|
"allow_rename": 0,
|
||||||
|
"beta": 0,
|
||||||
|
"creation": "2017-02-24 12:06:02.509773",
|
||||||
|
"custom": 0,
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "DocType",
|
||||||
|
"document_type": "",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"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": 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": "company_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": "Company 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,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "status",
|
||||||
|
"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": "Status",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "Open\nCompleted\nExpired\nWithdrawn",
|
||||||
|
"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": "description",
|
||||||
|
"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": "Description",
|
||||||
|
"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": "contact_number",
|
||||||
|
"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": "Contact Number",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "",
|
||||||
|
"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": "country",
|
||||||
|
"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": "Country",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "Country",
|
||||||
|
"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": "job_type",
|
||||||
|
"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": "Job Type",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "Setup\nImplementation\nTraining\nCustomization\nPrint Format\nIntegration\nFeature Development\nApp Development",
|
||||||
|
"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,
|
||||||
|
"default": "1",
|
||||||
|
"fieldname": "show_in_website",
|
||||||
|
"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 in Website",
|
||||||
|
"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": "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": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide_heading": 0,
|
||||||
|
"hide_toolbar": 0,
|
||||||
|
"idx": 0,
|
||||||
|
"image_view": 0,
|
||||||
|
"in_create": 0,
|
||||||
|
"in_dialog": 0,
|
||||||
|
"is_submittable": 0,
|
||||||
|
"issingle": 0,
|
||||||
|
"istable": 0,
|
||||||
|
"max_attachments": 0,
|
||||||
|
"modified": "2017-02-28 15:08:29.884966",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "Portal Job",
|
||||||
|
"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",
|
||||||
|
"title_field": "title",
|
||||||
|
"track_changes": 1,
|
||||||
|
"track_seen": 0
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
from frappe.website.website_generator import WebsiteGenerator
|
||||||
|
|
||||||
|
class PortalJob(WebsiteGenerator):
|
||||||
|
_website = dict(
|
||||||
|
condition_field = "show_in_website",
|
||||||
|
template = "templates/generators/portal_job.html"
|
||||||
|
)
|
||||||
|
def validate(self):
|
||||||
|
if not self.route:
|
||||||
|
self.route = 'jobs/' + self.scrub(self.name)
|
||||||
|
|
||||||
|
def get_list_context(context):
|
||||||
|
context.title = 'ERPNext Jobs'
|
||||||
|
context.no_breadcrumbs = True
|
||||||
|
context.row_template = 'foundation/templates/includes/portal_job.html'
|
||||||
|
context.order_by = 'creation desc'
|
||||||
|
context.introduction = '<div>Jobs for ERPNext Service Providers</div><br><button class="button green-btn">Post A Job</button>'
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and Contributors
|
||||||
|
# See license.txt
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
# test_records = frappe.get_test_records('Portal Job')
|
||||||
|
|
||||||
|
class TestPortalJob(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2016, EOSSF and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Service Provider', {
|
||||||
|
refresh: function(frm) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,555 @@
|
|||||||
|
{
|
||||||
|
"allow_copy": 0,
|
||||||
|
"allow_import": 0,
|
||||||
|
"allow_rename": 0,
|
||||||
|
"autoname": "field:title",
|
||||||
|
"beta": 0,
|
||||||
|
"creation": "2017-02-24 12:09:23.744409",
|
||||||
|
"custom": 0,
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "DocType",
|
||||||
|
"document_type": "",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"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": 1,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "member",
|
||||||
|
"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": "Member",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "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
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "country",
|
||||||
|
"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": "Country",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"options": "Country",
|
||||||
|
"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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "email",
|
||||||
|
"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": "Email",
|
||||||
|
"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": "phone",
|
||||||
|
"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": "Phone",
|
||||||
|
"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": "website",
|
||||||
|
"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",
|
||||||
|
"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": "address",
|
||||||
|
"fieldtype": "Small 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_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,
|
||||||
|
"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": "image",
|
||||||
|
"fieldtype": "Attach Image",
|
||||||
|
"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": "Image",
|
||||||
|
"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_10",
|
||||||
|
"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,
|
||||||
|
"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": "introduction",
|
||||||
|
"fieldtype": "Small 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": "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_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "details",
|
||||||
|
"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": "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": 1,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "section_break_13",
|
||||||
|
"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,
|
||||||
|
"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": "discuss_ids",
|
||||||
|
"fieldtype": "Small 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": "Discuss IDs",
|
||||||
|
"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": "github_id",
|
||||||
|
"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": "GitHub ID",
|
||||||
|
"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": "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": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "show_in_website",
|
||||||
|
"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 in Website",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide_heading": 0,
|
||||||
|
"hide_toolbar": 0,
|
||||||
|
"idx": 0,
|
||||||
|
"image_field": "image",
|
||||||
|
"image_view": 0,
|
||||||
|
"in_create": 0,
|
||||||
|
"in_dialog": 0,
|
||||||
|
"is_submittable": 0,
|
||||||
|
"issingle": 0,
|
||||||
|
"istable": 0,
|
||||||
|
"max_attachments": 0,
|
||||||
|
"modified": "2017-02-27 11:42:44.665961",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "Service Provider",
|
||||||
|
"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
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
from frappe.website.website_generator import WebsiteGenerator
|
||||||
|
|
||||||
|
class ServiceProvider(WebsiteGenerator):
|
||||||
|
_website = frappe._dict(
|
||||||
|
condition_field = "show_in_website",
|
||||||
|
template = "templates/generators/service_provider.html"
|
||||||
|
)
|
||||||
|
def validate(self):
|
||||||
|
if not self.route:
|
||||||
|
self.route = 'service-providers/' + self.scrub(self.name)
|
||||||
|
|
||||||
|
def get_context(self, context):
|
||||||
|
if not context.website.startswith('http'):
|
||||||
|
context.website = 'http://' + context.website
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2015, EOSSF and Contributors
|
||||||
|
# See license.txt
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
# test_records = frappe.get_test_records('Service Provider')
|
||||||
|
|
||||||
|
class TestServiceProvider(unittest.TestCase):
|
||||||
|
pass
|
||||||
0
foundation/erpnext_foundation/web_form/__init__.py
Normal file
3
foundation/erpnext_foundation/web_form/jobs/jobs.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
frappe.ready(function() {
|
||||||
|
// bind events here
|
||||||
|
})
|
||||||
108
foundation/erpnext_foundation/web_form/jobs/jobs.json
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 1,
|
||||||
|
"allow_delete": 1,
|
||||||
|
"allow_edit": 1,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 1,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"creation": "2017-02-28 15:06:44.748171",
|
||||||
|
"doc_type": "Portal Job",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"introduction_text": "Share as many details as you can to get maximum interest from service providers",
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2017-02-28 15:06:44.748171",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "jobs",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"published": 1,
|
||||||
|
"route": "my-jobs",
|
||||||
|
"show_sidebar": 1,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_url": "/jobs",
|
||||||
|
"title": "Jobs",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Title",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "job_type",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Job Type",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Setup\nImplementation\nTraining\nCustomization\nPrint Format\nIntegration\nFeature Development\nApp Development",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "country",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Country",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Country",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "company_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Company Name",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "contact_number",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Contact Number",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "status",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Status",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Open\nCompleted\nExpired\nWithdrawn",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "description",
|
||||||
|
"fieldtype": "Text Editor",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Description",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
7
foundation/erpnext_foundation/web_form/jobs/jobs.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
frappe.ready(function() {
|
||||||
|
// bind events here
|
||||||
|
var set_amount = function() {
|
||||||
|
var membership_type = $('[data-fieldname="membership_type"]').val();
|
||||||
|
var currency = $('[data-fieldname="currency"]').val();
|
||||||
|
if(currency=='USD') {
|
||||||
|
amount = {
|
||||||
|
'Gold': 5000,
|
||||||
|
'Silver': 1500,
|
||||||
|
'Individual': 200
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
amount = {
|
||||||
|
'Gold': 300000,
|
||||||
|
'Silver': 100000,
|
||||||
|
'Individual': 10000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var currency = $('[data-fieldname="amount"]').val(amount[membership_type]);
|
||||||
|
}
|
||||||
|
|
||||||
|
var m = moment();
|
||||||
|
$('[data-fieldname="from"]').val(m.format()).trigger('change');
|
||||||
|
$('[data-fieldname="to"]').val(m.add(1, 'year').format()).trigger('change');
|
||||||
|
$('[data-fieldname="membership_type"]').on('change', function() { set_amount(); });
|
||||||
|
$('[data-fieldname="currency"]').val('USD')
|
||||||
|
.on('change', function() {
|
||||||
|
set_amount();
|
||||||
|
})
|
||||||
|
.trigger('change');
|
||||||
|
})
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 0,
|
||||||
|
"allow_delete": 0,
|
||||||
|
"allow_edit": 0,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 1,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"creation": "2017-02-28 16:01:36.825878",
|
||||||
|
"doc_type": "Membership",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2017-02-28 16:12:17.633312",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "memberships",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"published": 1,
|
||||||
|
"route": "memberships",
|
||||||
|
"show_sidebar": 1,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_url": "/memberships",
|
||||||
|
"title": "Memberships",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "membership_type",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Membership Type",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Gold\nSilver\nIndividual",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "from",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "From Date",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "to",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "To Date",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "currency",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Currency",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "USD\nINR",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "amount",
|
||||||
|
"fieldtype": "Float",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Amount",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
frappe.ready(function() {
|
||||||
|
// bind events here
|
||||||
|
})
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 0,
|
||||||
|
"allow_delete": 0,
|
||||||
|
"allow_edit": 1,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 0,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"creation": "2017-02-27 15:52:47.104496",
|
||||||
|
"doc_type": "Service Provider",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"introduction_text": "Update your company profile that will be shown on your Service Provider Page",
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2017-02-27 16:48:13.115907",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "ERPNext Foundation",
|
||||||
|
"name": "service-provider",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"payment_gateway": "",
|
||||||
|
"published": 1,
|
||||||
|
"route": "service-provider-settings",
|
||||||
|
"show_sidebar": 1,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_url": "/service-provider",
|
||||||
|
"title": "Service Provider",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Title",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "country",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Country",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Country",
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "email",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Email",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "phone",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Phone",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "image",
|
||||||
|
"fieldtype": "Attach",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Image",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "introduction",
|
||||||
|
"fieldtype": "Small Text",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Introduction",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "details",
|
||||||
|
"fieldtype": "Text Editor",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Details",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "discuss_ids",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Discuss IDs",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "github_id",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "GitHub ID",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
152
foundation/hooks.py
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
from . import __version__ as app_version
|
||||||
|
|
||||||
|
app_name = "foundation"
|
||||||
|
app_title = "ERPNext Foundation"
|
||||||
|
app_publisher = "EOSSF"
|
||||||
|
app_description = "Website for ERPNext Foundation"
|
||||||
|
app_icon = "octicon octicon-file-directory"
|
||||||
|
app_color = "grey"
|
||||||
|
app_email = "foundation@erpnext.org"
|
||||||
|
app_license = "MIT"
|
||||||
|
|
||||||
|
# Includes in <head>
|
||||||
|
# ------------------
|
||||||
|
|
||||||
|
# include js, css files in header of desk.html
|
||||||
|
# app_include_css = "/assets/foundation/css/foundation.css"
|
||||||
|
# app_include_js = "/assets/foundation/js/foundation.js"
|
||||||
|
|
||||||
|
# include js, css files in header of web template
|
||||||
|
web_include_css = "/assets/foundation/css/style.css"
|
||||||
|
# web_include_js = "/assets/foundation/js/foundation.js"
|
||||||
|
|
||||||
|
# include js in page
|
||||||
|
# page_js = {"page" : "public/js/file.js"}
|
||||||
|
|
||||||
|
# include js in doctype views
|
||||||
|
# doctype_js = {"doctype" : "public/js/doctype.js"}
|
||||||
|
# doctype_list_js = {"doctype" : "public/js/doctype_list.js"}
|
||||||
|
# doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"}
|
||||||
|
|
||||||
|
# Home Pages
|
||||||
|
# ----------
|
||||||
|
|
||||||
|
# application home page (will override Website Settings)
|
||||||
|
home_page = "index"
|
||||||
|
|
||||||
|
website_context = {
|
||||||
|
"brand_html": "<img class='navbar-icon' src='/assets/foundation/img/erpnext-foundation-icon.svg' />ERPNext Foundation",
|
||||||
|
"top_bar_items": [
|
||||||
|
{"label": "Service Providers", "url": "/service-providers", "right":1},
|
||||||
|
{"label": "Resources", "url": "/resources", "right":1},
|
||||||
|
{"label": "About", "url": "/about", "right":1}
|
||||||
|
# {"label": "Docs", "url": "http://frappe.github.io/erpnext", "right":1},
|
||||||
|
# {"label": "Blog", "url": "https://frappe.io/blog", "right":1},
|
||||||
|
],
|
||||||
|
"footer_items": [
|
||||||
|
{"label": "About", "url": "/about"},
|
||||||
|
{"label": "Memberships", "url": "/members"},
|
||||||
|
{"label": "Jobs", "url": "/jobs"},
|
||||||
|
{"label": "Contact", "url": "/contact"},
|
||||||
|
{"label": "Legal", "url": "/legal"},
|
||||||
|
{"label": "Terms", "url": "/terms"}
|
||||||
|
],
|
||||||
|
"hide_login": 1,
|
||||||
|
"favicon": "/assets/frappe_theme/img/favicon.ico"
|
||||||
|
}
|
||||||
|
|
||||||
|
website_route_rules = [
|
||||||
|
{"from_route": "/jobs", "to_route": "Portal Job"},
|
||||||
|
]
|
||||||
|
|
||||||
|
# website user home page (by Role)
|
||||||
|
# role_home_page = {
|
||||||
|
# "Role": "home_page"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Website user home page (by function)
|
||||||
|
# get_website_user_home_page = "foundation.utils.get_home_page"
|
||||||
|
|
||||||
|
# Generators
|
||||||
|
# ----------
|
||||||
|
|
||||||
|
# automatically create page for each record of this doctype
|
||||||
|
website_generators = ["Service Provider", 'Portal Job']
|
||||||
|
|
||||||
|
portal_menu_items = [
|
||||||
|
{'label': 'Service Provider Settings', 'route': '/service-provider-settings'},
|
||||||
|
{'label': 'Jobs', 'route': '/my-jobs'},
|
||||||
|
{'label': 'Membership', 'route': '/memberships'}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
# ------------
|
||||||
|
|
||||||
|
# before_install = "foundation.install.before_install"
|
||||||
|
# after_install = "foundation.install.after_install"
|
||||||
|
|
||||||
|
# Desk Notifications
|
||||||
|
# ------------------
|
||||||
|
# See frappe.core.notifications.get_notification_config
|
||||||
|
|
||||||
|
# notification_config = "foundation.notifications.get_notification_config"
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
# -----------
|
||||||
|
# Permissions evaluated in scripted ways
|
||||||
|
|
||||||
|
# permission_query_conditions = {
|
||||||
|
# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# has_permission = {
|
||||||
|
# "Event": "frappe.desk.doctype.event.event.has_permission",
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Document Events
|
||||||
|
# ---------------
|
||||||
|
# Hook on document methods and events
|
||||||
|
|
||||||
|
# doc_events = {
|
||||||
|
# "*": {
|
||||||
|
# "on_update": "method",
|
||||||
|
# "on_cancel": "method",
|
||||||
|
# "on_trash": "method"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Scheduled Tasks
|
||||||
|
# ---------------
|
||||||
|
|
||||||
|
# scheduler_events = {
|
||||||
|
# "all": [
|
||||||
|
# "foundation.tasks.all"
|
||||||
|
# ],
|
||||||
|
# "daily": [
|
||||||
|
# "foundation.tasks.daily"
|
||||||
|
# ],
|
||||||
|
# "hourly": [
|
||||||
|
# "foundation.tasks.hourly"
|
||||||
|
# ],
|
||||||
|
# "weekly": [
|
||||||
|
# "foundation.tasks.weekly"
|
||||||
|
# ]
|
||||||
|
# "monthly": [
|
||||||
|
# "foundation.tasks.monthly"
|
||||||
|
# ]
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
# -------
|
||||||
|
|
||||||
|
# before_tests = "foundation.install.before_tests"
|
||||||
|
|
||||||
|
# Overriding Whitelisted Methods
|
||||||
|
# ------------------------------
|
||||||
|
#
|
||||||
|
# override_whitelisted_methods = {
|
||||||
|
# "frappe.desk.doctype.event.event.get_events": "foundation.event.get_events"
|
||||||
|
# }
|
||||||
|
|
||||||
68
foundation/migrate.py
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
from frappe.database import Database
|
||||||
|
from markdown2 import markdown
|
||||||
|
|
||||||
|
def migrate():
|
||||||
|
frappe.flags.mute_emails = True
|
||||||
|
source = Database(user='095452c6b4', password='FLpERmWJGuh4N3Eb')
|
||||||
|
|
||||||
|
|
||||||
|
# users = source.sql('select * from tabUser', as_dict=1)
|
||||||
|
# for u in users:
|
||||||
|
# frappe.get_doc(dict(
|
||||||
|
# doctype='User',
|
||||||
|
# name=u.name,
|
||||||
|
# first_name=u.first_name,
|
||||||
|
# last_name=u.last_name,
|
||||||
|
# email=u.email
|
||||||
|
# )).insert(ignore_if_duplicate=True)
|
||||||
|
# print u.name
|
||||||
|
|
||||||
|
# frappe.db.sql('delete from `tabService Provider`')
|
||||||
|
# partners = source.sql('select * from `tabFrappe Partner`', as_dict=True)
|
||||||
|
# for p in partners:
|
||||||
|
# d = frappe.get_doc(dict(
|
||||||
|
# doctype='Service Provider',
|
||||||
|
# title=p.partner_name,
|
||||||
|
# country=p.country,
|
||||||
|
# image=p.logo,
|
||||||
|
# introduction=p.introduction,
|
||||||
|
# details=markdown(p.description),
|
||||||
|
# address=p.partner_address,
|
||||||
|
# discuss_ids=p.community_members,
|
||||||
|
# website=p.partner_website,
|
||||||
|
# github_id=p.github_id,
|
||||||
|
# owner=p.owner,
|
||||||
|
# creation=p.creation,
|
||||||
|
# email= p.email,
|
||||||
|
# phone=p.phone,
|
||||||
|
# route=p.route,
|
||||||
|
# show_in_website=p.show_in_website
|
||||||
|
# )).insert(ignore_if_duplicate=True, ignore_mandatory=True)
|
||||||
|
# print d.name
|
||||||
|
|
||||||
|
jobs = source.sql('select * from `tabFrappe Job`', as_dict=True)
|
||||||
|
frappe.db.sql('delete from `tabPortal Job`')
|
||||||
|
for j in jobs:
|
||||||
|
if not frappe.db.exists('Country', j.country):
|
||||||
|
frappe.get_doc(dict(doctype='Country', country_name=j.country)).insert()
|
||||||
|
d = frappe.get_doc(dict(
|
||||||
|
doctype='Portal Job',
|
||||||
|
title=j.job_title,
|
||||||
|
company_name=j.company_name,
|
||||||
|
country=j.country,
|
||||||
|
status='Open' if j.status=='Assigned' else j.status,
|
||||||
|
job_type={
|
||||||
|
'ERP Implementation': 'Implementation',
|
||||||
|
'Core Development': 'Feature Development',
|
||||||
|
'Website Development': 'Website Development',
|
||||||
|
'Other': 'App Development'
|
||||||
|
}.get(j.job_type, None) or j.job_type,
|
||||||
|
description= markdown(j.job_detail),
|
||||||
|
owner=j.owner,
|
||||||
|
creation=j.creation,
|
||||||
|
route=j.route,
|
||||||
|
show_in_website=j.show_in_website
|
||||||
|
)).insert(ignore_if_duplicate=True, ignore_mandatory=True)
|
||||||
|
print d.name
|
||||||
1
foundation/modules.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ERPNext Foundation
|
||||||
0
foundation/patches.txt
Normal file
81
foundation/public/css/style.css
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
@import url('https://fonts.googleapis.com/css?family=Open+Sans');
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Open Sans', sans-serif;
|
||||||
|
font-size: 15px;
|
||||||
|
color: @text-color;
|
||||||
|
text-rendering: optimizeLegibility !important;
|
||||||
|
line-height: 1.5em;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding: 30px 0px;
|
||||||
|
border-bottom: 1px solid #EBEFF2;
|
||||||
|
}
|
||||||
|
|
||||||
|
section:last-child {
|
||||||
|
border: none;
|
||||||
|
padding-bottom: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
section h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4 {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 870px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-icon {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 7px 12px 9px;
|
||||||
|
line-height: 1;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.green-btn {
|
||||||
|
background: #70e079;
|
||||||
|
/*color: #fff;*/
|
||||||
|
border: 0px;
|
||||||
|
border-bottom: 3px solid rgba(0, 0, 0, 0.2);
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.green-btn:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background: #458a49;
|
||||||
|
color: #fff;
|
||||||
|
border-bottom: 3px solid rgba(117, 116, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.web-footer {
|
||||||
|
padding-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-full{
|
||||||
|
width: 100vw;
|
||||||
|
position: relative;
|
||||||
|
margin-left: -50vw;
|
||||||
|
height: 400px;
|
||||||
|
margin-top: 0px;
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a .media-body:hover, a .media-heading:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
BIN
foundation/public/img/bird.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
foundation/public/img/community.jpeg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
foundation/public/img/community.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
13
foundation/public/img/erpnext-foundation-icon.svg
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>erp-icon</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs></defs>
|
||||||
|
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="erp-icon" fill-rule="nonzero">
|
||||||
|
<path d="M512,448 C512,483.2 483.2,512 448,512 L64,512 C28.8,512 0,483.2 0,448 L0,64 C0,28.8 28.8,0 64,0 L448,0 C483.2,0 512,28.8 512,64 L512,448 Z" id="Shape" fill="#70E078"></path>
|
||||||
|
<path d="M150.483,371.684 L150.483,141.15 C150.483,125.983 160.017,116.017 174.316,116.017 L336.816,116.017 C350.682,116.017 357.616,122.95 357.616,134.65 L357.616,137.25 C357.616,149.383 350.682,155.883 336.816,155.883 L195.116,155.883 L195.116,234.317 L304.75,234.317 C319.05,234.317 325.55,240.383 325.55,252.084 L325.55,253.384 C325.55,265.517 318.616,272.017 304.75,272.017 L195.117,272.017 L195.117,356.951 L339.417,356.951 C353.284,356.951 359.784,363.017 359.784,374.718 L359.784,376.885 C359.784,389.451 353.284,396.385 339.417,396.385 L174.317,396.385 C160.017,396.384 150.483,386.851 150.483,371.684 Z" id="Shape" fill="#FFFFFF"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
BIN
foundation/public/img/erpnext-foundation.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
foundation/public/img/forum.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
16
foundation/public/img/frappe-bird-black.svg
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="222px" height="168px" viewBox="0 0 222 168" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>Group</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs></defs>
|
||||||
|
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="Group" fill-rule="nonzero">
|
||||||
|
<path d="M39.838,4.703 L85.685,50.55" id="Shape" fill="#FF783D"></path>
|
||||||
|
<path d="M116.07,167.331 C114.972,167.331 113.892,166.904 113.083,166.099 L37.699,91.15 C36.899,90.355 36.45,89.273 36.45,88.145 L36.45,4.703 C36.45,2.364 38.346,0.468 40.683,0.468 C43.023,0.468 44.919,2.364 44.919,4.703 L44.919,86.385 L111.833,152.913 L111.833,102.073 C111.833,99.735 113.729,97.839 116.067,97.839 C118.407,97.839 120.303,99.735 120.303,102.073 L120.303,163.095 C120.303,164.806 119.274,166.349 117.694,167.006 C117.17,167.225 116.617,167.331 116.07,167.331 Z" id="Shape" fill="#000000"></path>
|
||||||
|
<path d="M40.684,46.206 L5.109,46.206 C3.423,46.206 1.897,45.208 1.225,43.662 C0.552,42.115 0.862,40.317 2.01,39.085 L27.506,11.723 L36.738,1.816 C38.333,0.105 41.013,0.009 42.724,1.604 C44.435,3.199 44.529,5.878 42.935,7.59 L14.844,37.736 L40.684,37.736 C43.024,37.736 44.92,39.632 44.92,41.972 C44.92,44.311 43.023,46.206 40.684,46.206 Z" id="Shape" fill="#000000"></path>
|
||||||
|
<path d="M85.685,54.784 C84.588,54.784 83.492,54.362 82.663,53.516 L37.663,7.669 C36.024,5.999 36.05,3.317 37.719,1.68 C39.389,0.041 42.07,0.067 43.708,1.736 L88.708,47.584 C90.347,49.253 90.321,51.934 88.652,53.572 C87.826,54.381 86.756,54.784 85.685,54.784 Z" id="Shape" fill="#000000"></path>
|
||||||
|
<path d="M82.015,133.274 C80.802,133.274 79.599,132.756 78.761,131.752 C77.262,129.956 77.504,127.285 79.299,125.787 L205.176,20.796 L127.873,20.796 L43.229,91.397 C41.433,92.895 38.762,92.655 37.263,90.857 C35.765,89.062 36.007,86.39 37.803,84.892 L123.626,13.309 C124.388,12.675 125.347,12.327 126.338,12.327 L216.863,12.327 C218.645,12.327 220.238,13.444 220.844,15.12 C221.451,16.796 220.944,18.673 219.574,19.814 L84.726,132.292 C83.934,132.953 82.971,133.274 82.015,133.274 Z" id="Shape" fill="#000000"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
13
foundation/public/img/frappe-bird-grey.svg
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 260 260" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M65.838,51.703L111.685,97.55" style="fill:rgb(255,120,61);fill-rule:nonzero;"/>
|
||||||
|
<path d="M142.07,214.331C140.972,214.331 139.892,213.904 139.083,213.099L63.699,138.15C62.899,137.355 62.45,136.273 62.45,135.145L62.45,51.703C62.45,49.364 64.346,47.468 66.683,47.468C69.023,47.468 70.919,49.364 70.919,51.703L70.919,133.385L137.833,199.913L137.833,149.073C137.833,146.735 139.729,144.839 142.067,144.839C144.407,144.839 146.303,146.735 146.303,149.073L146.303,210.095C146.303,211.806 145.274,213.349 143.694,214.006C143.17,214.225 142.617,214.331 142.07,214.331Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/>
|
||||||
|
<path d="M66.684,93.206L31.109,93.206C29.423,93.206 27.897,92.208 27.225,90.662C26.552,89.115 26.862,87.317 28.01,86.085L53.506,58.723L62.738,48.816C64.333,47.105 67.013,47.009 68.724,48.604C70.435,50.199 70.529,52.878 68.935,54.59L40.844,84.736L66.684,84.736C69.024,84.736 70.92,86.632 70.92,88.972C70.92,91.311 69.023,93.206 66.684,93.206Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/>
|
||||||
|
<path d="M111.685,101.784C110.588,101.784 109.492,101.362 108.663,100.516L63.663,54.669C62.024,52.999 62.05,50.317 63.719,48.68C65.389,47.041 68.07,47.067 69.708,48.736L114.708,94.584C116.347,96.253 116.321,98.934 114.652,100.572C113.826,101.381 112.756,101.784 111.685,101.784Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/>
|
||||||
|
<path d="M108.015,180.274C106.802,180.274 105.599,179.756 104.761,178.752C103.262,176.956 103.504,174.285 105.299,172.787L231.176,67.796L153.873,67.796L69.229,138.397C67.433,139.895 64.762,139.655 63.263,137.857C61.765,136.062 62.007,133.39 63.803,131.892L149.626,60.309C150.388,59.675 151.347,59.327 152.338,59.327L242.863,59.327C244.645,59.327 246.238,60.444 246.844,62.12C247.451,63.796 246.944,65.673 245.574,66.814L110.726,179.292C109.934,179.953 108.971,180.274 108.015,180.274Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
BIN
foundation/public/img/gold.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
foundation/public/img/manual.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
foundation/public/img/medal.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
foundation/public/img/repo.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
foundation/public/img/silver.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
foundation/public/img/video.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
0
foundation/templates/__init__.py
Normal file
0
foundation/templates/generators/__init__.py
Normal file
43
foundation/templates/generators/portal_job.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% from "foundation/templates/includes/macros.html" import media %}
|
||||||
|
|
||||||
|
{% block page_content %}
|
||||||
|
<p><a href="/jobs">All ERPNext Jobs</a></p>
|
||||||
|
<h1>{{ title }}</h1>
|
||||||
|
{% if frappe.user == owner %}
|
||||||
|
<p><a class='btn btn-primary btn-sm' href="/my-jobs?name={{ name }}">Edit Job</a></p>
|
||||||
|
{% endif %}
|
||||||
|
<br>
|
||||||
|
<table class='table table-bordered small' style='max-width: 400px; margin-bottom: 0px;'>
|
||||||
|
<tr>
|
||||||
|
<td style='width: 38.2%'>Company Name</td>
|
||||||
|
<td>{{ company_name }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Job Type</td>
|
||||||
|
<td>{{ job_type }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Country</td>
|
||||||
|
<td>{{ country }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<h3>Details</h3>
|
||||||
|
<p>{{ description }}</p>
|
||||||
|
<h3>Contact</h3>
|
||||||
|
{% if is_member %}
|
||||||
|
<table class='table table-bordered small' style='max-width: 400px; margin-bottom: 0px;'>
|
||||||
|
<tr>
|
||||||
|
<td style='width: 38.2%'>Email</td>
|
||||||
|
<td>{{ owner }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Phone (optional)</td>
|
||||||
|
<td>{{ contact_number }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
{% else %}
|
||||||
|
<p><a class='green-btn button' href="/membership">Become an ERPNext Foundation member to view contact details</a></p>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
52
foundation/templates/generators/service_provider.html
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% from "foundation/templates/includes/macros.html" import media %}
|
||||||
|
|
||||||
|
{% block page_content %}
|
||||||
|
<section>
|
||||||
|
<h1 class="media-heading">{{ title }}</h1>
|
||||||
|
<p><a href="/service-providers?country={{ country }}">
|
||||||
|
All ERPNext Serivce Providers in {{ country }}</a></p>
|
||||||
|
<div class="media" style="margin: 45px 0px; ">
|
||||||
|
<div class="media-left">
|
||||||
|
<a href="#">
|
||||||
|
<img class="media-object"
|
||||||
|
src="{{ image }}"
|
||||||
|
style="width: 80px; height: 80px; max-width: 80px; ">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="media-body">
|
||||||
|
{{ introduction }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<table class='table table-bordered small' style='max-width: 400px; margin-bottom: 0px;'>
|
||||||
|
<tr>
|
||||||
|
<td style='width: 38.2%'>Country</td>
|
||||||
|
<td>{{ country }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Address</td>
|
||||||
|
<td>{{ address.replace('\n', '<br>') }}</td>
|
||||||
|
</tr>
|
||||||
|
</tr>
|
||||||
|
<td>Phone</td>
|
||||||
|
<td>{{ phone }}</td>
|
||||||
|
</tr>
|
||||||
|
</tr>
|
||||||
|
<td>Email</td>
|
||||||
|
<td><a href="mailto:{{ email }}" target="_blank">{{ email }}</a></td>
|
||||||
|
</tr>
|
||||||
|
</tr>
|
||||||
|
<td>Website</td>
|
||||||
|
<td><a href="{{ website }}" target="_blank">{{ website }}</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
{{ details }}
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<p><a class='green-btn button' href="mailto:{{ email }}">Contact {{ title }}</a></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
17
foundation/templates/includes/macros.html
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{% macro media(title, content, image, link) %}
|
||||||
|
<div class="media"
|
||||||
|
style="margin: 45px 0px; {% if link %}cursor: pointer;{% endif %}"
|
||||||
|
{% if link %}onclick="location.href='{{ link }}'"{% endif %}>
|
||||||
|
<div class="media-left">
|
||||||
|
<a href="{{ link or "#" }}">
|
||||||
|
<img class="media-object"
|
||||||
|
src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}"
|
||||||
|
style="width: 64px; height: 64px; max-width: 64px; {% if image and not '/' in image %}opacity: 0.4{% endif %}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="media-body">
|
||||||
|
{% if title %}<h4 class="media-heading">{{ title }}</h4>{% endif %}
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endmacro %}
|
||||||
5
foundation/templates/includes/portal_job.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<div style='margin-bottom: 30px; max-width: 600px;'>
|
||||||
|
<a href="/{{ doc.route }}"><h3>{{ doc.title }}</h3></a>
|
||||||
|
<p class='text-muted small'>{{ doc.country }} | {{ doc.job_type }}</p>
|
||||||
|
<p>{{ html2text(doc.description[:200]) }}{% if doc.description|len > 200 %}...{% endif %}</p>
|
||||||
|
</div>
|
||||||
0
foundation/templates/pages/__init__.py
Normal file
0
foundation/www/__init__.py
Normal file
29
foundation/www/about.html
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% block title %}About ERPNext Foundation{% endblock %}
|
||||||
|
|
||||||
|
{% from "foundation/templates/includes/macros.html" import media %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<section>
|
||||||
|
<h1>About ERPNext Foundation</h1>
|
||||||
|
<p class='lead'>Community of ERPNext Users, Developers and Service Providers</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Goals</h3>
|
||||||
|
<p>The goal of the ERPNext Foundation is to provide a platform for the ERPNext Community to come together, join hands and build assets to help build and enhance ERPNext around the world. ERPNext Foundation aims to be a community driven organization and run in a transparent</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>People</h3>
|
||||||
|
{{ media("Jay Ram, CEO",
|
||||||
|
"Jay is a Mechanical Engineer with an MBA (PGDM) from IIM, Bangalore and has worked in Information Security and Risk areas for large enterprises. He is passionate about helping small and medium businesses overcome thier challenges to grow and thinks ERPNext and his skills and interests are a perfect alignment for what what he wants to do with the rest of his life. In his spare time he plays golf, rides (Bicycling and motorbiking) and travels and would like to combine all his interests on his trips - ERPNext, riding and golf.",
|
||||||
|
"https://discuss.erpnext.com/user_avatar/discuss.erpnext.com/jayram/240/6872_1.png") }}
|
||||||
|
{{ media("Rushabh Mehta, Director", "Rushabh is the CEO of Frappé Technologies Private Limited and one of the original creators of Frappé Framework and ERPNext. He built ERPNext for his family's business and then later published it as an open source project. Rushabh is an Industrial Engineer by training but a software developer by profession. In his free time, he likes to read and spend time relaxing at home.",
|
||||||
|
"https://discuss.erpnext.com/user_avatar/discuss.erpnext.com/rmehta/240/4147_1.png") }}
|
||||||
|
{{ media("Nabin Hait, Director", "Nabin is the Chief Operating Officer of Frappé Technologies Private Limited and the lead developer at ERPNext. Nabin is responsible for managing the ERPNext project and managing the team at Frappé. Nabin is a great cook and likes cooking and watching movies in his free time.",
|
||||||
|
"https://discuss.erpnext.com/user_avatar/discuss.erpnext.com/nabinhait/240/7_1.png") }}
|
||||||
|
{{ media("Prakash Hodage, Administrative Officer", "Prakash is the accountant and administrative officer of Frappé Technologies Private Limited. He is the person responsible for getting the foundation registered. Prakash has extensive experience in managing accounting and administration and is an expert ERPNext user, also handling user support from time to time. In his free time, Prakash loves to read and help people around him.",
|
||||||
|
"https://discuss.erpnext.com/user_avatar/discuss.erpnext.com/prakash/240/2703_1.png") }}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
{% endblock %}
|
||||||
41
foundation/www/index.html
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% block title %}ERPNext Foundation{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class='row-full'>
|
||||||
|
<img src="/assets/foundation/img/community.png" class='img-responsive'>
|
||||||
|
</div>
|
||||||
|
<section>
|
||||||
|
<h1>ERPNext Foundation</h1>
|
||||||
|
<p class='lead'>Free and Open Source Business Software for Millions of Entrepreneurs Worldwide</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>What is ERPNext?</h3>
|
||||||
|
<p>ERPNext is a modern, fully featured open source Enterprise Resource Planning (ERP) system that is designed for small and medium sized businesses.
|
||||||
|
<ul>
|
||||||
|
<li>ERPNext includes modules to help you manage Financial Accounting, Sales and CRM, Billing, Manufacturing, Inventory, HR and Payroll, Projects, E-Commerce and much more.
|
||||||
|
<li>ERPNext is designed to be <i>web-first</i> and is built for entreprenuers who want modern, clean design and great usablity. It is deeply integrated with email and other services and is designed to be deployed and managed on any remote server.
|
||||||
|
<li>ERPNext is <i>100% free and open source</i> (there are no paid modules) and is available under the GNU General Public License.
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>What is the ERPNext Foundation?</h3>
|
||||||
|
<p>ERPNext Foundation is a not-for-profit company registered with the objective of building and enhancing ERPNext as an open source project. The ERPNext Foundation is funded by annual memberships of individuals and companies who use ERPNext or support it.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>How do I Get Started?</h3>
|
||||||
|
<p>If you are looking to self host ERPNext, you should start with a remote Virtual Machine (VM) and install ERPNext using the Easy Install Script.</p>
|
||||||
|
<p>Alternatively you can download the Virtual Machine and run it on your desktop</p>
|
||||||
|
<p>You can also sign up for a free one user account on ERPNext hosting services like erpnext.com</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Get Involved</h3>
|
||||||
|
<p>ERPNext is built by feedback and contributions of hundreds of companies and developers and is backed by an active community. Be a part of the community that shapes ERPNext and help millions of small businesses get the software they deserve.</p>
|
||||||
|
<p><a href="/members" class="button green-btn">Become A Member</a></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
35
foundation/www/members.html
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% block title %}ERPNext Foundation - Memberships{% endblock %}
|
||||||
|
|
||||||
|
{% from "foundation/templates/includes/macros.html" import media %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<section>
|
||||||
|
<h1>Memberships</h1>
|
||||||
|
<p class='lead'>Be a Part of the ERPNext Foundation</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Introduction</h3>
|
||||||
|
<p>
|
||||||
|
The ERPNext Foundation aims to be driven by its members. By becoming a members, you get
|
||||||
|
a preferred listing on the ERPNext Job Board and access to incoming requests for implementation
|
||||||
|
and customization jobs
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Membership Types</h3>
|
||||||
|
{{ media("Gold Member",
|
||||||
|
"By becoming a Gold Member, you show your leadership and a premium positioning for your brand. As a Gold Member, you have priority on all the ERPNext Listings.",
|
||||||
|
"gold.png") }}
|
||||||
|
{{ media("Silver Member",
|
||||||
|
"Silver members also get priority listing on the Service Provider board after the Gold Members. Becoming a silver member will give you increased visibility in the ERPNext Community.",
|
||||||
|
"silver.png") }}
|
||||||
|
{{ media("Individual Member",
|
||||||
|
"As individual membership is ideal for users and freelancers who want to show their solidarity to the project and community. Individual members get listed above those with a free listing.",
|
||||||
|
"medal.png") }}
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<p><a href="/members" class="button green-btn">Become A Member</a></p>
|
||||||
|
</section>
|
||||||
|
{% endblock %}
|
||||||
43
foundation/www/resources.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% block title %}ERPNext Resources{% endblock %}
|
||||||
|
|
||||||
|
{% from "foundation/templates/includes/macros.html" import media %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<section>
|
||||||
|
<h1>Resources</h1>
|
||||||
|
<p class='lead'>Information to help you get started on ERPNext</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>User Resources</h3>
|
||||||
|
|
||||||
|
{{ media("User Manual", "Deep dive into ERPNext functionality with the ERPNext manual. Covers all issues regarding setup, operations and customizations",
|
||||||
|
"manual.png", "https://frappe.github.io/erpnext/user") }}
|
||||||
|
|
||||||
|
{{ media("User Fourm", "Get help from the 3000 strong user community. Remember to introduce yourself and search before posting a query",
|
||||||
|
"forum.png", "https://discuss.erpnext.com") }}
|
||||||
|
|
||||||
|
{{ media("Help Videos", "More than 50 videos explaining features, using ERPNext, detailed webinar recordings, tutorials and much more",
|
||||||
|
"video.png", "https://youtube.com") }}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Developer Resources</h3>
|
||||||
|
<p>ERPNext is built on the Frappé Framework, a full stack web framework built in Python, Javascript on top of MariaDB, Node and Redis. To contribute fixes or built modules, it is recommended you go through the tutorial of Frappé Framework and make yourself familiar with its concepts.</p>
|
||||||
|
{{ media("Source Code", "All of ERPNext and Frappe code is actively maintained on GitHub. Star the repo, fork it, report issues and contribute using pull requests",
|
||||||
|
"repo.png", "https://github.com/frappe/erpnext") }}
|
||||||
|
|
||||||
|
{{ media("Frappé Framework", "ERPNext is built on the Frappé Framework, a full stack web application framework built on Python, JS, MariaDB, Redis and Node. Frappé allows you to extend ERPNext and build nifty extensions",
|
||||||
|
"frappe-bird-black.svg", "https://github.com/frappe/frappe") }}
|
||||||
|
|
||||||
|
{{ media("Frappé Tutorial", "This step by step tutorial will help you build a simple application using Frappé, helping you explore its structure and meta-data driven modeling", "manual.png", "https://frappe.github.io/frappe/") }}
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h3>Tools</h3>
|
||||||
|
<ol>
|
||||||
|
<li><a href="https://translate.erpnext.com">Contribute Translations</a></li>
|
||||||
|
<li><a href="https://charts.erpnext.com/">Contribute Chart of Accounts for your Company</a></li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
{% endblock %}
|
||||||
83
foundation/www/service-providers.html
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
|
{% from "foundation/templates/includes/macros.html" import media %}
|
||||||
|
|
||||||
|
{% macro gold_member(m) %}
|
||||||
|
<div class='gold-member'>
|
||||||
|
{{ media(m.title, m.introduction, m.image, m.route) }}
|
||||||
|
</div>
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro silver_member(m) %}
|
||||||
|
<div class='col-sm-4'>
|
||||||
|
<h4>{{ m.title }}</h4>
|
||||||
|
<p>{{ m.introduction[:100] }}</p>
|
||||||
|
<p><a class='btn btn-default btn-sm' href='{{ m.route }}'>Details</a></p>
|
||||||
|
</div>
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro show_member(s) %}
|
||||||
|
<div class='col-sm-4'>
|
||||||
|
<p>
|
||||||
|
<a class='bold' href="/{{ s.route }}">{{ s.title.title()[:25] }}</a><br>
|
||||||
|
<div class='small'>{{ s.introduction[:100] }}</div>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% block page_content %}
|
||||||
|
<h1>{{ title }}</h1>
|
||||||
|
{% if form_dict.country %}
|
||||||
|
<p><a href="/service-providers">All Serivce Providers</a></p>
|
||||||
|
{% endif %}
|
||||||
|
<section>
|
||||||
|
<h2>Gold Members</h2>
|
||||||
|
{% for m in gold_members %}
|
||||||
|
{{ gold_member(m) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% if has_gold_member %}
|
||||||
|
<p><a class='text-muted' href='/members'>
|
||||||
|
Become a Gold Member and get your company featured here</a></p>
|
||||||
|
{% endif %}
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Silver Members</h2>
|
||||||
|
<div class='row'>
|
||||||
|
{% for m in silver_members %}
|
||||||
|
{{ silver_member(m) }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{% if form_dict.country %}
|
||||||
|
<section>
|
||||||
|
<h2>ERPNext Foundation Members</h2>
|
||||||
|
<div class='row'>
|
||||||
|
{% for s in individual_members %}
|
||||||
|
{{ show_member(s) }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Other Service Providers</h2>
|
||||||
|
<div class='row'>
|
||||||
|
{% for s in service_providers %}
|
||||||
|
{{ show_member(s) }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{% else %}
|
||||||
|
<section>
|
||||||
|
<h2>Select by country</h2>
|
||||||
|
<div class='row'>
|
||||||
|
{% for c in countries %}
|
||||||
|
<div class='col-sm-4'>
|
||||||
|
<p>
|
||||||
|
<a href="/service-providers?country={{ c[0] }}">{{ c[0] }} ({{ c[1] }})</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
74
foundation/www/service_providers.py
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
context.form_dict = frappe.form_dict
|
||||||
|
context.title = 'Service Providers'
|
||||||
|
context.gold_members = []
|
||||||
|
|
||||||
|
filters = dict()
|
||||||
|
if frappe.form_dict.country:
|
||||||
|
filters['country'] = frappe.form_dict.country
|
||||||
|
|
||||||
|
gold_members = [d.name for d in frappe.get_all('Member', dict(membership_type='Gold'))]
|
||||||
|
if gold_members:
|
||||||
|
filters['member'] = ('in', gold_members)
|
||||||
|
context.gold_members = frappe.get_all('Service Provider', 'title, introduction, `image`, route',
|
||||||
|
filters)
|
||||||
|
|
||||||
|
if context.gold_members:
|
||||||
|
context.has_gold_member = 1
|
||||||
|
else:
|
||||||
|
context.gold_members.append(dict(
|
||||||
|
title='Gold Member',
|
||||||
|
introduction='Become a Gold Member today and get your company featured here',
|
||||||
|
image='/assets/foundation/img/gold.png',
|
||||||
|
route='/members'
|
||||||
|
))
|
||||||
|
|
||||||
|
context.silver_members = []
|
||||||
|
silver_members = [d.name for d in frappe.get_all('Member', dict(membership_type='Silver'))]
|
||||||
|
if silver_members:
|
||||||
|
filters['member'] = ('in', gold_members)
|
||||||
|
context.silver_members = frappe.get_all('Service Provider', 'title, introduction, `image`, route',
|
||||||
|
filters, debug=1)
|
||||||
|
|
||||||
|
# round to 3 columns
|
||||||
|
for i in xrange(3 - (len(context.silver_members) % 3)):
|
||||||
|
context.silver_members.append(dict(
|
||||||
|
title='Silver Member',
|
||||||
|
introduction='Become a Silver Member today and get your company featured here',
|
||||||
|
image='/assets/foundation/img/silver.png',
|
||||||
|
route='/members'
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
|
if context.form_dict.country:
|
||||||
|
context.title = 'ERPNext Service Providers in {0}'.format(context.form_dict.country)
|
||||||
|
|
||||||
|
context.individual_members = []
|
||||||
|
individual_members = [d.name for d in frappe.get_all('Member', dict(membership_type='Individual'))]
|
||||||
|
if individual_members:
|
||||||
|
filters['member'] = ('in', individual_members)
|
||||||
|
context.individual_members = frappe.get_all('Service Provider', 'title, introduction, `image`, route', filters)
|
||||||
|
else:
|
||||||
|
context.individual_members = [dict(
|
||||||
|
title='Individual Member',
|
||||||
|
introduction='Become an invidual member to list here',
|
||||||
|
route='/members'
|
||||||
|
)]
|
||||||
|
|
||||||
|
context.service_providers = [d for d in frappe.get_all('Service Provider', 'name, title, introduction, `image`, route',
|
||||||
|
dict(country=frappe.form_dict.country, show_in_website=1), order_by='name') if d.name not in individual_members]
|
||||||
|
|
||||||
|
else:
|
||||||
|
# countries
|
||||||
|
context.countries = frappe.db.sql('''select
|
||||||
|
distinct country, count(*)
|
||||||
|
from
|
||||||
|
`tabService Provider`
|
||||||
|
where
|
||||||
|
show_in_website = 1
|
||||||
|
group by
|
||||||
|
country
|
||||||
|
order by
|
||||||
|
country''')
|
||||||
1
license.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
License: MIT
|
||||||
1
requirements.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
frappe
|
||||||
26
setup.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
from pip.req import parse_requirements
|
||||||
|
import re, ast
|
||||||
|
|
||||||
|
# get version from __version__ variable in foundation/__init__.py
|
||||||
|
_version_re = re.compile(r'__version__\s+=\s+(.*)')
|
||||||
|
|
||||||
|
with open('foundation/__init__.py', 'rb') as f:
|
||||||
|
version = str(ast.literal_eval(_version_re.search(
|
||||||
|
f.read().decode('utf-8')).group(1)))
|
||||||
|
|
||||||
|
requirements = parse_requirements("requirements.txt", session="")
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name='foundation',
|
||||||
|
version=version,
|
||||||
|
description='Website for ERPNext Foundation',
|
||||||
|
author='EOSSF',
|
||||||
|
author_email='foundation@erpnext.org',
|
||||||
|
packages=find_packages(),
|
||||||
|
zip_safe=False,
|
||||||
|
include_package_data=True,
|
||||||
|
install_requires=[str(ir.req) for ir in requirements],
|
||||||
|
dependency_links=[str(ir._link) for ir in requirements if ir._link]
|
||||||
|
)
|
||||||