diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py index a43f8ca7a5..b445f81cb1 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.py +++ b/accounts/doctype/journal_voucher/journal_voucher.py @@ -7,7 +7,7 @@ import webnotes from webnotes.utils import cint, cstr, flt, fmt_money, formatdate, getdate from webnotes.model.doc import addchild from webnotes.model.bean import getlist -from webnotes import msgprint +from webnotes import msgprint, _ from setup.utils import get_company_currency from controllers.accounts_controller import AccountsController diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index 17ae216e02..c7dba9c95b 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -9,7 +9,7 @@ from webnotes.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdat get_first_day, get_last_day from webnotes.utils.email_lib import sendmail -from webnotes.utils import comma_and +from webnotes.utils import comma_and, get_url from webnotes.model.doc import make_autoname from webnotes.model.bean import getlist from webnotes.model.code import get_obj @@ -148,6 +148,9 @@ class DocType(SellingController): self.validate_recurring_invoice() self.convert_to_recurring() + def get_portal_page(self): + return "invoice" if self.doc.docstatus==1 else None + def set_missing_values(self, for_validate=False): self.set_pos_fields(for_validate) @@ -916,7 +919,7 @@ def notify_errors(inv, owner): Regards, Administrator - """ % (inv, website.get_site_address(), inv) + """ % (inv, get_url(), inv) subj = "[Urgent] Error while creating recurring invoice from %s" % inv from webnotes.profile import get_system_managers diff --git a/website/doctype/about_us_settings/__init__.py b/accounts/doctype/sales_invoice/templates/__init__.py similarity index 100% rename from website/doctype/about_us_settings/__init__.py rename to accounts/doctype/sales_invoice/templates/__init__.py diff --git a/website/doctype/about_us_team_member/__init__.py b/accounts/doctype/sales_invoice/templates/pages/__init__.py similarity index 100% rename from website/doctype/about_us_team_member/__init__.py rename to accounts/doctype/sales_invoice/templates/pages/__init__.py diff --git a/accounts/doctype/sales_invoice/templates/pages/invoice.html b/accounts/doctype/sales_invoice/templates/pages/invoice.html new file mode 100644 index 0000000000..db6e009f89 --- /dev/null +++ b/accounts/doctype/sales_invoice/templates/pages/invoice.html @@ -0,0 +1,5 @@ +{% extends "app/portal/templates/sale.html" %} + +{% block status -%} + {% if doc.status %}{{ doc.status }}{% endif %} +{%- endblock %} \ No newline at end of file diff --git a/accounts/doctype/sales_invoice/templates/pages/invoice.py b/accounts/doctype/sales_invoice/templates/pages/invoice.py new file mode 100644 index 0000000000..8fc89135c9 --- /dev/null +++ b/accounts/doctype/sales_invoice/templates/pages/invoice.py @@ -0,0 +1,30 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes import _ +from webnotes.utils import flt, fmt_money + +no_cache = True + +def get_context(): + from portal.utils import get_transaction_context + context = get_transaction_context("Sales Invoice", webnotes.form_dict.name) + modify_status(context.get("doc")) + context.update({ + "parent_link": "invoices", + "parent_title": "Invoices" + }) + return context + +def modify_status(doc): + doc.status = "" + if flt(doc.outstanding_amount): + doc.status = ' %s' % \ + ("label-warning", "icon-exclamation-sign", + _("To Pay") + " = " + fmt_money(doc.outstanding_amount, currency=doc.currency)) + else: + doc.status = ' %s' % \ + ("label-success", "icon-ok", _("Paid")) + \ No newline at end of file diff --git a/accounts/doctype/sales_invoice/templates/pages/invoices.html b/accounts/doctype/sales_invoice/templates/pages/invoices.html new file mode 100644 index 0000000000..f108683cb9 --- /dev/null +++ b/accounts/doctype/sales_invoice/templates/pages/invoices.html @@ -0,0 +1 @@ +{% extends "app/portal/templates/sales_transactions.html" %} \ No newline at end of file diff --git a/accounts/doctype/sales_invoice/templates/pages/invoices.py b/accounts/doctype/sales_invoice/templates/pages/invoices.py new file mode 100644 index 0000000000..59e53a05c0 --- /dev/null +++ b/accounts/doctype/sales_invoice/templates/pages/invoices.py @@ -0,0 +1,28 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes + +no_cache = True + +def get_context(): + from portal.utils import get_currency_context + context = get_currency_context() + context.update({ + "title": "Invoices", + "method": "accounts.doctype.sales_invoice.templates.pages.invoices.get_invoices", + "icon": "icon-file-text", + "empty_list_message": "No Invoices Found", + "page": "invoice" + }) + return context + +@webnotes.whitelist() +def get_invoices(start=0): + from portal.utils import get_transaction_list + from accounts.doctype.sales_invoice.templates.pages.invoice import modify_status + invoices = get_transaction_list("Sales Invoice", start, ["outstanding_amount"]) + for d in invoices: + modify_status(d) + return invoices \ No newline at end of file diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py index 416cf0e023..9425afc7d0 100644 --- a/accounts/page/voucher_import_tool/voucher_import_tool.py +++ b/accounts/page/voucher_import_tool/voucher_import_tool.py @@ -104,7 +104,7 @@ def import_vouchers(common_values, data, start_idx, import_type): if account.master_name: map_fields(["against_sales_invoice:against_invoice", - "against_purhase_invoice:against_voucher", + "against_purchase_invoice:against_voucher", "against_journal_voucher:against_jv"], d, detail.fields) webnotes.conn.commit() diff --git a/config.json b/config.json index e0f98d8daa..17b01edb25 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,6 @@ { "app_name": "ERPNext", + "base_template": "app/portal/templates/base.html", "modules": { "Selling": { "link": "selling-home", @@ -43,12 +44,6 @@ "color": "#7f8c8d", "icon": "icon-cogs" }, - "Website": { - "type": "module", - "link": "website-home", - "color": "#16a085", - "icon": "icon-globe" - }, "HR": { "type": "module", "link": "hr-home", @@ -77,138 +72,5 @@ "label": "Notes", "icon": "icon-file-alt" } - }, - "web": { - "pages": { - "about": { - "template": "app/website/templates/pages/about", - "args_method": "website.doctype.about_us_settings.about_us_settings.get_args" - }, - "account": { - "no_cache": true, - "template": "app/website/templates/pages/account" - }, - "blog": { - "template": "app/website/templates/pages/blog", - "args_method": "website.helpers.blog.get_blog_template_args" - }, - "contact": { - "template": "app/website/templates/pages/contact", - "args_doctype": "Contact Us Settings" - }, - "index": { - "template": "app/website/templates/pages/index" - }, - "order": { - "no_cache": true, - "template": "app/website/templates/pages/sale", - "args_method": "website.helpers.transaction.get_order_args", - "portal": { - "doctype": "Sales Order", - "conditions": { - "docstatus": 1 - } - } - }, - "orders": { - "no_cache": true, - "template": "app/website/templates/pages/sales_transactions", - "args_method": "website.helpers.transaction.order_list_args" - }, - "invoice": { - "no_cache": true, - "template": "app/website/templates/pages/sale", - "args_method": "website.helpers.transaction.get_invoice_args", - "portal": { - "doctype": "Sales Invoice", - "conditions": { - "docstatus": 1 - } - } - }, - "invoices": { - "no_cache": true, - "template": "app/website/templates/pages/sales_transactions", - "args_method": "website.helpers.transaction.invoice_list_args" - }, - "shipment": { - "no_cache": true, - "template": "app/website/templates/pages/sale", - "args_method": "website.helpers.transaction.get_shipment_args", - "portal": { - "doctype": "Delivery Note", - "conditions": { - "docstatus": 1 - } - } - }, - "shipments": { - "no_cache": true, - "template": "app/website/templates/pages/sales_transactions", - "args_method": "website.helpers.transaction.shipment_list_args" - }, - "product_search": { - "template": "app/website/templates/pages/product_search" - }, - "ticket": { - "no_cache": true, - "template": "app/website/templates/pages/ticket", - "args_method": "support.doctype.support_ticket.support_ticket.get_website_args", - "portal": { - "doctype": "Support Ticket" - } - }, - "tickets": { - "template": "app/website/templates/pages/tickets", - "args_method": "website.helpers.transaction.ticket_list_args" - }, - "address": { - "no_cache": true, - "template": "app/website/templates/pages/address", - "args_method": "utilities.doctype.address.address.get_website_args" - }, - "addresses": { - "template": "app/website/templates/pages/addresses" - }, - "writers": { - "template": "app/website/templates/pages/writers", - "args_method": "website.doctype.blogger.blogger.get_writers_args" - }, - "profile": { - "no_cache": true, - "template": "app/website/templates/pages/profile", - "args_method": "startup.webutils.get_profile_args" - }, - "cart": { - "no_cache": true, - "template": "app/website/templates/pages/cart.html" - }, - "partners": { - "template": "app/website/templates/pages/partners", - "args_method": "website.helpers.partner.get_partner_args" - } - }, - "generators": { - "Web Page": { - "template": "app/website/templates/html/web_page.html", - "condition_field": "published" - }, - "Blog Post": { - "template": "app/website/templates/html/blog_page.html", - "condition_field": "published" - }, - "Item": { - "template": "app/website/templates/html/product_page.html", - "condition_field": "show_in_website" - }, - "Item Group":{ - "template": "app/website/templates/html/product_group.html", - "condition_field": "show_in_website" - }, - "Sales Partner": { - "template": "app/website/templates/html/partner_page.html", - "condition_field": "show_in_website" - } - } } } \ No newline at end of file diff --git a/hr/doctype/leave_application/test_leave_application.py b/hr/doctype/leave_application/test_leave_application.py index 5888eaee3c..c89f7c4537 100644 --- a/hr/doctype/leave_application/test_leave_application.py +++ b/hr/doctype/leave_application/test_leave_application.py @@ -106,13 +106,12 @@ class TestLeaveApplication(unittest.TestCase): add_role("test1@example.com", "Leave Approver") add_role("test2@example.com", "Leave Approver") - self._test_leave_approval_basic_case_1() - self._test_leave_approval_basic_case_2() + self._test_leave_approval_basic_case() self._test_leave_approval_invalid_leave_approver_insert() self._test_leave_approval_invalid_leave_approver_submit() self._test_leave_approval_valid_leave_approver_insert() - def _test_leave_approval_basic_case_1(self): + def _test_leave_approval_basic_case(self): self._clear_applications() # create leave application as Employee @@ -128,19 +127,6 @@ class TestLeaveApplication(unittest.TestCase): self.assertEqual(webnotes.conn.get_value("Leave Application", application.doc.name, "docstatus"), 1) - def _test_leave_approval_basic_case_2(self): - self._clear_applications() - - # create leave application by any leave approver, - # when no leave approver specified in employee's leave approvers list - application = self.get_application(test_records[1]) - application.doc.leave_approver = "test1@example.com" - application.insert() - application.doc.status = "Approved" - application.submit() - self.assertEqual(webnotes.conn.get_value("Leave Application", application.doc.name, - "docstatus"), 1) - def _test_leave_approval_invalid_leave_approver_insert(self): from hr.doctype.leave_application.leave_application import InvalidLeaveApproverError @@ -186,11 +172,13 @@ class TestLeaveApplication(unittest.TestCase): original_department = webnotes.conn.get_value("Employee", "_T-Employee-0001", "department") webnotes.conn.set_value("Employee", "_T-Employee-0001", "department", None) - # change to valid leave approver and try to create and submit leave application - webnotes.session.user = "test2@example.com" + webnotes.session.user = "test@example.com" application = self.get_application(test_records[1]) application.doc.leave_approver = "test2@example.com" application.insert() + + # change to valid leave approver and try to submit leave application + webnotes.session.user = "test2@example.com" application.doc.status = "Approved" application.submit() self.assertEqual(webnotes.conn.get_value("Leave Application", application.doc.name, diff --git a/install_erpnext.py b/install_erpnext.py index 70cc2aaa91..79f79d7cc0 100644 --- a/install_erpnext.py +++ b/install_erpnext.py @@ -289,7 +289,7 @@ NameVirtualHost *:8080 RewriteCond %%{REQUEST_FILENAME} !-f RewriteCond %%{REQUEST_FILENAME} !-d RewriteCond %%{REQUEST_FILENAME} !-l - RewriteRule ^([^/]+)$ /web.py?page=$1 [QSA,L] + RewriteRule ^([^/]+)$ /web.py?page=$1 [QSA,L] """ % (install_path, install_path) diff --git a/patches/april_2012/__init__.py b/patches/april_2012/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/patches/april_2012/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/patches/april_2012/after_sync_cleanup.py b/patches/april_2012/after_sync_cleanup.py deleted file mode 100644 index 5e93ce1ea4..0000000000 --- a/patches/april_2012/after_sync_cleanup.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model import delete_doc - webnotes.conn.sql("update `tabDocType` set module = 'Utilities' where name in ('Question', 'Answer')") - delete_doc('Module Def', 'Knowledge Base') diff --git a/patches/april_2012/delete_about_contact.py b/patches/april_2012/delete_about_contact.py deleted file mode 100644 index 2655e3c06e..0000000000 --- a/patches/april_2012/delete_about_contact.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model import delete_doc - delete_doc('DocType', 'About Us Team') - delete_doc('DocType', 'About Us Settings') - delete_doc('DocType', 'Contact Us Settings') \ No newline at end of file diff --git a/patches/april_2012/naming_series_patch.py b/patches/april_2012/naming_series_patch.py deleted file mode 100644 index 8b086f7b2a..0000000000 --- a/patches/april_2012/naming_series_patch.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.code import get_obj - ns_list = webnotes.conn.sql("""\ - SELECT `tabDocField`.`parent`, `tabDocField`.`options` - FROM `tabDocField`, `tabDocType` - WHERE `tabDocField`.`fieldname` = 'naming_series' - AND `tabDocType`.name=`tabDocField`.parent""") - ns_obj = get_obj('Naming Series') - for ns in ns_list: - if ns[0] and isinstance(ns[1], basestring): - ns_obj.set_series_for(ns[0], ns[1].split("\n")) diff --git a/patches/april_2012/reload_c_form.py b/patches/april_2012/reload_c_form.py deleted file mode 100644 index afb8b6acfd..0000000000 --- a/patches/april_2012/reload_c_form.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.modules import reload_doc - reload_doc('accounts', 'doctype', 'c_form') diff --git a/patches/april_2012/remove_default_from_rv_detail.py b/patches/april_2012/remove_default_from_rv_detail.py deleted file mode 100644 index 7716e6ce3e..0000000000 --- a/patches/april_2012/remove_default_from_rv_detail.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("update `tabDocField` set `default` = '' where fieldname = 'cost_center' and parent = 'RV Detail' and `default` = 'Purchase - TC'") diff --git a/patches/april_2012/repost_stock_for_posting_time.py b/patches/april_2012/repost_stock_for_posting_time.py deleted file mode 100644 index 0626205f0c..0000000000 --- a/patches/april_2012/repost_stock_for_posting_time.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - res = webnotes.conn.sql("""select distinct item_code, warehouse from `tabStock Ledger Entry` - where posting_time > '00:00:00' and posting_time < '00:01:00'""", as_dict=1) - webnotes.conn.sql("update `tabStock Ledger Entry` set posting_time = '00:00:00' where posting_time > '00:00:00' and posting_time < '00:01:00'") - - from stock.stock_ledger import update_entries_after - for d in res: - update_entries_after({ - "item_code": d.item_code, - "warehouse": d.warehouse, - }) diff --git a/patches/april_2012/update_appraisal_permission.py b/patches/april_2012/update_appraisal_permission.py deleted file mode 100644 index 1c07822bd2..0000000000 --- a/patches/april_2012/update_appraisal_permission.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.doc import addchild - from webnotes.model.code import get_obj - - webnotes.conn.sql("delete from `tabDocPerm` where role = 'All' and permlevel = 0 and parent in ('Appraisal', 'Ticket', 'Project')") - - appr = get_obj('DocType', 'Appraisal', with_children=1) - ch = addchild(appr.doc, 'permissions', 'DocPerm') - ch.permlevel = 0 - ch.role = 'Employee' - ch.read = 1 - ch.write = 1 - ch.save() diff --git a/patches/april_2012/update_permlevel_in_address.py b/patches/april_2012/update_permlevel_in_address.py deleted file mode 100644 index a4b84de8fe..0000000000 --- a/patches/april_2012/update_permlevel_in_address.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("update `tabDocPerm` set permlevel = 0 where parent = 'Address'") diff --git a/patches/april_2012/update_role_in_address.py b/patches/april_2012/update_role_in_address.py deleted file mode 100644 index 33fecbea3c..0000000000 --- a/patches/april_2012/update_role_in_address.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.doc import addchild - from webnotes.model.code import get_obj - - webnotes.conn.sql("delete from `tabDocPerm` where role = 'All' and parent = 'Address'") - - role1 = ['Sales User', 'Purchase User', 'Accounts User', 'Maintenance User'] - role2 = ['Sales Manager', 'Sales Master Manager', 'Purchase Manager', 'Purchase Master Manager', 'Accounts Manager', 'Maintenance Manager'] - - addr = get_obj('DocType', 'Address', with_children=1) - for d in role1+role2: - ch = addchild(addr.doc, 'permissions', 'DocPerm') - ch.role = d - ch.read = 1 - ch.write = 1 - ch.create = 1 - if d in role2: - ch.cancel = 1 - - ch.save() diff --git a/patches/august_2012/__init__.py b/patches/august_2012/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/patches/august_2012/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/patches/august_2012/change_profile_permission.py b/patches/august_2012/change_profile_permission.py deleted file mode 100644 index 5944c03148..0000000000 --- a/patches/august_2012/change_profile_permission.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - import webnotes.model.doc - webnotes.conn.sql("delete from `tabDocPerm` where parent='Profile' and permlevel=1") - new_perms = [ - { - 'parent': 'Profile', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'Administrator', - 'permlevel': 1, - 'read': 1, - 'write': 1 - }, - { - 'parent': 'Profile', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'System Manager', - 'permlevel': 1, - 'read': 1, - 'write': 1 - }, - - ] - for perms in new_perms: - doc = webnotes.model.doc.Document('DocPerm') - doc.fields.update(perms) - doc.save() - webnotes.conn.commit() - webnotes.conn.begin() - - webnotes.reload_doc('core', 'doctype', 'profile') \ No newline at end of file diff --git a/patches/august_2012/repost_billed_amt.py b/patches/august_2012/repost_billed_amt.py deleted file mode 100644 index b545c2e621..0000000000 --- a/patches/august_2012/repost_billed_amt.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.code import get_obj - from selling.doctype.sales_common.sales_common import StatusUpdater - - invoices = webnotes.conn.sql("select name from `tabSales Invoice` where docstatus = 1") - for inv in invoices: - inv_obj = get_obj('Sales Invoice', inv[0], with_children=1) - StatusUpdater(inv_obj, 1).update_all_qty() \ No newline at end of file diff --git a/patches/august_2012/task_allocated_to_assigned.py b/patches/august_2012/task_allocated_to_assigned.py deleted file mode 100644 index 5d736bf872..0000000000 --- a/patches/august_2012/task_allocated_to_assigned.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes - -def execute(): - from webnotes.widgets.form.assign_to import add - for t in webnotes.conn.sql("""select * from tabTask - where ifnull(allocated_to, '')!=''""", as_dict=1): - add({ - 'doctype': "Task", - 'name': t['name'], - 'assign_to': t['allocated_to'], - 'assigned_by': t['owner'], - 'description': t['subject'], - 'date': t['creation'], - "no_notification": True - }) \ No newline at end of file diff --git a/patches/august_2013/p02_rename_price_list.py b/patches/august_2013/p02_rename_price_list.py index 0b1c4d0047..41efb27306 100644 --- a/patches/august_2013/p02_rename_price_list.py +++ b/patches/august_2013/p02_rename_price_list.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import webnotes def execute(): - webnotes.reload_doc("website", "doctype", "shopping_cart_price_list") + webnotes.reload_doc("selling", "doctype", "shopping_cart_price_list") for t in [ ("Supplier Quotation", "price_list_name", "buying_price_list"), diff --git a/patches/july_2012/__init__.py b/patches/july_2012/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/patches/july_2012/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/patches/july_2012/address_contact_perms.py b/patches/july_2012/address_contact_perms.py deleted file mode 100644 index 8c41dbc8e8..0000000000 --- a/patches/july_2012/address_contact_perms.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("""\ - delete from `tabDocPerm` - where parent in ('Address', 'Contact')""") - webnotes.conn.commit() - - webnotes.reload_doc('utilities', 'doctype', 'address') - webnotes.reload_doc('utilities', 'doctype', 'contact') - webnotes.conn.begin() \ No newline at end of file diff --git a/patches/july_2012/auth_table.py b/patches/july_2012/auth_table.py deleted file mode 100644 index 718243d6de..0000000000 --- a/patches/july_2012/auth_table.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -def execute(): - webnotes.conn.commit() - - from webnotes.install_lib.install import Installer - Installer(None, None).create_auth_table() - - webnotes.conn.begin() - - for user, password in webnotes.conn.sql("""select name, password from tabProfile"""): - if password: - webnotes.conn.sql("""insert into __Auth (user, `password`) values (%s, %s)""", - (user, password)) diff --git a/patches/july_2012/bin_permission.py b/patches/july_2012/bin_permission.py deleted file mode 100644 index 3f9b65cd93..0000000000 --- a/patches/july_2012/bin_permission.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("update `tabDocPerm` set permlevel = 0 where parent = 'Bin'") \ No newline at end of file diff --git a/patches/july_2012/default_freeze_account.py b/patches/july_2012/default_freeze_account.py deleted file mode 100644 index 5255aa0df8..0000000000 --- a/patches/july_2012/default_freeze_account.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("""update tabAccount set freeze_account='No' where freeze_account is null""") - webnotes.conn.sql("""update `tabPurchase Taxes and Charges` - set category='Valuation and Total' where category='For Both'""") - webnotes.conn.sql("""update `tabPurchase Taxes and Charges` - set category='Valuation' where category='For Valuation'""") - webnotes.conn.sql("""update `tabPurchase Taxes and Charges` - set category='Total' where category='For Total'""") \ No newline at end of file diff --git a/patches/july_2012/deprecate_bulk_rename.py b/patches/july_2012/deprecate_bulk_rename.py deleted file mode 100644 index 5cb25a75e0..0000000000 --- a/patches/july_2012/deprecate_bulk_rename.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model import delete_doc - delete_doc('DocType', 'Bulk Rename Tool') - webnotes.conn.commit() - webnotes.conn.sql("drop table `tabBulk Rename Tool`") - webnotes.conn.begin() \ No newline at end of file diff --git a/patches/july_2012/deprecate_import_data_control.py b/patches/july_2012/deprecate_import_data_control.py deleted file mode 100644 index f060587ccc..0000000000 --- a/patches/july_2012/deprecate_import_data_control.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """ - deprecate: - * doctype - import data control - * page - import data (old) - """ - import webnotes - from webnotes.model import delete_doc - delete_doc('DocType', 'Import Data Control') - delete_doc('Page', 'Import Data') \ No newline at end of file diff --git a/patches/july_2012/packing_list_cleanup_and_serial_no.py b/patches/july_2012/packing_list_cleanup_and_serial_no.py deleted file mode 100644 index b91ef810f1..0000000000 --- a/patches/july_2012/packing_list_cleanup_and_serial_no.py +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.utils import flt - wrong_plist = webnotes.conn.sql(""" - select dnpi.name, dnpi.parent, dnpi.docstatus, dnpi.serial_no - from `tabDelivery Note Packing Item` dnpi - where ifnull(dnpi.parent, '') != '' - and ifnull(dnpi.parent, '') not like 'old_par%' - and dnpi.parenttype = 'Delivery Note' - and not exists ( - select * from `tabDelivery Note Item` dni - where dni.item_code = dnpi.parent_item and - dni.name = dnpi.parent_detail_docname and - dni.parent = dnpi.parent - ) - """, as_dict=1) - - for d in wrong_plist: - if d['docstatus'] == 2 and d['serial_no']: - for s in d['serial_no'].splitlines(): - sle = webnotes.conn.sql(""" - select actual_qty, warehouse, voucher_no - from `tabStock Ledger Entry` - where ( - serial_no like '%s\n%%' - or serial_no like '%%\n%s' - or serial_no like '%%\n%s\n%%' - or serial_no = '%s' - ) - and voucher_no != '%s' - and ifnull(is_cancelled, 'No') = 'No' - order by name desc - limit 1 - """% (s, s, s, s, d['parent']), as_dict=1) - - status = 'Not in Use' - if sle and flt(sle[0]['actual_qty']) > 0: - status = 'Available' - elif sle and flt(sle[0]['actual_qty']) < 0: - status = 'Delivered' - - webnotes.conn.sql("update `tabSerial No` set status = %s, warehouse = %s where name = %s", (status, sle[0]['warehouse'], s)) - - webnotes.conn.sql("delete from `tabDelivery Note Packing Item` where name = %s", d['name']) \ No newline at end of file diff --git a/patches/july_2012/project_patch_repeat.py b/patches/july_2012/project_patch_repeat.py deleted file mode 100644 index c17e9c448b..0000000000 --- a/patches/july_2012/project_patch_repeat.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("""update `tabPurchase Order Item` t1, `tabPurchase Order` t2 - set t1.project_name = t2.project_name where t1.parent = t2.name - and ifnull(t1.project_name, '') = ''""") - webnotes.conn.sql("""update `tabPurchase Invoice Item` t1, `tabPurchase Invoice` t2 - set t1.project_name = t2.project_name where t1.parent = t2.name - and ifnull(t1.project_name, '') = ''""") - webnotes.conn.sql("""update `tabPurchase Receipt Item` t1, `tabPurchase Receipt` t2 - set t1.project_name = t2.project_name where t1.parent = t2.name - and ifnull(t1.project_name, '') = ''""") - - webnotes.conn.commit() - webnotes.reload_doc("buying", "doctype", "purchase_order") - webnotes.reload_doc("accounts", "doctype", "purchase_invoice") - webnotes.conn.begin() \ No newline at end of file diff --git a/patches/july_2012/remove_event_role_owner_match.py b/patches/july_2012/remove_event_role_owner_match.py deleted file mode 100644 index cd5f489036..0000000000 --- a/patches/july_2012/remove_event_role_owner_match.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("""\ - update `tabDocPerm` set `match`=NULL - where parent='Event' and role='All' and permlevel=0""") \ No newline at end of file diff --git a/patches/july_2012/repost_stock_due_to_wrong_packing_list.py b/patches/july_2012/repost_stock_due_to_wrong_packing_list.py deleted file mode 100644 index 315b4edd20..0000000000 --- a/patches/july_2012/repost_stock_due_to_wrong_packing_list.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -from stock.stock_ledger import update_entries_after - -def execute(): - # add index - webnotes.conn.commit() - try: - webnotes.conn.sql("""alter table `tabDelivery Note Packing Item` - add index item_code_warehouse (item_code, warehouse)""") - except: - pass - webnotes.conn.begin() - - webnotes.conn.auto_commit_on_many_writes = 1 - repost_reserved_qty() - cleanup_wrong_sle() - webnotes.conn.auto_commit_on_many_writes = 0 - -def repost_reserved_qty(): - from webnotes.utils import flt - bins = webnotes.conn.sql("select item_code, warehouse, name, reserved_qty from `tabBin`") - i = 0 - for d in bins: - i += 1 - reserved_qty = webnotes.conn.sql(""" - select - sum((dnpi_qty / so_item_qty) * (so_item_qty - so_item_delivered_qty)) - from - ( - select - qty as dnpi_qty, - ( - select qty from `tabSales Order Item` - where name = dnpi.parent_detail_docname - ) as so_item_qty, - ( - select ifnull(delivered_qty, 0) from `tabSales Order Item` - where name = dnpi.parent_detail_docname - ) as so_item_delivered_qty - from - ( - select qty, parent_detail_docname - from `tabDelivery Note Packing Item` dnpi_in - where item_code = %s and warehouse = %s - and parenttype="Sales Order" - and exists (select * from `tabSales Order` so - where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped') - ) dnpi - ) tab - where - so_item_qty >= so_item_delivered_qty - """, (d[0], d[1])) - - if flt(d[3]) != flt(reserved_qty[0][0]): - webnotes.conn.sql(""" - update `tabBin` set reserved_qty = %s where name = %s - """, (reserved_qty and reserved_qty[0][0] or 0, d[2])) - -def cleanup_wrong_sle(): - sle = webnotes.conn.sql(""" - select item_code, warehouse, voucher_no, name - from `tabStock Ledger Entry` sle - where voucher_type = 'Delivery Note' - and not exists( - select name from `tabDelivery Note Packing Item` - where item_code = sle.item_code - and qty = abs(sle.actual_qty) - and parent = sle.voucher_no - ) and not exists ( - select name from `tabDelivery Note Item` - where item_code = sle.item_code - and qty = abs(sle.actual_qty) - and parent = sle.voucher_no - ) - """) - if sle: - for d in sle: - webnotes.conn.sql("update `tabStock Ledger Entry` set is_cancelled = 'Yes' where name = %s", d[3]) - create_comment(d[3]) - update_entries_after({ - "item_code": d[0], - "warehouse": d[1], - "posting_date": "2012-07-01", - "posting_time": "12:05" - }) - -def create_comment(dn): - from webnotes.model.doc import Document - cmt = Document('Comment') - cmt.comment = 'Cancelled by administrator due to wrong entry in packing list' - cmt.comment_by = 'Administrator' - cmt.comment_by_fullname = 'Administrator' - cmt.comment_doctype = 'Stock Ledger Entry' - cmt.comment_docname = dn - cmt.save(1) - \ No newline at end of file diff --git a/patches/july_2012/unicode_conf.py b/patches/july_2012/unicode_conf.py deleted file mode 100644 index cbbe5daeb1..0000000000 --- a/patches/july_2012/unicode_conf.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals - -def execute(): - """appends from __future__ import unicode_literals to py files if necessary""" - import wnf - wnf.append_future_import() \ No newline at end of file diff --git a/patches/july_2012/update_purchase_tax.py b/patches/july_2012/update_purchase_tax.py deleted file mode 100644 index 28f2ca7d8c..0000000000 --- a/patches/july_2012/update_purchase_tax.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("""update `tabPurchase Taxes and Charges` - set category='Valuation and Total' where category='For Both'""") - webnotes.conn.sql("""update `tabPurchase Taxes and Charges` - set category='Valuation' where category='For Valuation'""") - webnotes.conn.sql("""update `tabPurchase Taxes and Charges` - set category='Total' where category='For Total'""") \ No newline at end of file diff --git a/patches/june_2012/__init__.py b/patches/june_2012/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/patches/june_2012/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/patches/june_2012/alter_tabsessions.py b/patches/june_2012/alter_tabsessions.py deleted file mode 100644 index 29ae17796f..0000000000 --- a/patches/june_2012/alter_tabsessions.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.commit() - webnotes.conn.sql("alter table `tabSessions` modify user varchar(180)") - webnotes.conn.begin() \ No newline at end of file diff --git a/patches/june_2012/barcode_in_feature_setup.py b/patches/june_2012/barcode_in_feature_setup.py deleted file mode 100644 index 630f50f789..0000000000 --- a/patches/june_2012/barcode_in_feature_setup.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.code import get_obj - fs = get_obj('Features Setup') - fs.doc.fs_item_barcode = 0 - fs.doc.save() - fs.validate() \ No newline at end of file diff --git a/patches/june_2012/cms2.py b/patches/june_2012/cms2.py deleted file mode 100644 index a9171d754e..0000000000 --- a/patches/june_2012/cms2.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - - # sync doctypes required for the patch - webnotes.reload_doc('website', 'doctype', 'web_page') - webnotes.reload_doc('website', 'doctype', 'website_settings') - webnotes.reload_doc('stock', 'doctype', 'item') - - cleanup() - - save_pages() - - save_website_settings() - -def cleanup(): - import webnotes - - # delete pages from `tabPage` of module Website or of type Webpage - webnotes.conn.sql("""\ - delete from `tabPage` - where module='Website' and ifnull(web_page, 'No') = 'Yes'""") - - # change show_in_website value in item table to 0 or 1 - webnotes.conn.sql("""\ - update `tabItem` - set show_in_website = if(show_in_website = 'Yes', 1, 0) - where show_in_website is not null""") - - # move comments from comment_doctype Page to Blog - webnotes.conn.sql("""\ - update `tabComment` comm, `tabBlog` blog - set comm.comment_doctype = 'Blog', comm.comment_docname = blog.name - where comm.comment_docname = blog.page_name""") - - # delete deprecated pages - import webnotes.model - for page in ['products', 'contact', 'blog', 'about']: - try: - webnotes.model.delete_doc('Page', page) - except Exception, e: - webnotes.modules.patch_handler.log(unicode(e)) - - import os - import conf - # delete other html files - exception_list = ['app.html', 'unsupported.html', 'blank.html'] - conf_dir = os.path.dirname(os.path.abspath(conf.__file__)) - public_path = os.path.join(conf_dir, 'public') - for f in os.listdir(public_path): - if f.endswith('.html') and f not in exception_list: - os.remove(os.path.join(public_path, f)) - -def save_pages(): - """save all web pages, blogs to create content""" - query_map = { - 'Web Page': """select name from `tabWeb Page` where docstatus=0""", - 'Blog': """\ - select name from `tabBlog` - where docstatus = 0 and ifnull(published, 0) = 1""", - 'Item': """\ - select name from `tabItem` - where docstatus = 0 and ifnull(show_in_website, 0) = 1""", - } - - import webnotes - from webnotes.model.bean import Bean - import webnotes.modules.patch_handler - - for dt in query_map: - for result in webnotes.conn.sql(query_map[dt], as_dict=1): - try: - Bean(dt, result['name'].encode('utf-8')).save() - except Exception, e: - webnotes.modules.patch_handler.log(unicode(e)) - -def save_website_settings(): - from webnotes.model.code import get_obj - - # rewrite pages - get_obj('Website Settings').on_update() - - ss = get_obj('Style Settings') - ss.validate() - ss.doc.save() - ss.on_update() \ No newline at end of file diff --git a/patches/june_2012/copy_uom_for_pur_inv_item.py b/patches/june_2012/copy_uom_for_pur_inv_item.py deleted file mode 100644 index 947d11014d..0000000000 --- a/patches/june_2012/copy_uom_for_pur_inv_item.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - - webnotes.reload_doc('buying', 'doctype', 'purchase_order_item') - webnotes.reload_doc('accounts', 'doctype', 'purchase_invoice_item') - webnotes.reload_doc('stock', 'doctype', 'purchase_receipt_item') - - webnotes.conn.sql("update `tabPurchase Invoice Item` t1, `tabPurchase Order Item` t2 set t1.uom = t2.uom where ifnull(t1.po_detail, '') != '' and t1.po_detail = t2.name") - webnotes.conn.sql("update `tabPurchase Invoice Item` t1, `tabPurchase Receipt Item` t2 set t1.uom = t2.uom where ifnull(t1.pr_detail, '') != '' and t1.pr_detail = t2.name") \ No newline at end of file diff --git a/patches/june_2012/delete_old_parent_entries.py b/patches/june_2012/delete_old_parent_entries.py deleted file mode 100644 index 384df775a5..0000000000 --- a/patches/june_2012/delete_old_parent_entries.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """delete entries of child table having parent like old_par%% or ''""" - import webnotes - res = webnotes.conn.sql("""\ - select dt.name from `tabDocType` dt - where ifnull(dt.istable, 0)=1 and - exists ( - select * from `tabDocField` df - where df.fieldtype='Table' and - df.options=dt.name - )""") - for r in res: - if r[0]: - webnotes.conn.sql("""\ - delete from `tab%s` - where (ifnull(parent, '')='' or parent like "old_par%%") and - ifnull(parenttype, '')!=''""" % r[0]) \ No newline at end of file diff --git a/patches/june_2012/fetch_organization_from_lead.py b/patches/june_2012/fetch_organization_from_lead.py deleted file mode 100644 index 85b14364a9..0000000000 --- a/patches/june_2012/fetch_organization_from_lead.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("update `tabQuotation` t1, `tabLead` t2 set t1.organization = t2.company_name where ifnull(t1.lead, '') != '' and t1.quotation_to = 'Lead' and ifnull(t1.organization, '') = '' and t1.lead = t2.name") \ No newline at end of file diff --git a/patches/june_2012/reports_list_permission.py b/patches/june_2012/reports_list_permission.py deleted file mode 100644 index c70b659656..0000000000 --- a/patches/june_2012/reports_list_permission.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """allow read permission to all for report list""" - import webnotes - webnotes.conn.sql("""\ - delete from `tabDocPerm` - where parent in ('Report', 'Search Criteria')""") - - webnotes.reload_doc('core', 'doctype', 'report') diff --git a/patches/june_2012/series_unique_patch.py b/patches/june_2012/series_unique_patch.py deleted file mode 100644 index 4bea9f0f60..0000000000 --- a/patches/june_2012/series_unique_patch.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """add unique constraint to series table's name column""" - import webnotes - webnotes.conn.commit() - webnotes.conn.sql("alter table `tabSeries` add unique (name)") - webnotes.conn.begin() \ No newline at end of file diff --git a/patches/june_2012/set_recurring_type.py b/patches/june_2012/set_recurring_type.py deleted file mode 100644 index c7d4d63fcb..0000000000 --- a/patches/june_2012/set_recurring_type.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.reload_doc('accounts', 'doctype', 'sales_invoice') - - webnotes.conn.sql("update `tabSales Invoice` set recurring_type = 'Monthly' where ifnull(convert_into_recurring_invoice, 0) = 1") \ No newline at end of file diff --git a/patches/june_2012/support_ticket_autoreply.py b/patches/june_2012/support_ticket_autoreply.py deleted file mode 100644 index a9c8d82d6f..0000000000 --- a/patches/june_2012/support_ticket_autoreply.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """New Send Autoreply checkbox in Email Settings""" - import webnotes - import webnotes.utils - - webnotes.conn.commit() - webnotes.reload_doc('setup', 'doctype', 'email_settings') - webnotes.conn.begin() - - sync_support_mails = webnotes.utils.cint(webnotes.conn.get_value('Email Settings', - None, 'sync_support_mails')) - - if sync_support_mails: - webnotes.conn.set_value('Email Settings', None, 'send_autoreply', 1) \ No newline at end of file diff --git a/patches/june_2013/p08_shopping_cart_settings.py b/patches/june_2013/p08_shopping_cart_settings.py index 9378c389bd..479a6961e2 100644 --- a/patches/june_2013/p08_shopping_cart_settings.py +++ b/patches/june_2013/p08_shopping_cart_settings.py @@ -4,7 +4,7 @@ import webnotes def execute(): - webnotes.reload_doc("website", "doctype", "shopping_cart_settings") + webnotes.reload_doc("selling", "doctype", "shopping_cart_settings") # create two default territories, one for home country and one named Rest of the World from setup.doctype.setup_control.setup_control import create_territories diff --git a/patches/mar_2012/__init__.py b/patches/mar_2012/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/patches/mar_2012/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/patches/mar_2012/add_fieldnames.py b/patches/mar_2012/add_fieldnames.py deleted file mode 100644 index 52cf6b7f82..0000000000 --- a/patches/mar_2012/add_fieldnames.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# do not run this patch -from __future__ import unicode_literals -def execute(): - import webnotes - import webnotes.modules - forbidden = ['%', "'", '"', '#', '*', '?', '`', '(', ')', '<', '>', '-', - '\\', '/', '.', '&', '!', '@', '$', '^', '+'] - doctype_list = webnotes.conn.sql("SELECT name, module FROM `tabDocType`") - for doctype, module in doctype_list: - docfield_list = webnotes.conn.sql("""\ - SELECT name, label, fieldtype FROM `tabDocField` - WHERE parent = %s AND IFNULL(fieldname, '') = ''""", doctype) - field_type_count = {} - count = 0 - for name, label, fieldtype in docfield_list: - fieldname = None - if label: - temp_label = label - if len(temp_label)==1: - temp_label = fieldtype + temp_label - - fieldname = temp_label.lower().replace(' ', '_') - if "<" in fieldname: - count = field_type_count.setdefault(fieldtype, 0) - fieldname = fieldtype.lower().replace(' ', '_') + str(count) - field_type_count[fieldtype] = count + 1 - elif fieldtype: - count = field_type_count.setdefault(fieldtype, 0) - fieldname = fieldtype.lower().replace(' ', '_') + str(count) - field_type_count[fieldtype] = count + 1 - - if fieldname: - for f in forbidden: fieldname = fieldname.replace(f, '') - fieldname = fieldname.replace('__', '_') - if fieldname.endswith('_'): - fieldname = fieldname[:-1] - if fieldname.startswith('_'): - fieldname = fieldname[1:] - #print fieldname - webnotes.conn.sql("""\ - UPDATE `tabDocField` SET fieldname = %s - WHERE name = %s""", (fieldname, name)) - webnotes.modules.export_doc('DocType', doctype) diff --git a/patches/mar_2012/clean_property_setter.py b/patches/mar_2012/clean_property_setter.py deleted file mode 100644 index b4ad909615..0000000000 --- a/patches/mar_2012/clean_property_setter.py +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes - -def execute(): - """ - * Remove unnecessary doctype properties - * Remove docfield property setters if fieldname doesn't exist - * Remove prev_field properties if value fieldname doesn't exist - """ - change_property_setter_fieldnames() - clean_doctype_properties() - clean_docfield_properties() - -def change_property_setter_fieldnames(): - webnotes.reload_doc('core', 'doctype', 'property_setter') - docfield_list = webnotes.conn.sql("""\ - SELECT name, fieldname FROM `tabDocField`""", as_list=1) - custom_field_list = webnotes.conn.sql("""\ - SELECT name, fieldname FROM `tabCustom Field`""", as_list=1) - field_list = docfield_list + custom_field_list - property_setter_list = webnotes.conn.sql("""\ - SELECT name, doc_name, value, property - FROM `tabProperty Setter` - WHERE doctype_or_field='DocField'""") - field_dict = dict(field_list) - for name, doc_name, value, prop in property_setter_list: - if doc_name in field_dict: - webnotes.conn.sql("""\ - UPDATE `tabProperty Setter` - SET field_name = %s - WHERE name = %s""", (field_dict.get(doc_name), name)) - if value in field_dict and prop=='previous_field': - webnotes.conn.sql("""\ - UPDATE `tabProperty Setter` - SET value = %s - WHERE name = %s""", (field_dict.get(value), name)) - -def clean_doctype_properties(): - desc = webnotes.conn.sql("DESC `tabDocType`", as_dict=1) - property_list = '", "'.join([d.get('Field') for d in desc]) - webnotes.conn.sql("""\ - DELETE FROM `tabProperty Setter` - WHERE doctype_or_field = 'DocType' - AND property NOT IN ("%s")""" % property_list) - -def clean_docfield_properties(): - delete_list_1 = webnotes.conn.sql("""\ - SELECT name FROM `tabProperty Setter` ps - WHERE doctype_or_field = 'DocField' - AND NOT EXISTS ( - SELECT fieldname FROM `tabDocField` df - WHERE df.parent = ps.doc_type - AND df.fieldname = ps.field_name - ) AND NOT EXISTS ( - SELECT fieldname FROM `tabCustom Field` cf - WHERE cf.dt = ps.doc_type - AND cf.fieldname = ps.field_name - )""") - - delete_list_2 = webnotes.conn.sql("""\ - SELECT name FROM `tabProperty Setter` ps - WHERE doctype_or_field = 'DocField' - AND property = 'previous_field' - AND NOT EXISTS ( - SELECT fieldname FROM `tabDocField` df - WHERE df.parent = ps.doc_type - AND df.fieldname = ps.value - ) AND NOT EXISTS ( - SELECT fieldname FROM `tabCustom Field` cf - WHERE cf.dt = ps.doc_type - AND cf.fieldname = ps.value - )""") - - delete_list = [d[0] for d in delete_list_1] + [d[0] for d in delete_list_2] - - webnotes.conn.sql("""\ - DELETE FROM `tabProperty Setter` - WHERE NAME IN ("%s")""" % '", "'.join(delete_list)) diff --git a/patches/mar_2012/cleanup_control_panel.py b/patches/mar_2012/cleanup_control_panel.py deleted file mode 100644 index 6692bc441e..0000000000 --- a/patches/mar_2012/cleanup_control_panel.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -def execute(): - webnotes.conn.sql("""\ - DELETE FROM `tabSingles` - WHERE doctype = 'Control Panel' - AND field IN ("sync_with_gateway", "mail_password", "auto_email_id", - "mail_port", "outgoing_mail_server", "mail_login", "use_ssl")""") diff --git a/patches/mar_2012/create_custom_fields.py b/patches/mar_2012/create_custom_fields.py deleted file mode 100644 index b9fe2f0437..0000000000 --- a/patches/mar_2012/create_custom_fields.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# do not run this patch -from __future__ import unicode_literals -field_list = [ -['Contact', 'notes'], -['Contact', 'birthday'], -['Contact', 'anniversary'], -['Customer', 'state_tax_type'], -['Customer', 'tin_no'], -['Customer', 'excise_registration_number'], -['Customer', 'customer_discount_details'], -['Customer', 'notes'], -['Customer', 'follow_up_section'], -['Customer', 'follow_up'], -['Delivery Note', 'shipping_contact_no'], -['Delivery Note', 'shipping_tin_no'], -['Delivery Note', 'shipping_excise_no'], -['Delivery Note', 'tin_no'], -['Delivery Note', 'excise_no'], -['Delivery Note Detail', 'cetsh_number'], -['Item', 'base_material'], -['Item', 'tool_type'], -['Item', 'no_of_flutes'], -['Item', 'special_treatment'], -['Item', 'length'], -['Item', 'width'], -['Item', 'height_dia'], -['Item', 'pl_item'], -['Item', 'cetsh_number'], -['Item', 'stock_maintained'], -['Item', 'is_rm'], -['Journal Voucher Detail', 'line_remarks'], -['Lead', 'designation'], -['Purchase Order', 'challan_number'], -['Quotation', 'cust_enq_no'], -['Quotation', 'enq_date'], -['Quotation', 'quote_valid'], -['Quotation', 'due_date'], -['Receivable Voucher', 'voucher_time'], -['Receivable Voucher', 'removal_time'], -['Receivable Voucher', 'removal_date'], -['Receivable Voucher', 'shipping_address'], -['Receivable Voucher', 'shipping_location'], -['Receivable Voucher', 'ship_to'], -['Receivable Voucher', 'shipping_contact_no'], -['Receivable Voucher', 'shipping_excise_no'], -['Receivable Voucher', 'shipping_tin_no'], -['Receivable Voucher', 'po_no'], -['Receivable Voucher', 'po_date'], -['Receivable Voucher', 'lr_no'], -['Receivable Voucher', 'transporters'], -['Receivable Voucher', 'ship_terms'], -['Receivable Voucher', 'tin_no'], -['Receivable Voucher', 'excise_no'], -['RV Detail', 'cetsh_number'], -['Sales Order', 'shipping_contact_no'], -['Sales Order', 'shipping_tin_no'], -['Sales Order', 'shipping_excise_no'], -['Sales Order', 'tin_no'], -['Sales Order', 'excise_number'], -['Sales Order Detail', 'cetsh_number'], -['Sales Order Detail', 'prd_notes'], -['Shipping Address', 'phone_no'], -['Shipping Address', 'tin_no'], -['Shipping Address', 'excise_no'], -['Stock Entry', 'process_custom'], -['Stock Entry', 'city'], -['Stock Entry', 'address_line_2'], -['Stock Entry', 'address_line_1'], -['Stock Entry', 'comp_other'], -['Stock Entry', 'mobile_no'], -['Stock Entry', 'phone_no'], -['Stock Entry', 'country'], -['Stock Entry', 'state'], -['Stock Entry', 'challan_number'], -['Stock Entry Detail', 'machine'], -['Stock Entry Detail', 'worker'], -['Supplier', 'notes'], -['Supplier', 'purchase_other_charges'], -['Supplier', 'tax_details'], -['Supplier', 'tin_number'], -['Supplier', 'excise_regd_number'], -['Supplier', 'service_tax_regd_number'], -['Warehouse', 'comp_other'], -['Warehouse', 'process'], -['Warehouse', 'country'], -['Warehouse', 'tax_registration_number'], -['Warehouse Type', 'process'], -['Workstation', 'maintenance_data'], -] - - -import webnotes -from webnotes.model.code import get_obj -from webnotes.model.doc import Document - -def execute(): - webnotes.reload_doc('core', 'doctype', 'custom_field') - for f in field_list: - res = webnotes.conn.sql("""SELECT name FROM `tabCustom Field` - WHERE dt=%s AND fieldname=%s""", (f[0], f[1])) - if res: continue - docfield = webnotes.conn.sql("""SELECT * FROM `tabDocField` - WHERE parent=%s AND fieldname=%s""", (f[0], f[1]), as_dict=1) - if not docfield: continue - custom_field = docfield[0] - - # scrub custom field dict - custom_field['dt'] = custom_field['parent'] - del custom_field['parent'] - - d = Document('Custom Field', fielddata=custom_field) - d.name = custom_field['dt'] + '-' + custom_field['fieldname'] - d.save(1, ignore_fields=1) - #obj = get_obj(doc=d) - #obj.on_update() diff --git a/patches/mar_2012/delete_docformat.py b/patches/mar_2012/delete_docformat.py deleted file mode 100644 index b6ee2ebd81..0000000000 --- a/patches/mar_2012/delete_docformat.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("DELETE FROM `tabDocField` WHERE options='DocFormat'") - webnotes.conn.sql("DELETE FROM `tabDocField` WHERE parent='DocFormat'") - webnotes.conn.sql("DELETE FROM `tabDocType` WHERE name='DocFormat'") - webnotes.conn.commit() - webnotes.conn.sql("DROP TABLE `tabDocFormat`") - webnotes.conn.begin() diff --git a/patches/mar_2012/doctype_get_refactor.py b/patches/mar_2012/doctype_get_refactor.py deleted file mode 100644 index 0900b9b78e..0000000000 --- a/patches/mar_2012/doctype_get_refactor.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -def execute(): - """ - * Custom Field changes - * Add file_list to required tables - * Change floats/currency to decimal(18, 6) - * Remove DocFormat from DocType's fields - * Remove 'no_column' from DocField - * Drop table DocFormat - """ - import webnotes.model.sync - webnotes.model.sync.sync_all(force=1) - - handle_custom_fields() - create_file_list() - - # do at last - needs commit due to DDL statements - change_to_decimal() - -def handle_custom_fields(): - """ - * Assign idx to custom fields - * Create property setter entry of previous field - * Remove custom fields from tabDocField - """ - cf = get_cf() - assign_idx(cf) - create_prev_field_prop_setter(cf) - remove_custom_from_docfield(cf) - -def get_cf(): - return webnotes.conn.sql("""\ - SELECT * FROM `tabCustom Field` - WHERE docstatus < 2""", as_dict=1) - -def assign_idx(cf): - from webnotes.model.doctype import get - from webnotes.utils import cint - #print len(cf) - for f in cf: - #print f.get('dt'), f.get('name') - if f.get('idx'): continue - temp_doclist = get(f.get('dt'), form=0) - #print len(temp_doclist) - max_idx = max(d.idx for d in temp_doclist if d.doctype=='DocField') - if not max_idx: continue - webnotes.conn.sql("""\ - UPDATE `tabCustom Field` SET idx=%s - WHERE name=%s""", (cint(max_idx)+1, f.get('name'))) - -def create_prev_field_prop_setter(cf): - from webnotes.model.doc import Document - from core.doctype.custom_field.custom_field import get_fields_label - for f in cf: - idx_label_list, field_list = get_fields_label(f.get('dt'), 0) - temp_insert_after = (f.get('insert_after') or '').split(" - ") - if len(temp_insert_after)<=1: continue - similar_idx_label = [il for il in idx_label_list \ - if temp_insert_after[0] in il] - if not similar_idx_label: continue - label_index = idx_label_list.index(similar_idx_label[0]) - if label_index==-1: return - - webnotes.conn.sql("""\ - UPDATE `tabCustom Field` - SET insert_after = %s - WHERE name = %s""", (similar_idx_label[0], f.get('name'))) - - prev_field = field_list[label_index] - res = webnotes.conn.sql("""\ - SELECT name FROM `tabProperty Setter` - WHERE doc_type = %s - AND field_name = %s - AND property = 'previous_field'""", (f.get('dt'), f.get('fieldname'))) - - if not res: - ps = Document('Property Setter', fielddata = { - 'doctype_or_field': 'DocField', - 'doc_type': f.get('dt'), - 'field_name': f.get('fieldname'), - 'property': 'previous_field', - 'value': prev_field, - 'property_type': 'Data', - 'select_doctype': f.get('dt') - }) - ps.save(1) - -def remove_custom_from_docfield(cf): - for f in cf: - webnotes.conn.sql("""\ - DELETE FROM `tabDocField` - WHERE parent=%s AND fieldname=%s""", (f.get('dt'), - f.get('fieldname'))) - -def create_file_list(): - should_exist = ['Website Settings', 'Web Page', 'Timesheet', 'Task', - 'Support Ticket', 'Supplier', 'Style Settings', 'Stock Reconciliation', - 'Stock Entry', 'Serial No', 'Sales Order', 'Sales Invoice', - 'Quotation', 'Question', 'Purchase Receipt', 'Purchase Order', - 'Project', 'Profile', 'Production Order', 'Product', 'Print Format', - 'Price List', 'Purchase Invoice', 'Page', - 'Maintenance Visit', 'Maintenance Schedule', 'Letter Head', - 'Leave Application', 'Lead', 'Journal Voucher', 'Item', 'Material Request', - 'Expense Claim', 'Opportunity', 'Employee', 'Delivery Note', - 'Customer Issue', 'Customer', 'Contact Us Settings', 'Company', - 'Bulk Rename Tool', 'Blog', 'BOM', 'About Us Settings'] - - from webnotes.model.code import get_obj - - for dt in should_exist: - obj = get_obj('DocType', dt, with_children=1) - obj.doc.allow_attach = 1 - obj.doc.save() - obj.make_file_list() - from webnotes.model.db_schema import updatedb - updatedb(obj.doc.name) - - webnotes.clear_cache(doctype=obj.doc.name) - -def change_to_decimal(): - webnotes.conn.commit() - tables = webnotes.conn.sql("SHOW TABLES") - alter_tables_list = [] - for tab in tables: - if not tab: continue - desc = webnotes.conn.sql("DESC `%s`" % tab[0], as_dict=1) - flist = [] - for d in desc: - if d.get('Type')=='decimal(14,2)': - flist.append(d.get('Field')) - if flist: - #print tab[0], flist - statements = ("MODIFY `%s` decimal(18,6)" % f for f in flist) - statements = ", \n".join(statements) - alter_tables_list.append("ALTER TABLE `%s` \n%s\n" % (tab[0], - statements)) - - #print "\n\n".join(alter_tables_list) - for at in alter_tables_list: - webnotes.conn.sql(at) - - webnotes.conn.begin() - diff --git a/patches/mar_2012/earning_deduction_type_patch.py b/patches/mar_2012/earning_deduction_type_patch.py deleted file mode 100644 index 43a14338b9..0000000000 --- a/patches/mar_2012/earning_deduction_type_patch.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql(""" - UPDATE `tabDocField` - SET fieldtype = 'Link', options = 'Deduction Type' - WHERE parent = 'Deduction Detail' - AND fieldname = 'd_type' - """) - webnotes.conn.sql(""" - UPDATE `tabDocField` - SET fieldtype = 'Link', options = 'Earning Type' - WHERE parent = 'Earning Detail' - AND fieldname = 'e_type' - """) diff --git a/patches/mar_2012/is_submittable_patch.py b/patches/mar_2012/is_submittable_patch.py deleted file mode 100644 index b2da16cb2a..0000000000 --- a/patches/mar_2012/is_submittable_patch.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# dont run this patch -from __future__ import unicode_literals -def execute(): - import webnotes - import webnotes.model.doctype - from webnotes.utils import cint - from webnotes.model.doc import Document - from webnotes.model.code import get_obj - doctype_list = webnotes.conn.sql("SELECT name FROM `tabDocType`") - for dt in doctype_list: - doclist = webnotes.model.doctype.get(dt[0], form=0) - is_submittable = 0 - for d in doclist: - if d.doctype == 'DocPerm' and d.fields.get('permlevel') == 0 \ - and cint(d.fields.get('submit')) == 1: - is_submittable = 1 - break - if is_submittable: - dt_doc = Document('DocType', doclist[0].name) - dt_doc.is_submittable = 1 - dt_doc.save() - obj = get_obj(doc=dt_doc) - obj.make_amendable() - obj.on_update() diff --git a/patches/mar_2012/usertags.py b/patches/mar_2012/usertags.py deleted file mode 100644 index 4cb9b14cd7..0000000000 --- a/patches/mar_2012/usertags.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - doctype_list = webnotes.conn.sql("""SELECT name FROM `tabDocType` - WHERE docstatus<2 AND IFNULL(issingle, 0)=0 - AND IFNULL(istable, 0)=0""") - webnotes.conn.commit() - for d in doctype_list: - add_col = True - desc = webnotes.conn.sql("DESC `tab%s`" % d[0], as_dict=1) - for td in desc: - if td.get('Field')=='_user_tags': - add_col = False - - if add_col: - webnotes.conn.sql("alter table `tab%s` add column `_user_tags` varchar(180)" % d[0]) - webnotes.conn.begin() - diff --git a/patches/may_2012/__init__.py b/patches/may_2012/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/patches/may_2012/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/patches/may_2012/cleanup_notification_control.py b/patches/may_2012/cleanup_notification_control.py deleted file mode 100644 index 054f7ec907..0000000000 --- a/patches/may_2012/cleanup_notification_control.py +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql(""" - delete from `tabSingles` - where doctype='Notification Control' - and field in ( - 'payable_voucher', - 'payment_received_message', - 'payment_sent_message', - 'enquiry') - """) - ren_list = [ - ['expense_voucher', 'expense_claim'], - ['receivable_voucher', 'sales_invoice'], - ['enquiry', 'opportunity'], - ] - for r in ren_list: - webnotes.conn.sql(""" - update `tabSingles` - set field=%s - where field=%s - and doctype='Notification Control' - """, (r[1], r[0])) - - webnotes.conn.commit() - webnotes.conn.begin() - webnotes.reload_doc('setup', 'doctype', 'notification_control') \ No newline at end of file diff --git a/patches/may_2012/cleanup_property_setter.py b/patches/may_2012/cleanup_property_setter.py deleted file mode 100644 index b793e9d7bb..0000000000 --- a/patches/may_2012/cleanup_property_setter.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("delete from `tabProperty Setter` where property in ('width', 'previous_field')") - - webnotes.conn.sql("delete from `tabSingles` where field = 'footer_font_color' and doctype = 'Style Settings'") diff --git a/patches/may_2012/create_report_manager_role.py b/patches/may_2012/create_report_manager_role.py deleted file mode 100644 index 56f2aa9cd9..0000000000 --- a/patches/may_2012/create_report_manager_role.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.doc import Document - - if not webnotes.conn.sql("select name from `tabRole` where name = 'Report Manager'"): - r = Document('Role') - r.role_name = 'Report Manager' - r.module = 'Core' - r.save() \ No newline at end of file diff --git a/patches/may_2012/cs_server_readonly.py b/patches/may_2012/cs_server_readonly.py deleted file mode 100644 index 378a73da11..0000000000 --- a/patches/may_2012/cs_server_readonly.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """Make server custom script readonly for system manager""" - import webnotes.model.doc - new_perms = [ - { - 'parent': 'Custom Script', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'System Manager', - 'permlevel': 1, - 'read': 1, - }, - { - 'parent': 'Custom Script', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'Administrator', - 'permlevel': 1, - 'read': 1, - 'write': 1 - }, - ] - for perms in new_perms: - doc = webnotes.model.doc.Document('DocPerm') - doc.fields.update(perms) - doc.save() - webnotes.conn.commit() - webnotes.conn.begin() - webnotes.reload_doc('core', 'doctype', 'custom_script') \ No newline at end of file diff --git a/patches/may_2012/customize_form_cleanup.py b/patches/may_2012/customize_form_cleanup.py deleted file mode 100644 index ab86f0583c..0000000000 --- a/patches/may_2012/customize_form_cleanup.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("delete from `tabCustomize Form Field`") - webnotes.conn.sql("""delete from `tabSingles` - where doctype='Customize Form'""") \ No newline at end of file diff --git a/patches/may_2012/page_role_series_fix.py b/patches/may_2012/page_role_series_fix.py deleted file mode 100644 index c2b18f4d7d..0000000000 --- a/patches/may_2012/page_role_series_fix.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - sr = webnotes.conn.sql("select max(name) from `tabPage Role`") - if sr and sr[0][0].startswith('PR'): - webnotes.conn.sql("update tabSeries set current = %s where name = 'PR'", int(sr[0][0][2:])) diff --git a/patches/may_2012/profile_perm_patch.py b/patches/may_2012/profile_perm_patch.py deleted file mode 100644 index 26fc1ab03c..0000000000 --- a/patches/may_2012/profile_perm_patch.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """Make profile readonly for role All""" - import webnotes.model.doc - webnotes.conn.sql("delete from `tabDocPerm` where parent='Profile' and role='All'") - new_perms = [ - { - 'parent': 'Profile', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'All', - 'permlevel': 0, - 'read': 1, - }, - ] - for perms in new_perms: - doc = webnotes.model.doc.Document('DocPerm') - doc.fields.update(perms) - doc.save() - webnotes.conn.commit() - webnotes.conn.begin() - webnotes.reload_doc('core', 'doctype', 'profile') \ No newline at end of file diff --git a/patches/may_2012/reload_sales_invoice_pf.py b/patches/may_2012/reload_sales_invoice_pf.py deleted file mode 100644 index 72a8e4100e..0000000000 --- a/patches/may_2012/reload_sales_invoice_pf.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - import webnotes.modules - res = webnotes.conn.sql("""\ - select module, name, standard from `tabPrint Format` - where name like 'Sales Invoice%'""", as_dict=1) - for r in res: - if r.get('standard')=='Yes' and \ - r.get('name') in [ - 'Sales Invoice Classic', - 'Sales Invoice Spartan', - 'Sales Invoice Modern' - ]: - webnotes.modules.reload_doc(r.get('module'), 'Print Format', r.get('name')) - \ No newline at end of file diff --git a/patches/may_2012/remove_communication_log.py b/patches/may_2012/remove_communication_log.py deleted file mode 100644 index 0c06f8d6bb..0000000000 --- a/patches/may_2012/remove_communication_log.py +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.reload_doc('support', 'doctype', 'communication') - webnotes.conn.commit() - webnotes.conn.begin() - - # change doctype property setter and custom fields, and save them - move_customizations() - - try: - remove_communication_log() - except Exception, e: - if e.args[0] != 1146: - raise e - -def move_customizations(): - import webnotes.model.doc - import webnotes.model.doctype - - res = webnotes.conn.sql("""\ - delete from `tabProperty Setter` - where property='previous_field' - and doc_type = 'Communication Log'""") - - res = webnotes.conn.sql("""\ - select name from `tabCustom Field` - where dt='Communication Log'""") - for r in res: - d = webnotes.model.doc.Document('Custom Field', r[0]) - d.dt = 'Communication' - d.save() - from webnotes.model.db_schema import updatedb - updatedb('Communication') - - res = webnotes.conn.sql("""\ - select field_name from `tabProperty Setter` - where doc_type='Communication Log' and field_name is not null""") - - doclist = webnotes.model.doctype.get('Communication', 0) - field_list = [d.fieldname for d in doclist if d.doctype=='DocField'] - for r in res: - if r[0] in field_list: - webnotes.conn.sql("""\ - update `tabProperty Setter` - set doc_type = 'Communication' - where field_name=%s and doc_type='Communication Log'""", r[0]) - - webnotes.conn.sql("""\ - delete from `tabProperty Setter` - where doc_type='Communication Log'""") - - webnotes.clear_cache(doctype="Communication") - -def remove_communication_log(): - import webnotes - import webnotes.model - import webnotes.model.doc - import webnotes.model.doctype - - webnotes.conn.auto_commit_on_many_writes = True - - # get all communication log records - comm_log_list = webnotes.conn.sql("select * from `tabCommunication Log`", - as_dict=1) - - field_list = [d.fieldname for d in \ - webnotes.model.doctype.get('Communication', 0) \ - if d.doctype=='DocField'] - - # copy it to communication - for comm_log in comm_log_list: - d = webnotes.model.doc.Document('Communication') - - for key in comm_log.keys(): - if key not in webnotes.model.default_fields: - d.fields[key] = comm_log[key] - - parenttype = (comm_log.get('parenttype') or '').lower() - if parenttype in field_list: - d.fields[parenttype] = comm_log.get('parent') - - d.naming_series = 'COMM-' - d.subject = 'Follow Up' - d.content = comm_log.get('notes') or '' - d.medium = comm_log.get('follow_up_type') or '' - d.sales_person = comm_log.get('follow_up_by') - d.communication_date = comm_log.get('date') - d.category = 'Miscellaneous' - d.action = 'No Action' - d.save(ignore_fields=1) - - # delete records with parent type "Customer", "Lead", "Supplier" - webnotes.conn.sql("""\ - delete from `tabCommunication Log` - where parenttype in ('Customer', 'Lead', 'Supplier', - 'Opportunity', 'Quotation')""") - - # if all records deleted, drop table communication log - # and delete doctype communication log - # if for some reason, records remain, dont drop table and dont delete doctype - count = webnotes.conn.sql("select count(*) from `tabCommunication Log`")[0][0] - if not count: - webnotes.model.delete_doc('DocType', 'Communication Log') - webnotes.conn.commit() - webnotes.conn.sql("drop table `tabCommunication Log`") - webnotes.conn.begin() \ No newline at end of file diff --git a/patches/may_2012/remove_euro_currency.py b/patches/may_2012/remove_euro_currency.py deleted file mode 100644 index 02e439b63a..0000000000 --- a/patches/may_2012/remove_euro_currency.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """ - * Replace EURO with EUR - * Delete EURO from tabCurrency - """ - import webnotes - tables = webnotes.conn.sql("show tables") - for (tab,) in tables: - desc = webnotes.conn.sql("desc `%s`" % tab, as_dict=1) - for d in desc: - if "currency" in d.get('Field'): - field = d.get('Field') - webnotes.conn.sql("""\ - update `%s` set `%s`='EUR' - where `%s`='EURO'""" % (tab, field, field)) - webnotes.conn.sql("update `tabSingles` set value='EUR' where value='EURO'") - webnotes.conn.sql("delete from `tabCurrency` where name='EURO'") \ No newline at end of file diff --git a/patches/may_2012/rename_prev_doctype.py b/patches/may_2012/rename_prev_doctype.py deleted file mode 100644 index 81a2578169..0000000000 --- a/patches/may_2012/rename_prev_doctype.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - dt_list = webnotes.conn.sql("select parent, fieldname from `tabDocField` where fieldname in ('against_doctype', 'prevdoc_doctype')") - - ren_dt = { - 'Indent' : 'Material Request', - 'Enquiry' : 'Opportunity', - 'Receivable Voucher' : 'Sales Invoice', - 'Payable Voucher' : 'Purchase Invoice' - } - - for d in ren_dt: - for dt in dt_list: - webnotes.conn.sql("update `tab%s` set %s = '%s' where %s = '%s'" % (dt[0], dt[1], ren_dt[d], dt[1], d)) diff --git a/patches/may_2012/same_purchase_rate_patch.py b/patches/may_2012/same_purchase_rate_patch.py deleted file mode 100644 index edb135f8bd..0000000000 --- a/patches/may_2012/same_purchase_rate_patch.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.model.code import get_obj - gd = get_obj('Global Defaults') - gd.doc.maintain_same_rate = 1 - gd.doc.save() - gd.on_update() - \ No newline at end of file diff --git a/patches/may_2012/std_pf_readonly.py b/patches/may_2012/std_pf_readonly.py deleted file mode 100644 index f2e7261f63..0000000000 --- a/patches/may_2012/std_pf_readonly.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - """Make standard print formats readonly for system manager""" - import webnotes.model.doc - new_perms = [ - { - 'parent': 'Print Format', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'System Manager', - 'permlevel': 1, - 'read': 1, - }, - { - 'parent': 'Print Format', - 'parentfield': 'permissions', - 'parenttype': 'DocType', - 'role': 'Administrator', - 'permlevel': 1, - 'read': 1, - 'write': 1 - }, - ] - for perms in new_perms: - doc = webnotes.model.doc.Document('DocPerm') - doc.fields.update(perms) - doc.save() - webnotes.conn.commit() - webnotes.conn.begin() - webnotes.reload_doc('core', 'doctype', 'print_format') \ No newline at end of file diff --git a/patches/may_2012/stock_reco_patch.py b/patches/may_2012/stock_reco_patch.py deleted file mode 100644 index a3c702f2f7..0000000000 --- a/patches/may_2012/stock_reco_patch.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -def execute(): - import webnotes - from webnotes.modules import reload_doc - reload_doc('stock', 'doctype', 'stock_reconciliation') - - sr = webnotes.conn.sql("select name, file_list from `tabStock Reconciliation` where docstatus = 1") - for d in sr: - if d[1]: - filename = d[1].split(',')[1] - - from webnotes.utils import file_manager - fn, content = file_manager.get_file(filename) - - if not isinstance(content, basestring) and hasattr(content, 'tostring'): - content = content.tostring() - - webnotes.conn.sql("update `tabStock Reconciliation` set diff_info = %s where name = %s and ifnull(diff_info, '') = ''", (content, d[0])) diff --git a/patches/patch_list.py b/patches/patch_list.py index e747993d35..7f7c747fe2 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -10,60 +10,6 @@ patch_list = [ "execute:webnotes.reload_doc('core', 'doctype', 'docperm') #2013-07-16", "execute:webnotes.reload_doc('core', 'doctype', 'page') #2013-07-16", "execute:webnotes.reload_doc('core', 'doctype', 'report') #2013-07-16", - "patches.mar_2012.clean_property_setter", - "patches.april_2012.naming_series_patch", - "patches.mar_2012.cleanup_control_panel", - "patches.mar_2012.doctype_get_refactor", - "patches.mar_2012.delete_docformat", - "patches.mar_2012.usertags", - "patches.april_2012.reload_c_form", - "patches.april_2012.after_sync_cleanup", - "patches.april_2012.remove_default_from_rv_detail", - "patches.april_2012.update_role_in_address", - "patches.april_2012.update_permlevel_in_address", - "patches.april_2012.update_appraisal_permission", - "patches.april_2012.repost_stock_for_posting_time", - "patches.may_2012.cleanup_property_setter", - "patches.may_2012.rename_prev_doctype", - "patches.may_2012.cleanup_notification_control", - "patches.may_2012.stock_reco_patch", - "patches.may_2012.page_role_series_fix", - "patches.may_2012.reload_sales_invoice_pf", - "patches.may_2012.std_pf_readonly", - "patches.may_2012.customize_form_cleanup", - "patches.may_2012.cs_server_readonly", - "patches.may_2012.clear_session_cache", - "patches.may_2012.same_purchase_rate_patch", - "patches.may_2012.create_report_manager_role", - "patches.may_2012.profile_perm_patch", - "patches.may_2012.remove_euro_currency", - "patches.may_2012.remove_communication_log", - "patches.june_2012.barcode_in_feature_setup", - "patches.june_2012.copy_uom_for_pur_inv_item", - "patches.june_2012.fetch_organization_from_lead", - "patches.june_2012.reports_list_permission", - "patches.june_2012.support_ticket_autoreply", - "patches.june_2012.series_unique_patch", - "patches.june_2012.set_recurring_type", - "patches.june_2012.alter_tabsessions", - "patches.june_2012.delete_old_parent_entries", - "patches.april_2012.delete_about_contact", - "patches.july_2012.reload_pr_po_mapper", - "patches.july_2012.address_contact_perms", - "patches.july_2012.packing_list_cleanup_and_serial_no", - "patches.july_2012.deprecate_import_data_control", - "patches.july_2012.default_freeze_account", - "patches.july_2012.update_purchase_tax", - "patches.june_2012.cms2", - "patches.july_2012.auth_table", - "patches.july_2012.remove_event_role_owner_match", - "patches.july_2012.deprecate_bulk_rename", - "patches.july_2012.bin_permission", - "patches.july_2012.project_patch_repeat", - "patches.july_2012.repost_stock_due_to_wrong_packing_list", - "patches.august_2012.task_allocated_to_assigned", - "patches.august_2012.change_profile_permission", - "patches.august_2012.repost_billed_amt", "patches.september_2012.stock_report_permissions_for_accounts", "patches.september_2012.communication_delete_permission", "patches.september_2012.all_permissions_patch", @@ -255,7 +201,6 @@ patch_list = [ "patches.august_2013.p05_employee_birthdays", "execute:webnotes.reload_doc('accounts', 'Print Format', 'POS Invoice') # 2013-08-16", "patches.august_2013.p06_fix_sle_against_stock_entry", - "execute:webnotes.bean('Style Settings').save() #2013-08-20", "patches.september_2013.p01_add_user_defaults_from_pos_setting", "execute:webnotes.reload_doc('accounts', 'Print Format', 'POS Invoice') # 2013-09-02", "patches.september_2013.p01_fix_buying_amount_gl_entries", @@ -264,4 +209,6 @@ patch_list = [ "patches.september_2013.p02_fix_serial_no_status", "patches.september_2013.p03_modify_item_price_include_in_price_list", "patches.september_2013.p03_update_stock_uom_in_sle", + "patches.september_2013.p03_move_website_to_framework", + "execute:webnotes.bean('Style Settings').save() #2013-09-19", ] \ No newline at end of file diff --git a/patches/september_2013/p02_fix_serial_no_status.py b/patches/september_2013/p02_fix_serial_no_status.py index 714cd7a377..58c2957815 100644 --- a/patches/september_2013/p02_fix_serial_no_status.py +++ b/patches/september_2013/p02_fix_serial_no_status.py @@ -17,7 +17,7 @@ def execute(): serial_nos = d.serial_no.split("\n") for sr in serial_nos: serial_no = sr.strip() - if serial_no: + if serial_no and webnotes.conn.exists("Serial No", serial_no): serial_bean = webnotes.bean("Serial No", serial_no) if serial_bean.doc.status == "Not Available": latest_sle = webnotes.conn.sql("""select voucher_no from `tabStock Ledger Entry` diff --git a/patches/september_2013/p03_modify_item_price_include_in_price_list.py b/patches/september_2013/p03_modify_item_price_include_in_price_list.py index f29f8f5bf0..8ca6d76f9c 100644 --- a/patches/september_2013/p03_modify_item_price_include_in_price_list.py +++ b/patches/september_2013/p03_modify_item_price_include_in_price_list.py @@ -7,11 +7,13 @@ import webnotes def execute(): webnotes.reload_doc("setup", "doctype", "price_list") webnotes.reload_doc("setup", "doctype", "item_price") + webnotes.reload_doc("stock", "doctype", "item") + webnotes.conn.sql("""update `tabItem Price` set parenttype='Price List', - parentfield='item_prices', item_code=parent""") - + parentfield='item_prices', `item_code`=`parent`""") + # re-arranging idx of items - webnotes.conn.sql("""update `tabItem Price` set parent=price_list, idx=0""") + webnotes.conn.sql("""update `tabItem Price` set `parent`=`price_list`, idx=0""") for pl in webnotes.conn.sql("""select name from `tabPrice List`"""): webnotes.conn.sql("""set @name=0""") webnotes.conn.sql("""update `tabItem Price` set idx = @name := IF(ISNULL( @name ), 0, @name + 1) diff --git a/patches/september_2013/p03_move_website_to_framework.py b/patches/september_2013/p03_move_website_to_framework.py new file mode 100644 index 0000000000..9c15bcc34c --- /dev/null +++ b/patches/september_2013/p03_move_website_to_framework.py @@ -0,0 +1,17 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes.utils import get_base_path +import os, shutil + +def execute(): + # remove pyc files + utils_pyc = os.path.join(get_base_path(), "app", "selling", "utils.pyc") + if os.path.exists(utils_pyc): + os.remove(utils_pyc) + + old_path = os.path.join(get_base_path(), "app", "website") + if os.path.exists(old_path): + shutil.rmtree(old_path) \ No newline at end of file diff --git a/website/doctype/blog_category/__init__.py b/portal/__init__.py similarity index 100% rename from website/doctype/blog_category/__init__.py rename to portal/__init__.py diff --git a/website/doctype/blog_post/__init__.py b/portal/templates/__init__.py similarity index 100% rename from website/doctype/blog_post/__init__.py rename to portal/templates/__init__.py diff --git a/portal/templates/base.html b/portal/templates/base.html new file mode 100644 index 0000000000..bc6fb9755c --- /dev/null +++ b/portal/templates/base.html @@ -0,0 +1,3 @@ +{% extends "lib/website/templates/base.html" %} + +{% block footer %}{% include "app/portal/templates/includes/footer.html" %}{% endblock %} \ No newline at end of file diff --git a/website/templates/js/cart.js b/portal/templates/includes/cart.js similarity index 83% rename from website/templates/js/cart.js rename to portal/templates/includes/cart.js index 20090caec6..5ff6e3fb72 100644 --- a/website/templates/js/cart.js +++ b/portal/templates/includes/cart.js @@ -4,33 +4,33 @@ // js inside blog page $(document).ready(function() { - wn.cart.bind_events(); + erpnext.cart.bind_events(); return wn.call({ type: "POST", - method: "website.helpers.cart.get_cart_quotation", + method: "selling.utils.cart.get_cart_quotation", callback: function(r) { console.log(r); $("#cart-container").removeClass("hide"); $(".progress").remove(); if(r.exc) { if(r.exc.indexOf("WebsitePriceListMissingError")!==-1) { - wn.cart.show_error("Oops!", "Price List not configured."); + erpnext.cart.show_error("Oops!", "Price List not configured."); } else if(r["403"]) { - wn.cart.show_error("Hey!", "You need to be logged in to view your cart."); + erpnext.cart.show_error("Hey!", "You need to be logged in to view your cart."); } else { - wn.cart.show_error("Oops!", "Something went wrong."); + erpnext.cart.show_error("Oops!", "Something went wrong."); } } else { - wn.cart.set_cart_count(); - wn.cart.render(r.message); + erpnext.cart.set_cart_count(); + erpnext.cart.render(r.message); } } }); }); // shopping cart -if(!wn.cart) wn.cart = {}; -$.extend(wn.cart, { +if(!erpnext.cart) erpnext.cart = {}; +$.extend(erpnext.cart, { show_error: function(title, text) { $("#cart-container").html('

' + title + '

' + text + '
'); }, @@ -39,14 +39,14 @@ $.extend(wn.cart, { // bind update button $(document).on("click", ".item-update-cart button", function() { var item_code = $(this).attr("data-item-code"); - wn.cart.update_cart({ + erpnext.cart.update_cart({ item_code: item_code, qty: $('input[data-item-code="'+item_code+'"]').val(), with_doclist: 1, btn: this, callback: function(r) { if(!r.exc) { - wn.cart.render(r.message); + erpnext.cart.render(r.message); var $button = $('button[data-item-code="'+item_code+'"]').addClass("btn-success"); setTimeout(function() { $button.removeClass("btn-success"); }, 1000); } @@ -63,7 +63,7 @@ $.extend(wn.cart, { }); $(".btn-place-order").on("click", function() { - wn.cart.place_order(); + erpnext.cart.place_order(this); }); }, @@ -79,7 +79,7 @@ $.extend(wn.cart, { var no_items = $.map(doclist, function(d) { return d.item_code || null;}).length===0; if(no_items) { - wn.cart.show_error("Empty :-(", "Go ahead and add something to your cart."); + erpnext.cart.show_error("Empty :-(", "Go ahead and add something to your cart."); $("#cart-addresses").toggle(false); return; } @@ -89,14 +89,14 @@ $.extend(wn.cart, { var shipping_rule_labels = $.map(out.shipping_rules || [], function(rule) { return rule[1]; }); $.each(doclist, function(i, doc) { if(doc.doctype === "Quotation Item") { - wn.cart.render_item_row($cart_items, doc); + erpnext.cart.render_item_row($cart_items, doc); } else if (doc.doctype === "Sales Taxes and Charges") { if(out.shipping_rules && out.shipping_rules.length && shipping_rule_labels.indexOf(doc.description)!==-1) { shipping_rule_added = true; - wn.cart.render_tax_row($cart_taxes, doc, out.shipping_rules); + erpnext.cart.render_tax_row($cart_taxes, doc, out.shipping_rules); } else { - wn.cart.render_tax_row($cart_taxes, doc); + erpnext.cart.render_tax_row($cart_taxes, doc); } taxes_exist = true; @@ -104,7 +104,7 @@ $.extend(wn.cart, { }); if(out.shipping_rules && out.shipping_rules.length && !shipping_rule_added) { - wn.cart.render_tax_row($cart_taxes, {description: "", formatted_tax_amount: ""}, + erpnext.cart.render_tax_row($cart_taxes, {description: "", formatted_tax_amount: ""}, out.shipping_rules); taxes_exist = true; } @@ -112,7 +112,7 @@ $.extend(wn.cart, { if(taxes_exist) $('
').appendTo($cart_taxes); - wn.cart.render_tax_row($cart_totals, { + erpnext.cart.render_tax_row($cart_totals, { description: "Total", formatted_tax_amount: "" + doclist[0].formatted_grand_total_export + "" }); @@ -120,15 +120,15 @@ $.extend(wn.cart, { if(!(addresses && addresses.length)) { $cart_shipping_address.html('
Hey! Go ahead and add an address
'); } else { - wn.cart.render_address($cart_shipping_address, addresses, doclist[0].shipping_address_name); - wn.cart.render_address($cart_billing_address, addresses, doclist[0].customer_address); + erpnext.cart.render_address($cart_shipping_address, addresses, doclist[0].shipping_address_name); + erpnext.cart.render_address($cart_billing_address, addresses, doclist[0].customer_address); } }, render_item_row: function($cart_items, doc) { doc.image_html = doc.image ? '
' : - '{% include "app/website/templates/html/product_missing_image.html" %}'; + '{% include "app/stock/doctype/item/templates/includes/product_missing_image.html" %}'; if(doc.description === doc.item_name) doc.description = ""; @@ -185,7 +185,7 @@ $.extend(wn.cart, { } }); $tax_row.find('select').on("change", function() { - wn.cart.apply_shipping_rule($(this).val(), this); + erpnext.cart.apply_shipping_rule($(this).val(), this); }); } }, @@ -194,11 +194,11 @@ $.extend(wn.cart, { return wn.call({ btn: btn, type: "POST", - method: "website.helpers.cart.apply_shipping_rule", + method: "selling.utils.cart.apply_shipping_rule", args: { shipping_rule: rule }, callback: function(r) { if(!r.exc) { - wn.cart.render(r.message); + erpnext.cart.render(r.message); } } }); @@ -242,14 +242,14 @@ $.extend(wn.cart, { return wn.call({ type: "POST", - method: "website.helpers.cart.update_cart_address", + method: "selling.utils.cart.update_cart_address", args: { address_fieldname: $address_wrapper.attr("data-fieldname"), address_name: $(this).attr("data-address-name") }, callback: function(r) { if(!r.exc) { - wn.cart.render(r.message); + erpnext.cart.render(r.message); } } }); @@ -270,10 +270,11 @@ $.extend(wn.cart, { .collapse("show"); }, - place_order: function() { + place_order: function(btn) { return wn.call({ type: "POST", - method: "website.helpers.cart.place_order", + method: "selling.utils.cart.place_order", + btn: btn, callback: function(r) { if(r.exc) { var msg = ""; diff --git a/portal/templates/includes/footer.html b/portal/templates/includes/footer.html new file mode 100644 index 0000000000..6963175d91 --- /dev/null +++ b/portal/templates/includes/footer.html @@ -0,0 +1,40 @@ +{% extends "lib/website/templates/includes/footer.html" %} + +{% block powered %}ERPNext Powered{% endblock %} + +{% block extension %} +
+
+ + + + +
+
+ +{% endblock %} diff --git a/website/templates/html/transactions.html b/portal/templates/includes/transactions.html similarity index 88% rename from website/templates/html/transactions.html rename to portal/templates/includes/transactions.html index 1e61124337..036a77c181 100644 --- a/website/templates/html/transactions.html +++ b/portal/templates/includes/transactions.html @@ -1,12 +1,13 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% block content -%}
+
@@ -19,6 +20,7 @@ {%- endblock %} {% block javascript -%} + -// var render = function(doc) { }; - + {% endblock %} \ No newline at end of file diff --git a/website/doctype/blog_settings/__init__.py b/portal/templates/pages/__init__.py similarity index 100% rename from website/doctype/blog_settings/__init__.py rename to portal/templates/pages/__init__.py diff --git a/website/templates/pages/cart.html b/portal/templates/pages/cart.html similarity index 83% rename from website/templates/pages/cart.html rename to portal/templates/pages/cart.html index 6708ad342b..8b648e5cca 100644 --- a/website/templates/pages/cart.html +++ b/portal/templates/pages/cart.html @@ -1,7 +1,7 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% block javascript %} - {% include "app/website/templates/js/cart.js" %} + {% endblock %} {% set title="Shopping Cart" %} @@ -13,7 +13,7 @@
- +


@@ -51,7 +51,7 @@

- +

{% endblock %} \ No newline at end of file diff --git a/patches/may_2012/clear_session_cache.py b/portal/templates/pages/cart.py similarity index 65% rename from patches/may_2012/clear_session_cache.py rename to portal/templates/pages/cart.py index 3e63c3b2fc..24b474a55c 100644 --- a/patches/may_2012/clear_session_cache.py +++ b/portal/templates/pages/cart.py @@ -2,6 +2,5 @@ # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals -def execute(): - import webnotes - webnotes.conn.sql("delete from __SessionCache") \ No newline at end of file + +no_cache = True \ No newline at end of file diff --git a/website/templates/pages/profile.html b/portal/templates/pages/profile.html similarity index 79% rename from website/templates/pages/profile.html rename to portal/templates/pages/profile.html index 4c03b400b9..fe9ded5097 100644 --- a/website/templates/pages/profile.html +++ b/portal/templates/pages/profile.html @@ -1,4 +1,4 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% set title="My Profile" %} @@ -6,19 +6,14 @@
- +
-
- - -
@@ -39,11 +34,10 @@ $(document).ready(function() { $("#fullname").val(getCookie("full_name") || ""); $("#update_profile").click(function() { wn.call({ - method: "startup.webutils.update_profile", + method: "portal.templates.pages.profile.update_profile", type: "POST", args: { fullname: $("#fullname").val(), - password: $("#password").val(), company_name: $("#company_name").val(), mobile_no: $("#mobile_no").val(), phone: $("#phone").val() diff --git a/portal/templates/pages/profile.py b/portal/templates/pages/profile.py new file mode 100644 index 0000000000..8edd830d47 --- /dev/null +++ b/portal/templates/pages/profile.py @@ -0,0 +1,39 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes import _ +from webnotes.utils import cstr + +no_cache = True + +def get_context(): + from selling.utils.cart import get_lead_or_customer + party = get_lead_or_customer() + if party.doctype == "Lead": + mobile_no = party.mobile_no + phone = party.phone + else: + mobile_no, phone = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user, + "customer": party.name}, ["mobile_no", "phone"]) + + return { + "company_name": cstr(party.customer_name if party.doctype == "Customer" else party.company_name), + "mobile_no": cstr(mobile_no), + "phone": cstr(phone) + } + +@webnotes.whitelist() +def update_profile(fullname, password=None, company_name=None, mobile_no=None, phone=None): + from selling.utils.cart import update_party + update_party(fullname, company_name, mobile_no, phone) + + if not fullname: + return _("Name is required") + + webnotes.conn.set_value("Profile", webnotes.session.user, "first_name", fullname) + webnotes.add_cookies["full_name"] = fullname + + return _("Updated") + \ No newline at end of file diff --git a/website/templates/pages/sale.html b/portal/templates/sale.html similarity index 93% rename from website/templates/pages/sale.html rename to portal/templates/sale.html index 1c03da261a..2a7c6038da 100644 --- a/website/templates/pages/sale.html +++ b/portal/templates/sale.html @@ -1,4 +1,4 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% set title=doc.name %} @@ -6,7 +6,6 @@
@@ -18,7 +17,7 @@
- {% if doc.status -%}
{{ doc.status }}
{%- endif %} + {% block status -%}{%- endblock %}
{{ utils.formatdate(doc.posting_date or doc.transaction_date) }} diff --git a/portal/templates/sales_transactions.html b/portal/templates/sales_transactions.html new file mode 100644 index 0000000000..f4fd5d18cc --- /dev/null +++ b/portal/templates/sales_transactions.html @@ -0,0 +1,32 @@ +{% extends "app/portal/templates/includes/transactions.html" %} + +{% block javascript -%} + + +{{ super() }} + + +{%- endblock %} \ No newline at end of file diff --git a/portal/utils.py b/portal/utils.py new file mode 100644 index 0000000000..f72c01ff17 --- /dev/null +++ b/portal/utils.py @@ -0,0 +1,72 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes.utils import cint, formatdate +import json + +def get_transaction_list(doctype, start, additional_fields=None): + # find customer id + customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, + "customer") + + if customer: + if additional_fields: + additional_fields = ", " + ", ".join(("`%s`" % f for f in additional_fields)) + else: + additional_fields = "" + + transactions = webnotes.conn.sql("""select name, creation, currency, grand_total_export + %s + from `tab%s` where customer=%s and docstatus=1 + order by creation desc + limit %s, 20""" % (additional_fields, doctype, "%s", "%s"), + (customer, cint(start)), as_dict=True) + for doc in transactions: + items = webnotes.conn.sql_list("""select item_name + from `tab%s Item` where parent=%s limit 6""" % (doctype, "%s"), doc.name) + doc.items = ", ".join(items[:5]) + ("..." if (len(items) > 5) else "") + doc.creation = formatdate(doc.creation) + return transactions + else: + return [] + +def get_currency_context(): + return { + "global_number_format": webnotes.conn.get_default("number_format") or "#,###.##", + "currency": webnotes.conn.get_default("currency"), + "currency_symbols": json.dumps(dict(webnotes.conn.sql("""select name, symbol + from tabCurrency where ifnull(enabled,0)=1"""))) + } + +def get_transaction_context(doctype, name): + customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, + "customer") + + bean = webnotes.bean(doctype, name) + if bean.doc.customer != customer: + return { + "doc": {"name": "Not Allowed"} + } + else: + return { + "doc": bean.doc, + "doclist": bean.doclist, + "webnotes": webnotes, + "utils": webnotes.utils + } + +@webnotes.whitelist(allow_guest=True) +def send_message(subject="Website Query", message="", sender="", status="Open"): + from website.doctype.contact_us_settings.templates.pages.contact \ + import send_message as website_send_message + + if not website_send_message(subject, message, sender): + return + + # make lead / communication + from selling.doctype.lead.get_leads import add_sales_communication + add_sales_communication(subject or "Website Query", message, sender, sender, + mail=None, status=status) + \ No newline at end of file diff --git a/projects/page/projects_home/projects_home.js b/projects/page/projects_home/projects_home.js index f958f746f2..179ac0d7a1 100644 --- a/projects/page/projects_home/projects_home.js +++ b/projects/page/projects_home/projects_home.js @@ -40,7 +40,7 @@ wn.module_page["Projects"] = [ icon: "icon-wrench", items: [ { - page: "Projects", + route: "Gantt/Task", label: wn._("Gantt Chart"), "description":wn._("Gantt chart of all tasks.") }, diff --git a/public/build.json b/public/build.json index b8d7dd4452..77ad4dd76d 100644 --- a/public/build.json +++ b/public/build.json @@ -1,7 +1,6 @@ { "public/css/all-web.css": [ "app/public/js/startup.css", - "app/website/css/website.css" ], "public/css/all-app.css": [ "app/public/js/startup.css" diff --git a/public/js/website_utils.js b/public/js/website_utils.js index 9b7832678a..06bbe590cd 100644 --- a/public/js/website_utils.js +++ b/public/js/website_utils.js @@ -2,200 +2,40 @@ // License: GNU General Public License v3. See license.txt if(!window.erpnext) erpnext = {}; -if(!window.wn) wn = {}; // Add / update a new Lead / Communication // subject, sender, description -erpnext.send_message = function(opts) { +wn.send_message = function(opts, btn) { return wn.call({ type: "POST", - method: "website.helpers.contact.send_message", + method: "portal.utils.send_message", + btn: btn, args: opts, callback: opts.callback }); -} +}; -wn.call = function(opts) { - if(opts.btn) { - $(opts.btn).prop("disabled", true); - } - - if(opts.msg) { - $(opts.msg).toggle(false); - } - - if(!opts.args) opts.args = {}; - - // get or post? - if(!opts.args._type) { - opts.args._type = opts.type || "GET"; - } - - // method - if(opts.method) { - opts.args.cmd = opts.method; - } - - // stringify - $.each(opts.args, function(key, val) { - if(typeof val != "string") { - opts.args[key] = JSON.stringify(val); - } - }); - - $.ajax({ - type: "POST", - url: "server.py", - data: opts.args, - dataType: "json", - success: function(data) { - if(opts.btn) { - $(opts.btn).prop("disabled", false); - } - if(data.exc) { - if(opts.btn) { - $(opts.btn).addClass("btn-danger"); - setTimeout(function() { $(opts.btn).removeClass("btn-danger"); }, 1000); - } - try { - var err = JSON.parse(data.exc); - if($.isArray(err)) { - err = err.join("\n"); - } - console.error ? console.error(err) : console.log(err); - } catch(e) { - console.log(data.exc); - } - } else{ - if(opts.btn) { - $(opts.btn).addClass("btn-success"); - setTimeout(function() { $(opts.btn).removeClass("btn-success"); }, 1000); - } - } - if(opts.msg && data.message) { - $(opts.msg).html(data.message).toggle(true); - } - if(opts.callback) - opts.callback(data); - }, - error: function(response) { - console.error ? console.error(response) : console.log(response); - } - }); - - return false; -} +// for backward compatibility +erpnext.send_message = wn.send_message; // Setup the user tools // $(document).ready(function() { // update login - var full_name = getCookie("full_name"); + erpnext.cart.set_cart_count(); + + // update profile if(full_name) { - $("#user-tools").addClass("hide"); - $("#user-tools-post-login").removeClass("hide"); - $("#user-full-name").text(full_name); + $('.navbar li[data-label="Profile"] a') + .html(' ' + full_name); } - wn.cart.set_cart_count(); - - $("#user-tools a").tooltip({"placement":"bottom"}); - $("#user-tools-post-login a").tooltip({"placement":"bottom"}); }); -// Utility functions - -function valid_email(id) { - if(id.toLowerCase().search("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")==-1) - return 0; else return 1; } - -var validate_email = valid_email; - -function get_url_arg(name) { - name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); - var regexS = "[\\?&]"+name+"=([^&#]*)"; - var regex = new RegExp( regexS ); - var results = regex.exec( window.location.href ); - if(results == null) - return ""; - else - return decodeURIComponent(results[1]); -} - -function make_query_string(obj) { - var query_params = []; - $.each(obj, function(k, v) { query_params.push(encodeURIComponent(k) + "=" + encodeURIComponent(v)); }); - return "?" + query_params.join("&"); -} - -function repl(s, dict) { - if(s==null)return ''; - for(key in dict) { - s = s.split("%("+key+")s").join(dict[key]); - } - return s; -} - -function replace_all(s, t1, t2) { - return s.split(t1).join(t2); -} - -function getCookie(name) { - return getCookies()[name]; -} - -function getCookies() { - var c = document.cookie, v = 0, cookies = {}; - if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) { - c = RegExp.$1; - v = 1; - } - if (v === 0) { - c.split(/[,;]/).map(function(cookie) { - var parts = cookie.split(/=/, 2), - name = decodeURIComponent(parts[0].trimLeft()), - value = parts.length > 1 ? decodeURIComponent(parts[1].trimRight()) : null; - if(value && value.charAt(0)==='"') { - value = value.substr(1, value.length-2); - } - cookies[name] = value; - }); - } else { - c.match(/(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g).map(function($0, $1) { - var name = $0, - value = $1.charAt(0) === '"' - ? $1.substr(1, -1).replace(/\\(.)/g, "$1") - : $1; - cookies[name] = value; - }); - } - return cookies; -} - -if (typeof String.prototype.trimLeft !== "function") { - String.prototype.trimLeft = function() { - return this.replace(/^\s+/, ""); - }; -} -if (typeof String.prototype.trimRight !== "function") { - String.prototype.trimRight = function() { - return this.replace(/\s+$/, ""); - }; -} -if (typeof Array.prototype.map !== "function") { - Array.prototype.map = function(callback, thisArg) { - for (var i=0, n=this.length, a=[]; i")===-1 && txt.indexOf(" {% endblock %} {% block content %} - {% include 'app/website/templates/html/product_search_box.html' %} - {% include 'app/website/templates/html/product_breadcrumbs.html' %} + {% include 'app/stock/doctype/item/templates/includes/product_search_box.html' %} + {% include 'app/stock/doctype/item/templates/includes/product_breadcrumbs.html' %}
{% if slideshow %} - {% include "app/website/templates/html/slideshow.html" %} + {% include "lib/website/doctype/website_slideshow/templates/includes/slideshow.html" %} {% else %} {% if website_image %} {% else %}
- {% include 'app/website/templates/html/product_missing_image.html' %} + {% include 'app/stock/doctype/item/templates/includes/product_missing_image.html' %}
{% endif %} {% endif %} diff --git a/stock/doctype/item/templates/generators/item.py b/stock/doctype/item/templates/generators/item.py new file mode 100644 index 0000000000..c9146d1640 --- /dev/null +++ b/stock/doctype/item/templates/generators/item.py @@ -0,0 +1,2 @@ +doctype = "Item" +condition_field = "show_in_website" \ No newline at end of file diff --git a/website/templates/html/product_breadcrumbs.html b/stock/doctype/item/templates/includes/product_breadcrumbs.html similarity index 82% rename from website/templates/html/product_breadcrumbs.html rename to stock/doctype/item/templates/includes/product_breadcrumbs.html index 6d267489d0..f073e6f4df 100644 --- a/website/templates/html/product_breadcrumbs.html +++ b/stock/doctype/item/templates/includes/product_breadcrumbs.html @@ -1,4 +1,4 @@ -{% if obj.parent_groups and len(obj.parent_groups) > 1 %} +{% if obj.parent_groups and (obj.parent_groups|length) > 1 %}
diff --git a/website/templates/html/product_in_list.html b/stock/doctype/item/templates/includes/product_in_list.html similarity index 100% rename from website/templates/html/product_in_list.html rename to stock/doctype/item/templates/includes/product_in_list.html diff --git a/website/templates/js/product_list.js b/stock/doctype/item/templates/includes/product_list.js similarity index 95% rename from website/templates/js/product_list.js rename to stock/doctype/item/templates/includes/product_list.js index 729499c0c7..2856bde3d7 100644 --- a/website/templates/js/product_list.js +++ b/stock/doctype/item/templates/includes/product_list.js @@ -15,7 +15,7 @@ window.get_product_list = function() { url: "server.py", dataType: "json", data: { - cmd: "website.helpers.product.get_product_list", + cmd: "selling.utils.product.get_product_list", start: window.start, search: window.search, product_group: window.product_group diff --git a/website/templates/html/product_missing_image.html b/stock/doctype/item/templates/includes/product_missing_image.html similarity index 100% rename from website/templates/html/product_missing_image.html rename to stock/doctype/item/templates/includes/product_missing_image.html diff --git a/website/templates/css/product_page.css b/stock/doctype/item/templates/includes/product_page.css similarity index 100% rename from website/templates/css/product_page.css rename to stock/doctype/item/templates/includes/product_page.css diff --git a/website/templates/js/product_page.js b/stock/doctype/item/templates/includes/product_page.js similarity index 90% rename from website/templates/js/product_page.js rename to stock/doctype/item/templates/includes/product_page.js index b8c65ec87f..6caa71d4b5 100644 --- a/website/templates/js/product_page.js +++ b/stock/doctype/item/templates/includes/product_page.js @@ -2,12 +2,12 @@ // License: GNU General Public License v3. See license.txt $(document).ready(function() { - var item_code = $('[itemscope] [itemprop="name"]').text().trim(); + var item_code = $('[itemscope] [itemprop="productID"]').text().trim(); var qty = 0; wn.call({ type: "POST", - method: "website.helpers.product.get_product_info", + method: "selling.utils.product.get_product_info", args: { item_code: "{{ name }}" }, @@ -36,7 +36,7 @@ $(document).ready(function() { }) $("#item-add-to-cart button").on("click", function() { - wn.cart.update_cart({ + erpnext.cart.update_cart({ item_code: item_code, qty: 1, callback: function(r) { @@ -50,7 +50,7 @@ $(document).ready(function() { }); $("#item-update-cart button").on("click", function() { - wn.cart.update_cart({ + erpnext.cart.update_cart({ item_code: item_code, qty: $("#item-update-cart input").val(), btn: this, diff --git a/website/templates/html/product_search_box.html b/stock/doctype/item/templates/includes/product_search_box.html similarity index 96% rename from website/templates/html/product_search_box.html rename to stock/doctype/item/templates/includes/product_search_box.html index d808bf6144..b4fa3e8783 100644 --- a/website/templates/html/product_search_box.html +++ b/stock/doctype/item/templates/includes/product_search_box.html @@ -1,4 +1,4 @@ -
+
diff --git a/stock/doctype/item/templates/pages/__init__.py b/stock/doctype/item/templates/pages/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/website/templates/pages/product_search.html b/stock/doctype/item/templates/pages/product_search.html similarity index 75% rename from website/templates/pages/product_search.html rename to stock/doctype/item/templates/pages/product_search.html index e969f75825..9c6eeab6b5 100644 --- a/website/templates/pages/product_search.html +++ b/stock/doctype/item/templates/pages/product_search.html @@ -1,9 +1,9 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% set title="Product Search" %} {% block javascript %} -{% include "app/website/templates/js/product_list.js" %} + {% endblock %} {% block content %} @@ -17,7 +17,7 @@ $(document).ready(function() { }); -{% include 'app/website/templates/html/product_search_box.html' %} +{% include "app/stock/doctype/item/templates/includes/product_search_box.html" %}

Search Results

diff --git a/website/doctype/top_bar_item/top_bar_item.py b/stock/doctype/item/templates/pages/product_search.py similarity index 63% rename from website/doctype/top_bar_item/top_bar_item.py rename to stock/doctype/item/templates/pages/product_search.py index 26d0f76968..24b474a55c 100644 --- a/website/doctype/top_bar_item/top_bar_item.py +++ b/stock/doctype/item/templates/pages/product_search.py @@ -2,8 +2,5 @@ # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals -import webnotes -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file +no_cache = True \ No newline at end of file diff --git a/support/doctype/support_ticket/get_support_mails.py b/support/doctype/support_ticket/get_support_mails.py index fa4f304e53..4dcb59e4fe 100644 --- a/support/doctype/support_ticket/get_support_mails.py +++ b/support/doctype/support_ticket/get_support_mails.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, cint, decode_dict +from webnotes.utils import cstr, cint, decode_dict, today from webnotes.utils.email_lib import sendmail from webnotes.utils.email_lib.receive import POP3Mailbox from core.doctype.communication.communication import make @@ -22,32 +22,13 @@ class SupportMailbox(POP3Mailbox): if mail.from_email == self.email_settings.fields.get('support_email'): return thread_id = mail.get_thread_id() - ticket = None new_ticket = False - if thread_id and webnotes.conn.exists("Support Ticket", thread_id): - ticket = webnotes.bean("Support Ticket", thread_id) - ticket.doc.status = 'Open' - ticket.doc.save() - - else: - ticket = webnotes.bean([decode_dict({ - "doctype":"Support Ticket", - "description": mail.content, - "subject": mail.subject, - "raised_by": mail.from_email, - "content_type": mail.content_type, - "status": "Open", - })]) - - ticket.insert() + if not (thread_id and webnotes.conn.exists("Support Ticket", thread_id)): new_ticket = True - - mail.save_attachments_in_doc(ticket.doc) - - make(content=mail.content, sender=mail.from_email, subject = ticket.doc.subject, - doctype="Support Ticket", name=ticket.doc.name, - date=mail.date) + + ticket = add_support_communication(mail.subject, mail.content, mail.from_email, + docname=None if new_ticket else thread_id, mail=mail) if new_ticket and cint(self.email_settings.send_autoreply) and \ "mailer-daemon" not in mail.from_email.lower(): @@ -78,4 +59,31 @@ Original Query: def get_support_mails(): if cint(webnotes.conn.get_value('Email Settings', None, 'sync_support_mails')): - SupportMailbox() \ No newline at end of file + SupportMailbox() + +def add_support_communication(subject, content, sender, docname=None, mail=None): + if docname: + ticket = webnotes.bean("Support Ticket", docname) + ticket.doc.status = 'Open' + ticket.ignore_permissions = True + ticket.doc.save() + else: + ticket = webnotes.bean([decode_dict({ + "doctype":"Support Ticket", + "description": content, + "subject": subject, + "raised_by": sender, + "content_type": mail.content_type if mail else None, + "status": "Open", + })]) + ticket.ignore_permissions = True + ticket.insert() + + make(content=content, sender=sender, subject = subject, + doctype="Support Ticket", name=ticket.doc.name, + date=mail.date if mail else today()) + + if mail: + mail.save_attachments_in_doc(ticket.doc) + + return ticket \ No newline at end of file diff --git a/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py index 5c38cc1a78..bf2a9fbabe 100644 --- a/support/doctype/support_ticket/support_ticket.py +++ b/support/doctype/support_ticket/support_ticket.py @@ -24,6 +24,9 @@ class DocType(TransactionBase): if signature: content += '

' + signature + '

' return content + + def get_portal_page(self): + return "ticket" def validate(self): self.update_status() @@ -72,18 +75,4 @@ class DocType(TransactionBase): def set_status(name, status): st = webnotes.bean("Support Ticket", name) st.doc.status = status - st.save() - -def get_website_args(): - bean = webnotes.bean("Support Ticket", webnotes.form_dict.name) - if bean.doc.raised_by != webnotes.session.user: - return { - "doc": {"name": "Not Allowed"} - } - else: - return { - "doc": bean.doc, - "doclist": bean.doclist, - "webnotes": webnotes, - "utils": webnotes.utils - } + st.save() \ No newline at end of file diff --git a/support/doctype/support_ticket/templates/__init__.py b/support/doctype/support_ticket/templates/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/support/doctype/support_ticket/templates/pages/__init__.py b/support/doctype/support_ticket/templates/pages/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/support/doctype/support_ticket/templates/pages/ticket.html b/support/doctype/support_ticket/templates/pages/ticket.html new file mode 100644 index 0000000000..4b41dc21e9 --- /dev/null +++ b/support/doctype/support_ticket/templates/pages/ticket.html @@ -0,0 +1,121 @@ +{% extends base_template %} + +{% set title=doc.name %} + +{% set status_label = { + "Open": "label-success", + "To Reply": "label-danger", + "Closed": "label-default" +} %} + +{% block content %} +
+ +

{{ doc.name }}

+ {% if doc.name == "Not Allowed" -%} + + {% else %} +
+ {%- if doc.status -%} + {% if doc.status == "Waiting for Customer" -%} + {% set status = "To Reply" %} + {% else %} + {% set status = doc.status %} + {%- endif -%} +
+
+ {{ status }} +
+
+
{{ doc.subject }}
+
+
+ {{ utils.formatdate(doc.creation) }} +
+
+
+

Messages

+
+ + +
+
+ + {%- if doclist.get({"doctype":"Communication"}) -%} +
+ + + {%- for comm in + (doclist.get({"doctype":"Communication"})|sort(reverse=True, attribute="creation")) %} + + + + {% endfor -%} + +
+
+ {{ comm.sender }} on {{ utils.formatdate(comm.creation) }}
+
+

{{ webnotes.utils.is_html(comm.content) and comm.content or + comm.content.replace("\n", "
")}}

+
+
+ {%- else -%} +
No messages
+ {%- endif -%} + {%- endif -%} + {% endif -%} +
+{% endblock %} + +{% block javascript %} + +{% endblock %} \ No newline at end of file diff --git a/support/doctype/support_ticket/templates/pages/ticket.py b/support/doctype/support_ticket/templates/pages/ticket.py new file mode 100644 index 0000000000..ce3100f7e0 --- /dev/null +++ b/support/doctype/support_ticket/templates/pages/ticket.py @@ -0,0 +1,37 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes import _ +from webnotes.utils import today + +no_cache = True + +def get_context(): + bean = webnotes.bean("Support Ticket", webnotes.form_dict.name) + if bean.doc.raised_by != webnotes.session.user: + return { + "doc": {"name": "Not Allowed"} + } + else: + return { + "doc": bean.doc, + "doclist": bean.doclist, + "webnotes": webnotes, + "utils": webnotes.utils + } + +@webnotes.whitelist() +def add_reply(ticket, message): + if not message: + raise webnotes.throw(_("Please write something")) + + bean = webnotes.bean("Support Ticket", ticket) + if bean.doc.raised_by != webnotes.session.user: + raise webnotes.throw(_("You are not allowed to reply to this ticket."), webnotes.PermissionError) + + from core.doctype.communication.communication import make + make(content=message, sender=bean.doc.raised_by, subject = bean.doc.subject, + doctype="Support Ticket", name=bean.doc.name, + date=today()) \ No newline at end of file diff --git a/support/doctype/support_ticket/templates/pages/tickets.html b/support/doctype/support_ticket/templates/pages/tickets.html new file mode 100644 index 0000000000..d99e6145d9 --- /dev/null +++ b/support/doctype/support_ticket/templates/pages/tickets.html @@ -0,0 +1,87 @@ +{% extends "app/portal/templates/includes/transactions.html" %} + +{% block javascript -%} +{{ super() }} + + +{%- endblock %} \ No newline at end of file diff --git a/support/doctype/support_ticket/templates/pages/tickets.py b/support/doctype/support_ticket/templates/pages/tickets.py new file mode 100644 index 0000000000..dd2e52e555 --- /dev/null +++ b/support/doctype/support_ticket/templates/pages/tickets.py @@ -0,0 +1,38 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes.utils import cint, formatdate + +no_cache = True + +def get_context(): + return { + "title": "My Tickets", + "method": "support.doctype.support_ticket.templates.pages.tickets.get_tickets", + "icon": "icon-ticket", + "empty_list_message": "No Tickets Raised", + "page": "ticket" + } + +@webnotes.whitelist() +def get_tickets(start=0): + tickets = webnotes.conn.sql("""select name, subject, status, creation + from `tabSupport Ticket` where raised_by=%s + order by modified desc + limit %s, 20""", (webnotes.session.user, cint(start)), as_dict=True) + for t in tickets: + t.creation = formatdate(t.creation) + + return tickets + +@webnotes.whitelist() +def make_new_ticket(subject, message): + if not (subject and message): + raise webnotes.throw(_("Please write something in subject and message!")) + + from support.doctype.support_ticket.get_support_mails import add_support_communication + ticket = add_support_communication(subject, message, webnotes.session.user) + + return ticket.doc.name \ No newline at end of file diff --git a/utilities/demo/demo_control_panel.py b/utilities/demo/demo_control_panel.py index c70913ee68..1f381d5eb6 100644 --- a/utilities/demo/demo_control_panel.py +++ b/utilities/demo/demo_control_panel.py @@ -1,13 +1,13 @@ def on_login(self): from webnotes.utils import validate_email_add - import conf - if hasattr(conf, "demo_notify_url"): + import conf + if hasattr(conf, "demo_notify_url"): if webnotes.form_dict.lead_email and validate_email_add(webnotes.form_dict.lead_email): import requests response = requests.post(conf.demo_notify_url, data={ - "cmd":"website.helpers.contact.send_message", + "cmd":"portal.utils.send_message", "subject":"Logged into Demo", "sender": webnotes.form_dict.lead_email, "message": "via demo.erpnext.com" - }) + }) \ No newline at end of file diff --git a/utilities/demo/make_erpnext_demo.py b/utilities/demo/make_erpnext_demo.py index 9e56839fb8..766da2612f 100644 --- a/utilities/demo/make_erpnext_demo.py +++ b/utilities/demo/make_erpnext_demo.py @@ -19,7 +19,7 @@ def make_demo_user(): roles = ["Accounts Manager", "Analytics", "Expense Approver", "Accounts User", "Leave Approver", "Blogger", "Customer", "Sales Manager", "Employee", "Support Manager", "HR Manager", "HR User", "Maintenance Manager", "Maintenance User", "Material Manager", - "Material Master Manager", "Material User", "Partner", "Manufacturing Manager", + "Material Master Manager", "Material User", "Manufacturing Manager", "Manufacturing User", "Projects User", "Purchase Manager", "Purchase Master Manager", "Purchase User", "Quality Manager", "Report Manager", "Sales Master Manager", "Sales User", "Supplier", "Support Team"] diff --git a/utilities/doctype/address/address.py b/utilities/doctype/address/address.py index 7ffb911417..69e81b8312 100644 --- a/utilities/doctype/address/address.py +++ b/utilities/doctype/address/address.py @@ -51,25 +51,3 @@ class DocType: webnotes.conn.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" % (is_address_type, fieldname, "%s", "%s"), (self.doc.fields[fieldname], self.doc.name)) break - -def get_website_args(): - def _get_fields(fieldnames): - return [webnotes._dict(zip(["label", "fieldname", "fieldtype", "options"], - [df.label, df.fieldname, df.fieldtype, df.options])) - for df in webnotes.get_doctype("Address", processed=True).get({"fieldname": ["in", fieldnames]})] - - bean = None - if webnotes.form_dict.name: - bean = webnotes.bean("Address", webnotes.form_dict.name) - - return { - "doc": bean.doc if bean else None, - "meta": webnotes._dict({ - "left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2", - "city", "state", "pincode", "country"]), - "right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address", - "is_shipping_address"]) - }), - "cint": cint - } - diff --git a/utilities/doctype/address/templates/__init__.py b/utilities/doctype/address/templates/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/utilities/doctype/address/templates/pages/__init__.py b/utilities/doctype/address/templates/pages/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/website/templates/pages/address.html b/utilities/doctype/address/templates/pages/address.html similarity index 95% rename from website/templates/pages/address.html rename to utilities/doctype/address/templates/pages/address.html index 6544b1225d..f02d687232 100644 --- a/website/templates/pages/address.html +++ b/utilities/doctype/address/templates/pages/address.html @@ -1,4 +1,4 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% set title=doc and doc.name or "New Address" %} {% set docname=(doc and doc.name or "") %} @@ -40,7 +40,6 @@
@@ -89,7 +88,7 @@ wn.call({ btn: $(this), type: "POST", - method: "website.helpers.cart.save_address", + method: "selling.utils.cart.save_address", args: { fields: fields, address_fieldname: get_url_arg("address_fieldname") }, callback: function(r) { if(r.exc) { diff --git a/utilities/doctype/address/templates/pages/address.py b/utilities/doctype/address/templates/pages/address.py new file mode 100644 index 0000000000..d968c92eda --- /dev/null +++ b/utilities/doctype/address/templates/pages/address.py @@ -0,0 +1,30 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +from webnotes.utils import cint + +no_cache = True + +def get_context(): + def _get_fields(fieldnames): + return [webnotes._dict(zip(["label", "fieldname", "fieldtype", "options"], + [df.label, df.fieldname, df.fieldtype, df.options])) + for df in webnotes.get_doctype("Address", processed=True).get({"fieldname": ["in", fieldnames]})] + + bean = None + if webnotes.form_dict.name: + bean = webnotes.bean("Address", webnotes.form_dict.name) + + return { + "doc": bean.doc if bean else None, + "meta": webnotes._dict({ + "left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2", + "city", "state", "pincode", "country"]), + "right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address", + "is_shipping_address"]) + }), + "cint": cint + } + diff --git a/website/templates/pages/addresses.html b/utilities/doctype/address/templates/pages/addresses.html similarity index 89% rename from website/templates/pages/addresses.html rename to utilities/doctype/address/templates/pages/addresses.html index 04fc47ba73..d56c734cb3 100644 --- a/website/templates/pages/addresses.html +++ b/utilities/doctype/address/templates/pages/addresses.html @@ -1,4 +1,4 @@ -{% extends "app/website/templates/html/page.html" %} +{% extends base_template %} {% set title="My Addresses" %} @@ -6,7 +6,6 @@

New Address

@@ -26,7 +25,7 @@ var fetch_addresses = function() { wn.call({ - method: "website.helpers.cart.get_addresses", + method: "selling.utils.cart.get_addresses", callback: function(r) { $("#address-list .progress").remove(); var $list = $("#address-list"); diff --git a/patches/mar_2012/pos_invoice_fix.py b/utilities/doctype/address/templates/pages/addresses.py similarity index 58% rename from patches/mar_2012/pos_invoice_fix.py rename to utilities/doctype/address/templates/pages/addresses.py index 148b373987..24b474a55c 100644 --- a/patches/mar_2012/pos_invoice_fix.py +++ b/utilities/doctype/address/templates/pages/addresses.py @@ -2,6 +2,5 @@ # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals -def execute(): - from webnotes.modules import reload_doc - reload_doc('accounts', 'Print Format', 'POS Invoice') + +no_cache = True \ No newline at end of file diff --git a/website/README.md b/website/README.md deleted file mode 100644 index 8ad39038f4..0000000000 --- a/website/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Module for website management. - -Contains: - -- DocTypes for Web Page, Blogs -- Templates -- Settings -- Generators for Item, Blog Post, Item Group \ No newline at end of file diff --git a/website/__init__.py b/website/__init__.py deleted file mode 100644 index aace68bb64..0000000000 --- a/website/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -from __future__ import unicode_literals -install_docs = [ - {"doctype":"Role", "role_name":"Blogger", "name":"Blogger"}, - {"doctype":"Role", "role_name":"Website Manager", "name":"Website Manager"}, -] - -import webnotes - - -def get_site_address(): - from webnotes.utils import get_request_site_address - url = get_request_site_address() - - if not url or url=='http://localhost': - new_url = webnotes.conn.get_value('Website Settings', 'Website Settings', - 'subdomain') - if new_url: - url = "http://" + new_url - - return url \ No newline at end of file diff --git a/website/css/website.css b/website/css/website.css deleted file mode 100644 index 4cd7ac7735..0000000000 --- a/website/css/website.css +++ /dev/null @@ -1,204 +0,0 @@ -.container { - max-width: 728px !important; -} - -h1, h2, h3, h4, h5 { - font-weight: bold; -} - -a { - cursor: pointer; -} - -img { - max-width: 100%; -} - -.content { - padding-bottom: 30px; -} - -.banner { - margin-top: 20px; - padding: 0px 20px; -} - -.missing-image { - background-color: #eee; - padding: 40px; - width: 112px; - font-size: 32px; - color: #888; -} - -.social-icons { - font-size: 120%; - float: right; - text-align: right; -} -.social-icons a:hover { - text-decoration: none; -} -.social-icons a i:hover { - text-decoration: none; -} -.social-icons i { - margin-left: 5px; -} - -div.web-footer { - padding-top: 10px; - padding-bottom: 20px; -} - -.web-footer-menu ul { - list-style: none; - margin: 0px; - padding: 0px; -} - -.web-footer-menu ul li { - display: inline; - padding: 2px 14px 2px 0px; - margin: 0px; -} - -.avatar { - display: inline-block; - vertical-align: middle; - overflow: hidden; - background-color: #ddd; - border: 1px solid #eee; -} - -.avatar-small { - margin-right: 5px; - width: 30px; - height: 30px; - border-radius: 30px; - -moz-border-radius: 30px; - -webkit-border-radius: 30px; -} -.avatar-small img { - width: 30px; -} - -.avatar-medium { - margin-right: 5px; - width: 48px; - height: 48px; - border-radius: 48px; - -moz-border-radius: 48px; - -webkit-border-radius: 48px; -} -.avatar-medium img { - width: 48px; -} - -.avatar-large { - margin-right: 10px; - width: 72px; - height: 72px; - border-radius: 72px; - -moz-border-radius: 72px; - -webkit-border-radius: 72px; -} -.avatar-large img { - width: 72px; -} - -.avatar-x-large { - margin-right: 10px; - width: 100px; - height: 100px; - border-radius: 100px; - -moz-border-radius: 100px; - -webkit-border-radius: 100px; -} -.avatar-x-large img { - width: 100px; -} - -.carousel-control .icon { - position: absolute; - top: 50%; - left: 50%; - z-index: 5; - display: inline-block; - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; -} - -.hidden-sm-inline { - display: none; -} - -@media (min-width: 768px) { - .hidden-sm-inline { - display: inline; - } -} - -.panel-heading, -.panel-body { - padding-left: 15px; -} - - -.breadcrumb { - margin: 0px -20px; - margin-bottom: 20px; -} - -fieldset { - margin-bottom: 20px; -} - -/* buttons */ - -.btn-default { - color: #ffffff; - background-color: #a7a9aa; - border-color: #a7a9aa; -} - -.dropup .btn-default .caret, -.btn-default .caret { - border-bottom-color: #ffffff; - border-top-color: #ffffff; -} - -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-color: #9a9c9d; - border-color: #8d9091; - color: #ffffff; -} - -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #a7a9aa; - border-color: #a7a9aa; -} - -.label { - padding-top: 0.3em; -} \ No newline at end of file diff --git a/website/doctype/__init__.py b/website/doctype/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/doctype/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/doctype/about_us_settings/README.md b/website/doctype/about_us_settings/README.md deleted file mode 100644 index 977a7a35e4..0000000000 --- a/website/doctype/about_us_settings/README.md +++ /dev/null @@ -1 +0,0 @@ -Configuration for "About" page in the website that shows company, history and team. \ No newline at end of file diff --git a/website/doctype/about_us_settings/about_us_settings.py b/website/doctype/about_us_settings/about_us_settings.py deleted file mode 100644 index 139abc20c1..0000000000 --- a/website/doctype/about_us_settings/about_us_settings.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def on_update(self): - from webnotes.webutils import clear_cache - clear_cache("about") - -def get_args(): - obj = webnotes.get_obj("About Us Settings") - return { - "obj": obj - } \ No newline at end of file diff --git a/website/doctype/about_us_settings/about_us_settings.txt b/website/doctype/about_us_settings/about_us_settings.txt deleted file mode 100644 index 0e34d67083..0000000000 --- a/website/doctype/about_us_settings/about_us_settings.txt +++ /dev/null @@ -1,110 +0,0 @@ -[ - { - "creation": "2013-03-19 12:02:15", - "docstatus": 0, - "modified": "2013-07-05 14:23:27", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "description": "Settings for the About Us Page", - "doctype": "DocType", - "document_type": "Other", - "icon": "icon-group", - "issingle": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "About Us Settings", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0, - "read_only": 0 - }, - { - "create": 1, - "doctype": "DocPerm", - "name": "__common__", - "parent": "About Us Settings", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "report": 0, - "role": "Website Manager", - "submit": 0, - "write": 1 - }, - { - "doctype": "DocType", - "name": "About Us Settings" - }, - { - "doctype": "DocField", - "fieldname": "help", - "fieldtype": "HTML", - "label": "Help", - "options": "
Link for About Us Page is \"/about\"
" - }, - { - "description": "Introduce your company to the website visitor.", - "doctype": "DocField", - "fieldname": "company_introduction", - "fieldtype": "Text Editor", - "label": "Company Introduction" - }, - { - "doctype": "DocField", - "fieldname": "sb0", - "fieldtype": "Section Break", - "label": "Company History" - }, - { - "description": "\"Company History\"", - "doctype": "DocField", - "fieldname": "company_history_heading", - "fieldtype": "Data", - "label": "Company History Heading" - }, - { - "doctype": "DocField", - "fieldname": "company_history", - "fieldtype": "Table", - "label": "Company History", - "options": "Company History" - }, - { - "doctype": "DocField", - "fieldname": "sb1", - "fieldtype": "Section Break", - "label": "Team Members" - }, - { - "description": "\"Team Members\" or \"Management\"", - "doctype": "DocField", - "fieldname": "team_members_heading", - "fieldtype": "Data", - "label": "Team Members Heading" - }, - { - "doctype": "DocField", - "fieldname": "team_members", - "fieldtype": "Table", - "label": "Team Members", - "options": "About Us Team Member" - }, - { - "description": "More content for the bottom of the page.", - "doctype": "DocField", - "fieldname": "footer", - "fieldtype": "Text Editor", - "label": "Footer" - }, - { - "doctype": "DocPerm" - } -] \ No newline at end of file diff --git a/website/doctype/about_us_team_member/README.md b/website/doctype/about_us_team_member/README.md deleted file mode 100644 index 98b794f8d4..0000000000 --- a/website/doctype/about_us_team_member/README.md +++ /dev/null @@ -1 +0,0 @@ -Details of team member for About Us page. \ No newline at end of file diff --git a/website/doctype/about_us_team_member/about_us_team_member.py b/website/doctype/about_us_team_member/about_us_team_member.py deleted file mode 100644 index 784339de7d..0000000000 --- a/website/doctype/about_us_team_member/about_us_team_member.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/website/doctype/about_us_team_member/about_us_team_member.txt b/website/doctype/about_us_team_member/about_us_team_member.txt deleted file mode 100644 index c5e6d164e9..0000000000 --- a/website/doctype/about_us_team_member/about_us_team_member.txt +++ /dev/null @@ -1,52 +0,0 @@ -[ - { - "creation": "2013-03-07 11:55:11", - "docstatus": 0, - "modified": "2013-07-10 14:54:03", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "doctype": "DocType", - "istable": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "in_list_view": 1, - "name": "__common__", - "parent": "About Us Team Member", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "About Us Team Member" - }, - { - "doctype": "DocField", - "fieldname": "full_name", - "fieldtype": "Data", - "label": "Full Name", - "reqd": 1, - "width": "150px" - }, - { - "doctype": "DocField", - "fieldname": "image_link", - "fieldtype": "Select", - "label": "Image Link", - "options": "attach_files:", - "width": "150px" - }, - { - "doctype": "DocField", - "fieldname": "bio", - "fieldtype": "Small Text", - "label": "Bio", - "reqd": 1, - "width": "200px" - } -] \ No newline at end of file diff --git a/website/doctype/blog_category/README.md b/website/doctype/blog_category/README.md deleted file mode 100644 index af14b5dc14..0000000000 --- a/website/doctype/blog_category/README.md +++ /dev/null @@ -1 +0,0 @@ -Blog category. \ No newline at end of file diff --git a/website/doctype/blog_category/blog_category.py b/website/doctype/blog_category/blog_category.py deleted file mode 100644 index 7d99e2a968..0000000000 --- a/website/doctype/blog_category/blog_category.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def on_update(self): - # for blog footer - from webnotes.webutils import clear_cache - clear_cache() - \ No newline at end of file diff --git a/website/doctype/blog_category/blog_category.txt b/website/doctype/blog_category/blog_category.txt deleted file mode 100644 index b986c441a5..0000000000 --- a/website/doctype/blog_category/blog_category.txt +++ /dev/null @@ -1,56 +0,0 @@ -[ - { - "creation": "2013-03-08 09:41:11", - "docstatus": 0, - "modified": "2013-07-05 14:27:02", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "autoname": "field:category_name", - "doctype": "DocType", - "document_type": "Master", - "icon": "icon-tag", - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "fieldname": "category_name", - "fieldtype": "Data", - "label": "Category Name", - "name": "__common__", - "parent": "Blog Category", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0, - "reqd": 1 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Blog Category", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1 - }, - { - "doctype": "DocType", - "name": "Blog Category" - }, - { - "doctype": "DocField" - }, - { - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "role": "Website Manager", - "write": 1 - }, - { - "doctype": "DocPerm", - "role": "Blogger" - } -] \ No newline at end of file diff --git a/website/doctype/blog_post/README.md b/website/doctype/blog_post/README.md deleted file mode 100644 index 63d3c0f31e..0000000000 --- a/website/doctype/blog_post/README.md +++ /dev/null @@ -1 +0,0 @@ -Blog post for "Blogs" section of website. \ No newline at end of file diff --git a/website/doctype/blog_post/blog_post.js b/website/doctype/blog_post/blog_post.js deleted file mode 100644 index af4dcc9677..0000000000 --- a/website/doctype/blog_post/blog_post.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -cur_frm.cscript.refresh = function(doc) { - if(!doc.__islocal && doc.published && !doc.email_sent) { - cur_frm.add_custom_button('Email Subscribers', function() { - $c_obj(make_doclist(doc.doctype, doc.name), 'send_emails', '', function(r) { - cur_frm.refresh(); - }); - }) - } -} \ No newline at end of file diff --git a/website/doctype/blog_post/blog_post.py b/website/doctype/blog_post/blog_post.py deleted file mode 100644 index 48b32069d8..0000000000 --- a/website/doctype/blog_post/blog_post.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals - -import webnotes -import webnotes.webutils -from webnotes import _ - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def autoname(self): - from webnotes.webutils import page_name - self.doc.name = page_name(self.doc.title) - - def validate(self): - if self.doc.blog_intro: - self.doc.blog_intro = self.doc.blog_intro[:140] - - # update posts - webnotes.conn.sql("""update tabBlogger set posts=(select count(*) from `tabBlog Post` - where ifnull(blogger,'')=tabBlogger.name) - where name=%s""", self.doc.blogger) - - def on_update(self): - webnotes.webutils.update_page_name(self.doc, self.doc.title) - webnotes.webutils.delete_page_cache("writers") - - def prepare_template_args(self): - import webnotes.utils - import markdown2 - - # this is for double precaution. usually it wont reach this code if not published - if not webnotes.utils.cint(self.doc.published): - raise Exception, "This blog has not been published yet!" - - # temp fields - from webnotes.utils import global_date_format, get_fullname - self.doc.full_name = get_fullname(self.doc.owner) - self.doc.updated = global_date_format(self.doc.published_on) - self.doc.content_html = self.doc.content - - if self.doc.blogger: - self.doc.blogger_info = webnotes.doc("Blogger", self.doc.blogger).fields - - self.doc.description = self.doc.blog_intro or self.doc.content[:140] - self.doc.meta_description = self.doc.description - - self.doc.categories = webnotes.conn.sql_list("select name from `tabBlog Category` order by name") - - self.doc.texts = { - "comments": _("Comments"), - "first_comment": _("Be the first one to comment"), - "add_comment": _("Add Comment"), - "submit": _("Submit"), - "all_posts_by": _("All posts by"), - } - - comment_list = webnotes.conn.sql("""\ - select comment, comment_by_fullname, creation - from `tabComment` where comment_doctype="Blog Post" - and comment_docname=%s order by creation""", self.doc.name, as_dict=1) - - self.doc.comment_list = comment_list or [] - for comment in self.doc.comment_list: - comment['comment_date'] = webnotes.utils.global_date_format(comment['creation']) - comment['comment'] = markdown2.markdown(comment['comment']) diff --git a/website/doctype/blog_post/blog_post.txt b/website/doctype/blog_post/blog_post.txt deleted file mode 100644 index 79c1aee94f..0000000000 --- a/website/doctype/blog_post/blog_post.txt +++ /dev/null @@ -1,135 +0,0 @@ -[ - { - "creation": "2013-03-28 10:35:30", - "docstatus": 0, - "modified": "2013-07-05 15:08:30", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "allow_import": 1, - "doctype": "DocType", - "icon": "icon-quote-left", - "max_attachments": 5, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Blog Post", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Blog Post", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "report": 1, - "submit": 0 - }, - { - "doctype": "DocType", - "name": "Blog Post" - }, - { - "doctype": "DocField", - "fieldname": "title", - "fieldtype": "Data", - "label": "Title", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "published", - "fieldtype": "Check", - "label": "Published" - }, - { - "doctype": "DocField", - "fieldname": "published_on", - "fieldtype": "Date", - "label": "Published On" - }, - { - "doctype": "DocField", - "fieldname": "column_break_3", - "fieldtype": "Column Break" - }, - { - "doctype": "DocField", - "fieldname": "blogger", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Blogger", - "options": "Blogger", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "blog_category", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Blog Category", - "options": "Blog Category" - }, - { - "doctype": "DocField", - "fieldname": "section_break_5", - "fieldtype": "Section Break" - }, - { - "description": "Description for listing page, in plain text, only a couple of lines. (max 140 characters)", - "doctype": "DocField", - "fieldname": "blog_intro", - "fieldtype": "Small Text", - "in_list_view": 1, - "label": "Blog Intro", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "content", - "fieldtype": "Text Editor", - "label": "Content", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "page_name", - "fieldtype": "Data", - "hidden": 1, - "label": "Page Name", - "read_only": 1 - }, - { - "doctype": "DocField", - "fieldname": "email_sent", - "fieldtype": "Check", - "hidden": 1, - "label": "Email Sent" - }, - { - "create": 1, - "doctype": "DocPerm", - "role": "Website Manager", - "write": 1 - }, - { - "create": 1, - "doctype": "DocPerm", - "role": "Blogger", - "write": 1 - }, - { - "doctype": "DocPerm", - "role": "Guest", - "write": 0 - } -] \ No newline at end of file diff --git a/website/doctype/blog_settings/README.md b/website/doctype/blog_settings/README.md deleted file mode 100644 index 0a76d4e261..0000000000 --- a/website/doctype/blog_settings/README.md +++ /dev/null @@ -1 +0,0 @@ -Blog titles and introduction texts. \ No newline at end of file diff --git a/website/doctype/blog_settings/blog_settings.py b/website/doctype/blog_settings/blog_settings.py deleted file mode 100644 index 784339de7d..0000000000 --- a/website/doctype/blog_settings/blog_settings.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/website/doctype/blog_settings/blog_settings.txt b/website/doctype/blog_settings/blog_settings.txt deleted file mode 100644 index 27fa5630dd..0000000000 --- a/website/doctype/blog_settings/blog_settings.txt +++ /dev/null @@ -1,62 +0,0 @@ -[ - { - "creation": "2013-03-11 17:48:16", - "docstatus": 0, - "modified": "2013-07-05 14:27:31", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "description": "Blog Settings", - "doctype": "DocType", - "icon": "icon-cog", - "issingle": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Blog Settings", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "create": 1, - "doctype": "DocPerm", - "name": "__common__", - "parent": "Blog Settings", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "role": "Website Manager", - "write": 1 - }, - { - "doctype": "DocType", - "name": "Blog Settings" - }, - { - "doctype": "DocField", - "fieldname": "blog_title", - "fieldtype": "Data", - "label": "Blog Title" - }, - { - "doctype": "DocField", - "fieldname": "blog_introduction", - "fieldtype": "Small Text", - "label": "Blog Introduction" - }, - { - "doctype": "DocField", - "fieldname": "writers_introduction", - "fieldtype": "Small Text", - "label": "Writers Introduction" - }, - { - "doctype": "DocPerm" - } -] \ No newline at end of file diff --git a/website/doctype/blogger/README.md b/website/doctype/blogger/README.md deleted file mode 100644 index 13ddecda70..0000000000 --- a/website/doctype/blogger/README.md +++ /dev/null @@ -1 +0,0 @@ -Profile of blog writer in "Blog" section. \ No newline at end of file diff --git a/website/doctype/blogger/blogger.py b/website/doctype/blogger/blogger.py deleted file mode 100644 index 9cb4a44448..0000000000 --- a/website/doctype/blogger/blogger.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes -from webnotes import _ - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def on_update(self): - "if profile is set, then update all older blogs" - - from website.helpers.blog import clear_blog_cache - clear_blog_cache() - - if self.doc.profile: - for blog in webnotes.conn.sql_list("""select name from `tabBlog Post` where owner=%s - and ifnull(blogger,'')=''""", self.doc.profile): - b = webnotes.bean("Blog Post", blog) - b.doc.blogger = self.doc.name - b.save() - -def get_writers_args(): - bloggers = webnotes.conn.sql("""select * from `tabBlogger` - where ifnull(posts,0) > 0 and ifnull(disabled,0)=0 - order by posts desc""", as_dict=1) - - args = { - "bloggers": bloggers, - "texts": { - "all_posts_by": _("All posts by") - }, - "categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name") - } - - args.update(webnotes.doc("Blog Settings", "Blog Settings").fields) - return args \ No newline at end of file diff --git a/website/doctype/blogger/blogger.txt b/website/doctype/blogger/blogger.txt deleted file mode 100644 index 1486c01247..0000000000 --- a/website/doctype/blogger/blogger.txt +++ /dev/null @@ -1,102 +0,0 @@ -[ - { - "creation": "2013-03-25 16:00:51", - "docstatus": 0, - "modified": "2013-08-30 16:35:24", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "autoname": "field:short_name", - "description": "Profile of a Blogger", - "doctype": "DocType", - "document_type": "Master", - "icon": "icon-user", - "max_attachments": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Blogger", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Blogger", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "write": 1 - }, - { - "doctype": "DocType", - "name": "Blogger" - }, - { - "doctype": "DocField", - "fieldname": "disabled", - "fieldtype": "Check", - "label": "Disabled" - }, - { - "description": "Will be used in url (usually first name).", - "doctype": "DocField", - "fieldname": "short_name", - "fieldtype": "Data", - "label": "Short Name", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "full_name", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Full Name", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "profile", - "fieldtype": "Link", - "label": "Profile", - "options": "Profile" - }, - { - "doctype": "DocField", - "fieldname": "bio", - "fieldtype": "Small Text", - "label": "Bio" - }, - { - "doctype": "DocField", - "fieldname": "avatar", - "fieldtype": "Select", - "label": "Avatar", - "options": "attach_files:" - }, - { - "doctype": "DocField", - "fieldname": "posts", - "fieldtype": "Int", - "in_list_view": 1, - "label": "Posts", - "read_only": 1 - }, - { - "create": 1, - "doctype": "DocPerm", - "role": "Website Manager" - }, - { - "doctype": "DocPerm", - "match": "owner:profile", - "role": "Blogger" - } -] \ No newline at end of file diff --git a/website/doctype/company_history/README.md b/website/doctype/company_history/README.md deleted file mode 100644 index 482c8d33d5..0000000000 --- a/website/doctype/company_history/README.md +++ /dev/null @@ -1 +0,0 @@ -Company history detail for "About Us" section. \ No newline at end of file diff --git a/website/doctype/company_history/company_history.py b/website/doctype/company_history/company_history.py deleted file mode 100644 index 784339de7d..0000000000 --- a/website/doctype/company_history/company_history.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/website/doctype/company_history/company_history.txt b/website/doctype/company_history/company_history.txt deleted file mode 100644 index c0f230c347..0000000000 --- a/website/doctype/company_history/company_history.txt +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "creation": "2013-02-22 01:28:08", - "docstatus": 0, - "modified": "2013-07-10 14:54:06", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "doctype": "DocType", - "istable": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "in_list_view": 1, - "name": "__common__", - "parent": "Company History", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "Company History" - }, - { - "doctype": "DocField", - "fieldname": "year", - "fieldtype": "Data", - "label": "Year" - }, - { - "doctype": "DocField", - "fieldname": "highlight", - "fieldtype": "Text", - "label": "Highlight", - "print_width": "300px", - "width": "300px" - } -] \ No newline at end of file diff --git a/website/doctype/contact_us_settings/README.md b/website/doctype/contact_us_settings/README.md deleted file mode 100644 index 61f589f796..0000000000 --- a/website/doctype/contact_us_settings/README.md +++ /dev/null @@ -1 +0,0 @@ -Settings, introduction for "Contact Us" section. \ No newline at end of file diff --git a/website/doctype/contact_us_settings/contact_us_settings.py b/website/doctype/contact_us_settings/contact_us_settings.py deleted file mode 100644 index 37df106b0b..0000000000 --- a/website/doctype/contact_us_settings/contact_us_settings.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def onload(self): - """load address""" - if self.doc.query_options: - self.query_options = filter(None, self.doc.query_options.replace(",", "\n").split()) - else: - self.query_options = ["Sales", "Support", "General"] - if self.doc.address: - self.address = webnotes.bean("Address", self.doc.address).doc - - def on_update(self): - from webnotes.webutils import clear_cache - clear_cache("contact") \ No newline at end of file diff --git a/website/doctype/contact_us_settings/contact_us_settings.txt b/website/doctype/contact_us_settings/contact_us_settings.txt deleted file mode 100644 index 21db27efce..0000000000 --- a/website/doctype/contact_us_settings/contact_us_settings.txt +++ /dev/null @@ -1,82 +0,0 @@ -[ - { - "creation": "2013-02-21 20:12:42", - "docstatus": 0, - "modified": "2013-07-05 14:32:24", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "description": "Settings for Contact Us Page", - "doctype": "DocType", - "icon": "icon-cog", - "issingle": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Contact Us Settings", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "create": 1, - "doctype": "DocPerm", - "name": "__common__", - "parent": "Contact Us Settings", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "report": 0, - "role": "Website Manager", - "submit": 0, - "write": 1 - }, - { - "doctype": "DocType", - "name": "Contact Us Settings" - }, - { - "doctype": "DocField", - "fieldname": "help", - "fieldtype": "HTML", - "label": "Help", - "options": "
Link for Contact Page is \"/contact\"
" - }, - { - "description": "Address to be displayed on the Contact Page", - "doctype": "DocField", - "fieldname": "address", - "fieldtype": "Link", - "label": "Address", - "options": "Address" - }, - { - "description": "Default: \"Contact Us\"", - "doctype": "DocField", - "fieldname": "heading", - "fieldtype": "Data", - "label": "Heading" - }, - { - "description": "Introductory information for the Contact Us Page", - "doctype": "DocField", - "fieldname": "introduction", - "fieldtype": "Text Editor", - "label": "Introduction" - }, - { - "description": "Contact options, like \"Sales Query, Support Query\" etc each on a new line or separated by commas.", - "doctype": "DocField", - "fieldname": "query_options", - "fieldtype": "Small Text", - "label": "Query Options" - }, - { - "doctype": "DocPerm" - } -] \ No newline at end of file diff --git a/website/doctype/style_settings/README.md b/website/doctype/style_settings/README.md deleted file mode 100644 index de9d0cd57f..0000000000 --- a/website/doctype/style_settings/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Style settings for website. Includes settings for: - -- Site colours (background, toolbars) -- Fonts (family and size) -- Background (image if any) -- Custom CSS \ No newline at end of file diff --git a/website/doctype/style_settings/__init__.py b/website/doctype/style_settings/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/doctype/style_settings/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css deleted file mode 100644 index 7abdb4b89f..0000000000 --- a/website/doctype/style_settings/custom_template.css +++ /dev/null @@ -1,235 +0,0 @@ -{% if doc.at_import %} -{{ doc.at_import }} -{% endif %} - -body { -{% if doc.background_image %} - background: url("../{{ doc.background_image }}") repeat; -{% elif doc.background_color %} - background-color: #{{ doc.background_color }}; - background-image: none; -{% else %} - background-color: #ffffff; -{% endif %} -{% if doc.font or doc.google_web_font_for_text %} - font-family: '{{ doc.google_web_font_for_text or doc.font }}', 'Helvetica Neue', Arial, Sans !important; -{% endif %} - {% if doc.font_size %}font-size: {{ doc.font_size }} !important;{% endif %} - {% if doc.page_text %}color: #{{ doc.page_text }};{% endif %} -} - -{% if doc.page_links %}a, a:hover { - color: #{{ doc.page_links }}; -}{% endif %} - -{% if doc.font_size %} -.small { - font-size: {{ doc.small_font_size }} !important; -} -{% endif %} - -div.outer { - background-color: #{{ doc.page_background }}; -} - -{% if doc.google_web_font_for_heading or doc.heading_font %}h1, h2, h3, h4, h5 { - font-family: '{{ doc.google_web_font_for_heading or doc.heading_font }}', 'Helvetica Neue', Arial !important; -}{% endif %} - -{% if doc.heading_text_style %}h1, h2, h3, h4, h5 { - text-transform: {{ doc.heading_text_style }}; -}{% endif %} - -{% if doc.page_headings %}h1, h2, h3, h4, h5 { - color: #{{ doc.page_headings }}; -}{% endif %} - -{% if doc.page_border %} -/* Page Border*/ -div.outer { - box-shadow: 0 0 8px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.2); - -webkibox-shadow: 0 0 8px rgba(0, 0, 0, 0.2); -} -{% else %} -{% if doc.background_color.lower() == doc.page_background.lower() %} -div.web-footer { - border-top: 1px solid #{{ get_hex_shade(doc.page_background, 15) }}; - padding-top: 10px; -} -{% endif %} -{% endif %} - -div.web-footer, div.web-footer a { - font-size: 90%; - color: #{{ get_hex_shade(doc.background_color, 70) }}; -} - -/* Bootstrap Navbar */ -.navbar-default { - border: 0px; -} - -.navbar { - box-shadow: none; - border-radius: 0px; - background-color: #{{ doc.top_bar_background}}; - background-repeat: repeat-x; - background-image: none; - border-bottom: 1px solid {% if doc.top_bar_background.lower() == doc.page_background.lower() -%} - #{{ get_hex_shade(doc.page_background, 15) }}; - {%- else -%} - transparent; - {%- endif %} -} - -.navbar .navbar-brand, -.navbar .navbar-brand:hover, -.navbar .navbar-brand:focus, -.navbar .nav > li > a { - color: #{{ doc.top_bar_foreground }}; - text-shadow: none; -} - -.navbar .nav > li > a:hover, -.navbar .nav > li > a:focus { - color: #{{ doc.top_bar_foreground }}; - background-color: transparent; -} - -.navbar .navbar-text { - color: #999999; -} - -.navbar .nav .active > a, -.navbar .nav .active > a:hover, -.navbar .nav .active > a:focus { - color: #{{ doc.top_bar_foreground }}; - background-color: transparent; -} - -.navbar .navbar-link { - color: #444444; -} - -.navbar .navbar-link:hover, -.navbar .navbar-link:focus { - color: #{{ doc.top_bar_foreground}}; -} - -.navbar-fixed-top, -.navbar-static-top { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - -} -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #424242; - text-decoration: none; - background-color: transparent; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.navbar .nav li.dropdown > .dropdown-toggle .caret, -.navbar .nav li.dropdown > .dropdown-toggle:hover .caret { - border-top-color: #{{ doc.top_bar_foreground}}; - border-bottom-color: #{{ doc.top_bar_foreground}}; -} - -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open > .dropdown-toggle:hover .caret { - border-top-color: #{{ doc.top_bar_background}}; - border-bottom-color: #{{ doc.top_bar_background}}; -} - -.navbar .nav li.dropdown.open > .dropdown-toggle { - color: #{{ doc.top_bar_background}}; - background-color: #{{ doc.top_bar_foreground}}; -} - -@media (max-width: 800px) { - .navbar .nav-collapse .nav > li > a, - .navbar .nav-collapse .dropdown-menu a { - background-color: #{{ doc.top_bar_background}}; - color: #{{ doc.top_bar_foreground}}; - } - .navbar .nav-collapse .nav > li > a:hover, - .navbar .nav-collapse .dropdown-menu a:hover { - background-color: #{{ doc.top_bar_foreground}}; - color: #{{ doc.top_bar_background}}; - } - - .navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #{{ doc.top_bar_foreground }}; - border-bottom-color: #{{ doc.top_bar_foreground }}; - } - - .navbar .nav li.dropdown > .dropdown-toggle:hover .caret { - border-top-color: #{{ doc.top_bar_foreground }}; - border-bottom-color: #{{ doc.top_bar_foreground }}; - } - - .navbar .nav li.dropdown.open > .dropdown-toggle .caret, - .navbar .nav li.dropdown.open > .dropdown-toggle:hover .caret { - border-top-color: #{{ doc.top_bar_background }}; - border-bottom-color: #{{ doc.top_bar_background }}; - } - -} - -.navbar-default .navbar-toggle .icon-bar { - background-color: #{{ doc.top_bar_foreground }}; -} - -.breadcrumb { - background-color: #{{ get_hex_shade(doc.page_background, 5) }}; -} - -.breadcrumb > li { - text-shadow: none; -} - - -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #{{ get_hex_shade(doc.page_background, 5) }}; -} - -.table-hover tbody tr:hover td, -.table-hover tbody tr:hover th { - background-color: #{{ get_hex_shade(doc.page_background, 10) }}; -} - -.table-bordered { - border: 1px solid #{{ get_hex_shade(doc.page_background, 15) }}; -} - -.table th, -.table td { - border-top: 1px solid #{{ get_hex_shade(doc.page_background, 15) }}; -} - -.table-bordered th, -.table-bordered td { - border-left: 1px solid #{{ get_hex_shade(doc.page_background, 15) }}; -} - - - -.hero-unit { - background-color: #{{ get_hex_shade(doc.page_background, 15) }}; -} - -pre, code { - background-color: #{{ get_hex_shade(doc.page_background, 5) }}; -} - -hr { - border-top: 1px solid #{{ get_hex_shade(doc.page_background, 15) }}; - border-bottom: 1px solid #{{ get_hex_shade(doc.page_background, 5) }}; -} diff --git a/website/doctype/style_settings/style_settings.js b/website/doctype/style_settings/style_settings.js deleted file mode 100644 index f94246d22c..0000000000 --- a/website/doctype/style_settings/style_settings.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - - -cur_frm.cscript.onload_post_render = function() { - wn.require('lib/public/js/lib/jscolor/jscolor.js'); - $.each(["background_color", "page_background", "page_text", "page_links", - "top_bar_background", "top_bar_foreground", "page_headings"], function(i, v) { - $(cur_frm.fields_dict[v].input).addClass('color'); - }) - jscolor.bind(); -} \ No newline at end of file diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py deleted file mode 100644 index 7efe86117b..0000000000 --- a/website/doctype/style_settings/style_settings.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes - -from webnotes.utils import cint, cstr -from webnotes import _ - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def validate(self): - """make custom css""" - from jinja2 import Template - from webnotes.webutils import get_hex_shade - import os - - default_colours = { - "background_color": "FFFFFF", - "page_background": "FFFFFF", - "top_bar_background": "FFFFFF", - "top_bar_foreground": "444444", - "page_headings": "222222", - "page_text": "000000" - } - - for d in default_colours: - if not self.doc.fields.get(d): - self.doc.fields[d] = default_colours[d] - - self.validate_colors() - - with open(os.path.join( - os.path.dirname(os.path.abspath(__file__)), - 'custom_template.css'), 'r') as f: - temp = Template(f.read()) - - self.prepare() - - self.doc.custom_css = temp.render(doc = self.doc, get_hex_shade=get_hex_shade) - if self.doc.add_css: - self.doc.custom_css += '\n\n/* User CSS */\n\n' + self.doc.add_css - - from webnotes.sessions import clear_cache - clear_cache('Guest') - - from webnotes.webutils import clear_cache - clear_cache() - - for f in ["small_font_size", "at_import", "heading_text_style"]: - if f in self.doc.fields: - del self.doc.fields[f] - - def validate_colors(self): - if (self.doc.page_background or self.doc.page_text) and \ - self.doc.page_background==self.doc.page_text: - webnotes.msgprint(_("Page text and background is same color. Please change."), - raise_exception=1) - - if (self.doc.top_bar_background or self.doc.top_bar_foreground) and \ - self.doc.top_bar_background==self.doc.top_bar_foreground: - webnotes.msgprint(_("Top Bar text and background is same color. Please change."), - raise_exception=1) - - - def prepare(self): - if not self.doc.font_size: - self.doc.font_size = '13px' - - self.doc.small_font_size = cstr(cint(self.doc.font_size[:-2])-2) + 'px' - self.doc.page_border = cint(self.doc.page_border) - - fonts = [] - if self.doc.google_web_font_for_heading: - fonts.append(self.doc.google_web_font_for_heading) - if self.doc.google_web_font_for_text: - fonts.append(self.doc.google_web_font_for_text) - - fonts = list(set(fonts)) - - if self.doc.heading_text_as: - self.doc.heading_text_style = { - "UPPERCASE": "uppercase", - "Title Case":"capitalize", - "lowercase": "lowercase" - }.get(self.doc.heading_text_as) or "" - - self.doc.at_import = "" - for f in fonts: - self.doc.at_import += "\n@import url(https://fonts.googleapis.com/css?family=%s:400,700);" % f.replace(" ", "+") - - - def on_update(self): - """rebuild pages""" - from website.helpers.make_web_include_files import make - make() \ No newline at end of file diff --git a/website/doctype/style_settings/style_settings.txt b/website/doctype/style_settings/style_settings.txt deleted file mode 100644 index 7119d2c250..0000000000 --- a/website/doctype/style_settings/style_settings.txt +++ /dev/null @@ -1,201 +0,0 @@ -[ - { - "creation": "2013-03-25 16:01:33", - "docstatus": 0, - "modified": "2013-07-05 14:57:01", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "description": "Set your background color, font and image (tiled)", - "doctype": "DocType", - "icon": "icon-cog", - "issingle": 1, - "max_attachments": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Style Settings", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Style Settings", - "parentfield": "permissions", - "parenttype": "DocType", - "read": 1, - "report": 0, - "role": "Website Manager", - "submit": 0 - }, - { - "doctype": "DocType", - "name": "Style Settings" - }, - { - "doctype": "DocField", - "fieldname": "color", - "fieldtype": "Section Break", - "label": "Color" - }, - { - "description": "If image is selected, color will be ignored (attach first)", - "doctype": "DocField", - "fieldname": "background_image", - "fieldtype": "Select", - "label": "Background Image", - "options": "attach_files:" - }, - { - "description": "Solid background color (default light gray)", - "doctype": "DocField", - "fieldname": "background_color", - "fieldtype": "Data", - "label": "Background Color" - }, - { - "doctype": "DocField", - "fieldname": "page_background", - "fieldtype": "Data", - "label": "Page Background" - }, - { - "doctype": "DocField", - "fieldname": "page_border", - "fieldtype": "Check", - "label": "Page Border" - }, - { - "doctype": "DocField", - "fieldname": "page_headings", - "fieldtype": "Data", - "label": "Page Headings" - }, - { - "doctype": "DocField", - "fieldname": "page_text", - "fieldtype": "Data", - "label": "Page Text" - }, - { - "doctype": "DocField", - "fieldname": "page_links", - "fieldtype": "Data", - "label": "Page Links" - }, - { - "doctype": "DocField", - "fieldname": "cb0", - "fieldtype": "Column Break", - "label": "Top Bar", - "print_width": "50%", - "width": "50%" - }, - { - "doctype": "DocField", - "fieldname": "top_bar_background", - "fieldtype": "Data", - "label": "Top Bar Background" - }, - { - "description": "000 is black, fff is white", - "doctype": "DocField", - "fieldname": "top_bar_foreground", - "fieldtype": "Data", - "label": "Top Bar Text" - }, - { - "doctype": "DocField", - "fieldname": "fonts", - "fieldtype": "Section Break", - "label": "Fonts" - }, - { - "doctype": "DocField", - "fieldname": "heading_font", - "fieldtype": "Select", - "label": "Font (Heading)", - "options": "\nHelvetica Neue\nLucida Grande\nVerdana\nArial\nGeorgia\nTahoma\nLato\nOpen Sans" - }, - { - "doctype": "DocField", - "fieldname": "font", - "fieldtype": "Select", - "label": "Font (Text)", - "options": "\nHelvetica Neue\nLucida Grande\nVerdana\nArial\nGeorgia\nTahoma" - }, - { - "doctype": "DocField", - "fieldname": "font_size", - "fieldtype": "Select", - "label": "Font Size (Text)", - "options": "\n12px\n13px\n14px\n15px\n16px" - }, - { - "doctype": "DocField", - "fieldname": "heading_text_as", - "fieldtype": "Select", - "label": "Heading Text As", - "options": "\nUPPERCASE\nTitle Case\nlowercase" - }, - { - "doctype": "DocField", - "fieldname": "column_break_13", - "fieldtype": "Column Break" - }, - { - "description": "Add the name of Google Web Font e.g. \"Open Sans\"", - "doctype": "DocField", - "fieldname": "google_web_font_for_heading", - "fieldtype": "Data", - "label": "Google Web Font (Heading)" - }, - { - "description": "Add the name of Google Web Font e.g. \"Open Sans\"", - "doctype": "DocField", - "fieldname": "google_web_font_for_text", - "fieldtype": "Data", - "label": "Google Web Font (Text)" - }, - { - "doctype": "DocField", - "fieldname": "css", - "fieldtype": "Section Break", - "label": "CSS" - }, - { - "description": "add your own CSS (careful!)", - "doctype": "DocField", - "fieldname": "add_css", - "fieldtype": "Code", - "label": "Add CSS" - }, - { - "description": "Auto generated", - "doctype": "DocField", - "fieldname": "custom_css", - "fieldtype": "Code", - "label": "Custom CSS", - "read_only": 1 - }, - { - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "write": 1 - }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1 - } -] \ No newline at end of file diff --git a/website/doctype/top_bar_item/README.md b/website/doctype/top_bar_item/README.md deleted file mode 100644 index 3300367c7d..0000000000 --- a/website/doctype/top_bar_item/README.md +++ /dev/null @@ -1 +0,0 @@ -Link in the header or footer of the website. \ No newline at end of file diff --git a/website/doctype/top_bar_item/__init__.py b/website/doctype/top_bar_item/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/doctype/top_bar_item/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/doctype/top_bar_item/top_bar_item.txt b/website/doctype/top_bar_item/top_bar_item.txt deleted file mode 100644 index 58d101e12a..0000000000 --- a/website/doctype/top_bar_item/top_bar_item.txt +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "creation": "2013-02-22 01:28:08", - "docstatus": 0, - "modified": "2013-07-10 14:54:25", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "doctype": "DocType", - "istable": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "in_list_view": 1, - "name": "__common__", - "parent": "Top Bar Item", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "Top Bar Item" - }, - { - "doctype": "DocField", - "fieldname": "label", - "fieldtype": "Data", - "label": "Label", - "print_width": "120px", - "width": "120px" - }, - { - "doctype": "DocField", - "fieldname": "url", - "fieldtype": "Data", - "label": "URL", - "print_width": "200px", - "width": "200px" - }, - { - "doctype": "DocField", - "fieldname": "target", - "fieldtype": "Select", - "label": "Target", - "options": "\ntarget = \"_blank\"" - }, - { - "doctype": "DocField", - "fieldname": "parent_label", - "fieldtype": "Select", - "label": "Parent Label" - } -] \ No newline at end of file diff --git a/website/doctype/web_page/README.md b/website/doctype/web_page/README.md deleted file mode 100644 index 1ef179b9e4..0000000000 --- a/website/doctype/web_page/README.md +++ /dev/null @@ -1 +0,0 @@ -Static (HTML / JS / CSS) page created by the user for the website. \ No newline at end of file diff --git a/website/doctype/web_page/__init__.py b/website/doctype/web_page/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/doctype/web_page/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/doctype/web_page/web_page.js b/website/doctype/web_page/web_page.js deleted file mode 100644 index 9e523607e6..0000000000 --- a/website/doctype/web_page/web_page.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -$.extend(cur_frm.cscript, { - layout: function(doc) { - if(!doc.__islocal) { - if(doc.insert_code) { - if(!doc.javascript) { - cur_frm.set_value("javascript", - 'wn.pages["'+doc.name+'"].onload = function(wrapper) { }'); - } - } - if(doc.insert_style) { - if(!doc.css) { - cur_frm.set_value("css", '#page-'+doc.name+' { }'); - } - } - } - }, - refresh: function(doc) { - cur_frm.cscript.layout(doc); - }, - insert_style: function(doc) { - cur_frm.cscript.layout(doc); - }, - insert_code: function(doc) { - cur_frm.cscript.layout(doc); - } -}) \ No newline at end of file diff --git a/website/doctype/web_page/web_page.py b/website/doctype/web_page/web_page.py deleted file mode 100644 index dbcd68e24e..0000000000 --- a/website/doctype/web_page/web_page.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType(): - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def autoname(self): - from webnotes.webutils import page_name - self.doc.name = page_name(self.doc.title) - - def on_update(self): - from webnotes.webutils import update_page_name - update_page_name(self.doc, self.doc.title) - self.if_home_clear_cache() - - def if_home_clear_cache(self): - """if home page, clear cache""" - if webnotes.conn.get_value("Website Settings", None, "home_page")==self.doc.name: - from webnotes.sessions import clear_cache - clear_cache('Guest') - - from webnotes.webutils import clear_cache - clear_cache(self.doc.page_name) - clear_cache('index') - - def prepare_template_args(self): - if self.doc.slideshow: - from website.helpers.slideshow import get_slideshow - get_slideshow(self) - - self.doc.meta_description = self.doc.description diff --git a/website/doctype/web_page/web_page.txt b/website/doctype/web_page/web_page.txt deleted file mode 100644 index 34fa266928..0000000000 --- a/website/doctype/web_page/web_page.txt +++ /dev/null @@ -1,154 +0,0 @@ -[ - { - "creation": "2013-03-28 10:35:30", - "docstatus": 0, - "modified": "2013-07-05 15:02:45", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "description": "Page to show on the website\n", - "doctype": "DocType", - "document_type": "Transaction", - "icon": "icon-file-alt", - "max_attachments": 20, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Web Page", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Web Page", - "parentfield": "permissions", - "parenttype": "DocType", - "read": 1, - "role": "Website Manager", - "submit": 0 - }, - { - "doctype": "DocType", - "name": "Web Page" - }, - { - "description": "Title / headline of your page", - "doctype": "DocField", - "fieldname": "title", - "fieldtype": "Data", - "label": "Title", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "cb1", - "fieldtype": "Column Break", - "width": "50%" - }, - { - "doctype": "DocField", - "fieldname": "published", - "fieldtype": "Check", - "label": "Published" - }, - { - "description": "Page url name (auto-generated) (add \".html\")", - "doctype": "DocField", - "fieldname": "page_name", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Page Name", - "read_only": 1 - }, - { - "description": "Page content", - "doctype": "DocField", - "fieldname": "sb1", - "fieldtype": "Section Break", - "label": "Content" - }, - { - "description": "Begin this page with a slideshow of images", - "doctype": "DocField", - "fieldname": "slideshow", - "fieldtype": "Link", - "label": "Slideshow", - "options": "Website Slideshow" - }, - { - "description": "Description for page header.", - "doctype": "DocField", - "fieldname": "description", - "fieldtype": "Small Text", - "label": "Description" - }, - { - "description": "Content in markdown format that appears on the main side of your page", - "doctype": "DocField", - "fieldname": "main_section", - "fieldtype": "Text Editor", - "label": "Main Section" - }, - { - "description": "Link to other pages in the side bar and next section", - "doctype": "DocField", - "fieldname": "sb2", - "fieldtype": "Section Break", - "label": "More" - }, - { - "doctype": "DocField", - "fieldname": "text_align", - "fieldtype": "Select", - "label": "Text Align", - "options": "Left\nCenter\nRight" - }, - { - "description": "Add code as <script>", - "doctype": "DocField", - "fieldname": "insert_code", - "fieldtype": "Check", - "label": "Insert Code" - }, - { - "doctype": "DocField", - "fieldname": "javascript", - "fieldtype": "Code", - "label": "Javascript", - "options": "Javascript" - }, - { - "doctype": "DocField", - "fieldname": "insert_style", - "fieldtype": "Check", - "label": "Insert Style" - }, - { - "doctype": "DocField", - "fieldname": "css", - "fieldtype": "Code", - "label": "CSS", - "options": "CSS" - }, - { - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "write": 1 - }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1 - } -] \ No newline at end of file diff --git a/website/doctype/website_script/README.md b/website/doctype/website_script/README.md deleted file mode 100644 index 65af2a13d2..0000000000 --- a/website/doctype/website_script/README.md +++ /dev/null @@ -1 +0,0 @@ -Custom javascript to be appended at the end of the page. Used to include 3rd party tracking / analytics tools. \ No newline at end of file diff --git a/website/doctype/website_script/website_script.py b/website/doctype/website_script/website_script.py deleted file mode 100644 index 2a5b9e2f3a..0000000000 --- a/website/doctype/website_script/website_script.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def on_update(self): - # make js and css - from website.helpers.make_web_include_files import make - make() \ No newline at end of file diff --git a/website/doctype/website_script/website_script.txt b/website/doctype/website_script/website_script.txt deleted file mode 100644 index ae22a345dc..0000000000 --- a/website/doctype/website_script/website_script.txt +++ /dev/null @@ -1,52 +0,0 @@ -[ - { - "creation": "2012-12-27 11:51:24", - "docstatus": 0, - "modified": "2013-07-05 15:02:48", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "description": "Script to attach to all web pages.", - "doctype": "DocType", - "document_type": "Other", - "icon": "icon-code", - "issingle": 1, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "fieldname": "javascript", - "fieldtype": "Code", - "label": "Javascript", - "name": "__common__", - "options": "Javascript", - "parent": "Website Script", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "create": 1, - "doctype": "DocPerm", - "name": "__common__", - "parent": "Website Script", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "role": "Website Manager", - "write": 1 - }, - { - "doctype": "DocType", - "name": "Website Script" - }, - { - "doctype": "DocField" - }, - { - "doctype": "DocPerm" - } -] \ No newline at end of file diff --git a/website/doctype/website_settings/README.md b/website/doctype/website_settings/README.md deleted file mode 100644 index 8e654fca58..0000000000 --- a/website/doctype/website_settings/README.md +++ /dev/null @@ -1 +0,0 @@ -Overall website settings. Including banners, items appearing in the top and bottom menus, tracking code for Google Analytics etc. \ No newline at end of file diff --git a/website/doctype/website_settings/__init__.py b/website/doctype/website_settings/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/doctype/website_settings/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/doctype/website_settings/website_settings.js b/website/doctype/website_settings/website_settings.js deleted file mode 100644 index 21b55be5ea..0000000000 --- a/website/doctype/website_settings/website_settings.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -// update parent select - -$.extend(cur_frm.cscript, { - refresh: function(doc) { - cur_frm.add_custom_button("Auto Build Website", function() { - cur_frm.call({ - doc: cur_frm.doc, - method: "make_website" - }) - }, 'icon-magic') - }, - onload_post_render: function(doc) { - this.set_parent_label_options(); - }, - - label: function(doc, cdt, cdn) { - var item = wn.model.get_doc(cdt, cdn); - if(item.parentfield === "top_bar_items") { - this.set_parent_label_options(); - } - }, - - parent_label: function(doc, cdt, cdn) { - this.label(doc, cdt, cdn); - }, - - url: function(doc, cdt, cdn) { - this.label(doc, cdt, cdn); - }, - - set_parent_label_options: function() { - wn.meta.get_docfield("Top Bar Item", "parent_label", cur_frm.docname).options = - this.get_parent_options("top_bar_items"); - - if($(cur_frm.fields_dict.top_bar_items.grid.wrapper).find(".grid-row-open")) { - cur_frm.fields_dict.top_bar_items.grid.refresh(); - } - }, - - // get labels of parent items - get_parent_options: function(table_field) { - var items = getchildren('Top Bar Item', cur_frm.doc.name, table_field); - var main_items = ['']; - for(var i in items) { - var d = items[i]; - if(!d.parent_label && !d.url && d.label) { - main_items.push(d.label); - } - } - return main_items.join('\n'); - } -}); - -cur_frm.cscript.set_banner_from_image = function(doc) { - if(!doc.banner_image) { - msgprint(wn._("Select a Banner Image first.")); - } - var src = doc.banner_image; - cur_frm.set_value("banner_html", ""); -} \ No newline at end of file diff --git a/website/doctype/website_settings/website_settings.py b/website/doctype/website_settings/website_settings.py deleted file mode 100644 index 5d6c874d70..0000000000 --- a/website/doctype/website_settings/website_settings.py +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -from webnotes import _, msgprint - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def validate(self): - self.set_home_page() - self.validate_top_bar_items() - self.validate_footer_items() - - def make_website(self): - # set item pages - for name in webnotes.conn.sql_list("""select name from tabItem where - ifnull(show_in_website, 0)=0 and is_sales_item ='Yes' """): - webnotes.msgprint("Setting 'Show in Website' for:" + name) - item = webnotes.bean("Item", name) - item.doc.show_in_website = 1 - item.doc.website_warehouse = item.doc.default_warehouse - item.doc.website_image = item.doc.image - item.save() - - # set item group pages - for name in webnotes.conn.sql_list("""select name from `tabItem Group` where - ifnull(show_in_website, 0)=0 and exists (select name from tabItem where - ifnull(show_in_website, 0)=1)"""): - webnotes.msgprint("Setting 'Show in Website' for:" + name) - item_group = webnotes.bean("Item Group", name) - item_group.doc.show_in_website = 1 - item_group.save() - - def validate_top_bar_items(self): - """validate url in top bar items""" - for top_bar_item in self.doclist.get({"parentfield": "top_bar_items"}): - if top_bar_item.parent_label: - parent_label_item = self.doclist.get({"parentfield": "top_bar_items", - "label": top_bar_item.parent_label}) - - if not parent_label_item: - # invalid item - msgprint(_(self.meta.get_label("parent_label", parentfield="top_bar_items")) + - (" \"%s\": " % top_bar_item.parent_label) + _("does not exist"), raise_exception=True) - - elif not parent_label_item[0] or parent_label_item[0].url: - # parent cannot have url - msgprint(_("Top Bar Item") + (" \"%s\": " % top_bar_item.parent_label) + - _("cannot have a URL, because it has child item(s)"), raise_exception=True) - - def validate_footer_items(self): - """clear parent label in footer""" - for footer_item in self.doclist.get({"parentfield": "footer_items"}): - footer_item.parent_label = None - - def on_update(self): - # make js and css - from website.helpers.make_web_include_files import make - make() - - # clear web cache (for menus!) - from webnotes.webutils import clear_cache - clear_cache() - - def set_home_page(self): - from webnotes.model.doc import Document - webnotes.conn.sql("""delete from `tabDefault Home Page` where role='Guest'""") - - d = Document('Default Home Page') - d.parent = 'Control Panel' - d.parenttype = 'Control Panel' - d.parentfield = 'default_home_pages' - d.role = 'Guest' - d.home_page = self.doc.home_page - d.save() \ No newline at end of file diff --git a/website/doctype/website_settings/website_settings.txt b/website/doctype/website_settings/website_settings.txt deleted file mode 100644 index f8ceafe162..0000000000 --- a/website/doctype/website_settings/website_settings.txt +++ /dev/null @@ -1,249 +0,0 @@ -[ - { - "creation": "2013-04-30 12:58:46", - "docstatus": 0, - "modified": "2013-07-10 20:37:38", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "doctype": "DocType", - "document_type": "Other", - "icon": "icon-cog", - "issingle": 1, - "max_attachments": 10, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Website Settings", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Website Settings", - "parentfield": "permissions", - "parenttype": "DocType", - "read": 1, - "report": 0, - "submit": 0 - }, - { - "doctype": "DocType", - "name": "Website Settings" - }, - { - "doctype": "DocField", - "fieldname": "sb0", - "fieldtype": "Section Break", - "label": "Landing Page" - }, - { - "description": "The \"Web Page\" that is the website home page", - "doctype": "DocField", - "fieldname": "home_page", - "fieldtype": "Link", - "label": "Home Page", - "options": "Web Page", - "reqd": 0 - }, - { - "description": "The name of your company / website as you want to appear on browser title bar. All pages will have this as the prefix to the title.", - "doctype": "DocField", - "fieldname": "title_prefix", - "fieldtype": "Data", - "label": "Title Prefix" - }, - { - "doctype": "DocField", - "fieldname": "cb4", - "fieldtype": "Column Break" - }, - { - "description": "If checked, the Home page will be the default Item Group for the website.", - "doctype": "DocField", - "fieldname": "home_page_is_products", - "fieldtype": "Check", - "label": "Home Page is Products" - }, - { - "description": "Add a banner to the site. (small banners are usually good)", - "doctype": "DocField", - "fieldname": "banner", - "fieldtype": "Section Break", - "label": "Banner" - }, - { - "description": "Select an image of approx width 150px with a transparent background for best results.", - "doctype": "DocField", - "fieldname": "banner_image", - "fieldtype": "Select", - "label": "Banner Image", - "options": "attach_files:" - }, - { - "doctype": "DocField", - "fieldname": "set_banner_from_image", - "fieldtype": "Button", - "label": "Set Banner from Image" - }, - { - "description": "Banner is above the Top Menu Bar.", - "doctype": "DocField", - "fieldname": "banner_html", - "fieldtype": "Small Text", - "label": "Banner HTML" - }, - { - "description": "Menu items in the Top Bar. For setting the color of the Top Bar, go to Style Settings", - "doctype": "DocField", - "fieldname": "top_bar", - "fieldtype": "Section Break", - "label": "Top Bar" - }, - { - "description": "Brand is what appears on the top-right of the toolbar. If it is an image, make sure it\nhas a transparent background and use the <img /> tag. Keep size as 200px x 30px", - "doctype": "DocField", - "fieldname": "brand_html", - "fieldtype": "Small Text", - "label": "Brand HTML" - }, - { - "doctype": "DocField", - "fieldname": "top_bar_items", - "fieldtype": "Table", - "label": "Top Bar Items", - "options": "Top Bar Item" - }, - { - "doctype": "DocField", - "fieldname": "footer", - "fieldtype": "Section Break", - "label": "Footer" - }, - { - "description": "Address and other legal information you may want to put in the footer.", - "doctype": "DocField", - "fieldname": "address", - "fieldtype": "Text Editor", - "label": "Address" - }, - { - "doctype": "DocField", - "fieldname": "copyright", - "fieldtype": "Data", - "label": "Copyright" - }, - { - "doctype": "DocField", - "fieldname": "footer_items", - "fieldtype": "Table", - "label": "Footer Items", - "options": "Top Bar Item" - }, - { - "doctype": "DocField", - "fieldname": "integrations", - "fieldtype": "Section Break", - "label": "Integrations" - }, - { - "description": "Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.", - "doctype": "DocField", - "fieldname": "google_analytics_id", - "fieldtype": "Data", - "label": "Google Analytics ID" - }, - { - "doctype": "DocField", - "fieldname": "column_break_17", - "fieldtype": "Column Break" - }, - { - "doctype": "DocField", - "fieldname": "google_plus_one", - "fieldtype": "Check", - "label": "Google Plus One" - }, - { - "doctype": "DocField", - "fieldname": "facebook_share", - "fieldtype": "Check", - "label": "Facebook Share" - }, - { - "doctype": "DocField", - "fieldname": "linked_in_share", - "fieldtype": "Check", - "label": "Linked In Share" - }, - { - "doctype": "DocField", - "fieldname": "twitter_share", - "fieldtype": "Check", - "label": "Twitter Share" - }, - { - "description": "Tweet will be shared via your user account (if specified)", - "doctype": "DocField", - "fieldname": "twitter_share_via", - "fieldtype": "Data", - "label": "Twitter Share via" - }, - { - "doctype": "DocField", - "fieldname": "misc_section", - "fieldtype": "Section Break", - "label": "Misc" - }, - { - "description": "An icon file with .ico extension. Should be 16 x 16 px. Generated using a favicon generator. [favicon-generator.org]", - "doctype": "DocField", - "fieldname": "favicon", - "fieldtype": "Select", - "label": "FavIcon", - "options": "attach_files:" - }, - { - "description": "Sub-domain provided by erpnext.com", - "doctype": "DocField", - "fieldname": "subdomain", - "fieldtype": "Text", - "label": "Subdomain", - "read_only": 1, - "reqd": 0 - }, - { - "doctype": "DocField", - "fieldname": "column_break_28", - "fieldtype": "Column Break" - }, - { - "description": "Disable Customer Signup link in Login page", - "doctype": "DocField", - "fieldname": "disable_signup", - "fieldtype": "Check", - "label": "Disable Signup" - }, - { - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "role": "Website Manager", - "write": 1 - }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "role": "All" - } -] \ No newline at end of file diff --git a/website/doctype/website_slideshow/README.md b/website/doctype/website_slideshow/README.md deleted file mode 100644 index e6afaed16e..0000000000 --- a/website/doctype/website_slideshow/README.md +++ /dev/null @@ -1 +0,0 @@ -Image slide show for Web Page, Product (Item) page, Item Group page. \ No newline at end of file diff --git a/website/doctype/website_slideshow/website_slideshow.js b/website/doctype/website_slideshow/website_slideshow.js deleted file mode 100644 index a28e1c75ec..0000000000 --- a/website/doctype/website_slideshow/website_slideshow.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -cur_frm.cscript.refresh = function(doc) { - cur_frm.set_intro(""); - if(doc.__islocal) { - cur_frm.set_intro("First set the name and save the record."); - } - else { - cur_frm.set_intro("Attach files / urls and add in table."); - } -} \ No newline at end of file diff --git a/website/doctype/website_slideshow/website_slideshow.py b/website/doctype/website_slideshow/website_slideshow.py deleted file mode 100644 index 8bc0447ef0..0000000000 --- a/website/doctype/website_slideshow/website_slideshow.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def on_update(self): - # a slide show can be in use and any change in it should get reflected - from webnotes.webutils import clear_cache - clear_cache() \ No newline at end of file diff --git a/website/doctype/website_slideshow/website_slideshow.txt b/website/doctype/website_slideshow/website_slideshow.txt deleted file mode 100644 index e8ca08e4f6..0000000000 --- a/website/doctype/website_slideshow/website_slideshow.txt +++ /dev/null @@ -1,82 +0,0 @@ -[ - { - "creation": "2013-03-07 15:53:15", - "docstatus": 0, - "modified": "2013-07-05 15:03:30", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 1, - "autoname": "field:slideshow_name", - "description": "Slideshow like display for the website", - "doctype": "DocType", - "document_type": "Transaction", - "icon": "icon-play", - "max_attachments": 10, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Website Slideshow", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "name": "__common__", - "parent": "Website Slideshow", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "report": 1, - "role": "Website Manager", - "submit": 0, - "write": 1 - }, - { - "doctype": "DocType", - "name": "Website Slideshow" - }, - { - "doctype": "DocField", - "fieldname": "slideshow_name", - "fieldtype": "Data", - "label": "Slideshow Name", - "read_only": 0, - "reqd": 1 - }, - { - "depends_on": "eval:!doc.__islocal", - "description": "Note: For best results, images must be of the same size and width must be greater than height.", - "doctype": "DocField", - "fieldname": "sb0", - "fieldtype": "Section Break", - "label": "Slideshow Items" - }, - { - "depends_on": "eval:!doc.__islocal", - "doctype": "DocField", - "fieldname": "slideshow_items", - "fieldtype": "Table", - "label": "Slideshow Items", - "options": "Website Slideshow Item" - }, - { - "depends_on": "eval:!doc.__islocal", - "description": "This goes above the slideshow.", - "doctype": "DocField", - "fieldname": "header", - "fieldtype": "Text Editor", - "label": "Header" - }, - { - "doctype": "DocPerm" - } -] \ No newline at end of file diff --git a/website/doctype/website_slideshow_item/README.md b/website/doctype/website_slideshow_item/README.md deleted file mode 100644 index 2f52d24794..0000000000 --- a/website/doctype/website_slideshow_item/README.md +++ /dev/null @@ -1 +0,0 @@ -Slide (image) details for Website Slideshow. \ No newline at end of file diff --git a/website/doctype/website_slideshow_item/website_slideshow_item.py b/website/doctype/website_slideshow_item/website_slideshow_item.py deleted file mode 100644 index 784339de7d..0000000000 --- a/website/doctype/website_slideshow_item/website_slideshow_item.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/website/doctype/website_slideshow_item/website_slideshow_item.txt b/website/doctype/website_slideshow_item/website_slideshow_item.txt deleted file mode 100644 index c6fd78caf0..0000000000 --- a/website/doctype/website_slideshow_item/website_slideshow_item.txt +++ /dev/null @@ -1,53 +0,0 @@ -[ - { - "creation": "2013-03-07 12:26:33", - "docstatus": 0, - "modified": "2013-07-10 14:54:25", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "allow_attach": 0, - "doctype": "DocType", - "istable": 1, - "max_attachments": 10, - "module": "Website", - "name": "__common__" - }, - { - "doctype": "DocField", - "in_list_view": 1, - "name": "__common__", - "parent": "Website Slideshow Item", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "Website Slideshow Item" - }, - { - "doctype": "DocField", - "fieldname": "image", - "fieldtype": "Select", - "label": "Image", - "options": "attach_files:" - }, - { - "doctype": "DocField", - "fieldname": "heading", - "fieldtype": "Data", - "label": "Heading", - "print_width": "200px", - "width": "200px" - }, - { - "doctype": "DocField", - "fieldname": "description", - "fieldtype": "Text", - "label": "Description", - "print_width": "200px", - "width": "200px" - } -] \ No newline at end of file diff --git a/website/helpers/blog.py b/website/helpers/blog.py deleted file mode 100644 index 3f6d94fa6c..0000000000 --- a/website/helpers/blog.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -import webnotes.webutils -from webnotes import _ - -def clear_blog_cache(): - for blog in webnotes.conn.sql_list("""select page_name from - `tabBlog Post` where ifnull(published,0)=1"""): - webnotes.webutils.delete_page_cache(blog) - - webnotes.webutils.delete_page_cache("writers") - -@webnotes.whitelist(allow_guest=True) -def get_blog_list(start=0, by=None, category=None): - import webnotes - condition = "" - if by: - condition = " and t1.blogger='%s'" % by.replace("'", "\'") - if category: - condition += " and t1.blog_category='%s'" % category.replace("'", "\'") - query = """\ - select - t1.title, t1.name, t1.page_name, t1.published_on as creation, - ifnull(t1.blog_intro, t1.content) as content, - t2.full_name, t2.avatar, t1.blogger, - (select count(name) from `tabComment` where - comment_doctype='Blog Post' and comment_docname=t1.name) as comments - from `tabBlog Post` t1, `tabBlogger` t2 - where ifnull(t1.published,0)=1 - and t1.blogger = t2.name - %(condition)s - order by published_on desc, name asc - limit %(start)s, 20""" % {"start": start, "condition": condition} - - result = webnotes.conn.sql(query, as_dict=1) - - # strip html tags from content - import webnotes.utils - - for res in result: - from webnotes.utils import global_date_format - res['published'] = global_date_format(res['creation']) - if not res['content']: - res['content'] = webnotes.webutils.get_html(res['page_name']) - res['content'] = res['content'][:140] - - return result - -@webnotes.whitelist(allow_guest=True) -def add_comment(args=None): - """ - args = { - 'comment': '', - 'comment_by': '', - 'comment_by_fullname': '', - 'comment_doctype': '', - 'comment_docname': '', - 'page_name': '', - } - """ - import webnotes - import webnotes.utils, markdown2 - - if not args: args = webnotes.form_dict - args['comment'] = unicode(markdown2.markdown(args.get('comment') or '')) - args['doctype'] = "Comment" - - page_name = args.get("page_name") - if "page_name" in args: - del args["page_name"] - if "cmd" in args: - del args["cmd"] - - comment = webnotes.bean(args) - comment.ignore_permissions = True - comment.insert() - - # since comments are embedded in the page, clear the web cache - webnotes.webutils.clear_cache(page_name) - - args['comment_date'] = webnotes.utils.global_date_format(comment.doc.creation) - template_args = { 'comment_list': [args], 'template': 'app/website/templates/html/comment.html' } - - # get html of comment row - comment_html = webnotes.webutils.build_html(template_args) - - # notify commentors - commentors = [d[0] for d in webnotes.conn.sql("""select comment_by from tabComment where - comment_doctype='Blog Post' and comment_docname=%s and - ifnull(unsubscribed, 0)=0""", args.get('comment_docname'))] - - blog = webnotes.doc("Blog Post", args.get("comment_docname")) - blogger_profile = webnotes.conn.get_value("Blogger", blog.blogger, "profile") - blogger_email = webnotes.conn.get_value("Profile", blogger_profile, "email") - - from webnotes.utils.email_lib.bulk import send - send(recipients=list(set(commentors + [blogger_email])), - doctype='Comment', - email_field='comment_by', - subject='New Comment on Blog: ' + blog.title, - message='%(comment)s

By %(comment_by_fullname)s

' % args, - ref_doctype='Blog Post', ref_docname=blog.name) - - return comment_html.replace("\n", "") - -def get_blog_content(blog_page_name): - import webnotes.webutils - content = webnotes.webutils.get_html(blog_page_name) - import webnotes.utils - content = webnotes.utils.escape_html(content) - return content - -def get_blog_template_args(): - args = { - "categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name") - } - args.update(webnotes.doc("Blog Settings", "Blog Settings").fields) - return args diff --git a/website/helpers/blog_feed.py b/website/helpers/blog_feed.py deleted file mode 100644 index 577cde6123..0000000000 --- a/website/helpers/blog_feed.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -""" -Generate RSS feed for blog -""" - -rss = u""" - - - %(title)s - %(description)s - %(link)s - %(modified)s - %(modified)s - 1800 - %(items)s - -""" - -rss_item = u""" - - %(title)s - %(content)s - %(link)s - %(name)s - %(published_on)s -""" - -def generate(): - """generate rss feed""" - import os, urllib - import webnotes - from webnotes.model.doc import Document - from webnotes.utils import escape_html - - host = (os.environ.get('HTTPS') and 'https://' or 'http://') + os.environ.get('HTTP_HOST') - - items = '' - blog_list = webnotes.conn.sql("""\ - select page_name as name, published_on, modified, title, content from `tabBlog Post` - where ifnull(published,0)=1 - order by published_on desc limit 20""", as_dict=1) - - for blog in blog_list: - blog.link = urllib.quote(host + '/' + blog.name + '.html') - blog.content = escape_html(blog.content or "") - - items += rss_item % blog - - modified = max((blog['modified'] for blog in blog_list)) - - ws = Document('Website Settings', 'Website Settings') - return (rss % { - 'title': ws.title_prefix, - 'description': ws.description or (ws.title_prefix + ' Blog'), - 'modified': modified, - 'items': items, - 'link': host + '/blog.html' - }).encode('utf-8', 'ignore') diff --git a/website/helpers/contact.py b/website/helpers/contact.py deleted file mode 100644 index 35446a3d24..0000000000 --- a/website/helpers/contact.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals - -import webnotes -from webnotes.utils import now - -max_communications_per_hour = 300 - -@webnotes.whitelist(allow_guest=True) -def send_message(subject="Website Query", message="", sender="", status="Open"): - if not message: - webnotes.response["message"] = 'Please write something' - return - - if not sender: - webnotes.response["message"] = 'Email Id Required' - return - - # make lead / communication - from selling.doctype.lead.get_leads import add_sales_communication - message = add_sales_communication(subject or "Website Query", message, sender, sender, - mail=None, status=status) - - # guest method, cap max writes per hour - if webnotes.conn.sql("""select count(*) from `tabCommunication` - where TIMEDIFF(%s, modified) < '01:00:00'""", now())[0][0] > max_communications_per_hour: - webnotes.response["message"] = "Sorry: we believe we have received an unreasonably high number of requests of this kind. Please try later" - return - - webnotes.response.status = "okay" diff --git a/website/helpers/make_web_include_files.py b/website/helpers/make_web_include_files.py deleted file mode 100644 index a9df23bb1c..0000000000 --- a/website/helpers/make_web_include_files.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -import os -import webnotes - -def make(): - from startup.webutils import get_home_page - - if not webnotes.conn: - webnotes.connect() - - home_page = get_home_page() - - fname = 'js/wn-web.js' - if os.path.basename(os.path.abspath('.'))!='public': - fname = os.path.join('public', fname) - - with open(fname, 'w') as f: - f.write(get_web_script()) - - fname = 'css/wn-web.css' - if os.path.basename(os.path.abspath('.'))!='public': - fname = os.path.join('public', fname) - - # style - wn.css - with open(fname, 'w') as f: - f.write(get_web_style()) - -def get_web_script(): - """returns web startup script""" - user_script = "" - - ws = webnotes.doc("Website Settings", "Website Settings") - - if ws.google_analytics_id: - user_script += google_analytics_template % ws.google_analytics_id - - user_script += (webnotes.conn.get_value('Website Script', None, 'javascript') or '') - - return user_script - -def get_web_style(): - """returns web css""" - return webnotes.conn.get_value('Style Settings', None, 'custom_css') or '' - -google_analytics_template = """ - -// Google Analytics template - -window._gaq = window._gaq || []; -window._gaq.push(['_setAccount', '%s']); -window._gaq.push(['_trackPageview']); - -(function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); -})(); -""" \ No newline at end of file diff --git a/website/helpers/partner.py b/website/helpers/partner.py deleted file mode 100644 index 404894e53c..0000000000 --- a/website/helpers/partner.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes - -def get_partner_args(): - return { - "partners": webnotes.conn.sql("""select * from `tabSales Partner` - where show_in_website=1 order by name asc""", as_dict=True), - } \ No newline at end of file diff --git a/website/helpers/sitemap.py b/website/helpers/sitemap.py deleted file mode 100644 index fb0d0707ea..0000000000 --- a/website/helpers/sitemap.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals - -frame_xml = """ -%s -""" - -link_xml = """\n%s%s""" - -# generate the sitemap XML -def generate(domain): - global frame_xml, link_xml - import urllib, os - import webnotes - import webnotes.webutils - from webnotes.utils import nowdate - - # settings - max_items = 1000 - count = 0 - - site_map = '' - if domain: - today = nowdate() - - # generated pages - for doctype, opts in webnotes.webutils.get_generators().items(): - pages = webnotes.conn.sql("""select page_name, `modified` - from `tab%s` where ifnull(%s,0)=1 - order by modified desc""" % (doctype, opts.get("condition_field"))) - - for p in pages: - if count >= max_items: break - if p[0]: - page_url = os.path.join(domain, urllib.quote(p[0])) - modified = p[1].strftime('%Y-%m-%d') - site_map += link_xml % (page_url, modified) - count += 1 - - if count >= max_items: break - - # standard pages - for page, opts in webnotes.get_config()["web"]["pages"].items(): - if "no_cache" in opts: - continue - - if count >= max_items: break - page_url = os.path.join(domain, urllib.quote(page)) - modified = today - site_map += link_xml % (page_url, modified) - count += 1 - - return frame_xml % site_map diff --git a/website/helpers/slideshow.py b/website/helpers/slideshow.py deleted file mode 100644 index 7e3c398bf4..0000000000 --- a/website/helpers/slideshow.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -import webnotes - -def get_slideshow(obj): - slideshow = webnotes.bean("Website Slideshow", obj.doc.slideshow) - obj.slides = slideshow.doclist.get({"doctype":"Website Slideshow Item"}) - obj.doc.slideshow_header = slideshow.doc.header or "" - \ No newline at end of file diff --git a/website/helpers/transaction.py b/website/helpers/transaction.py deleted file mode 100644 index 8943575c6c..0000000000 --- a/website/helpers/transaction.py +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes -from webnotes.utils import cint, formatdate -import json - -def get_transaction_list(doctype, start): - # find customer id - customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, - "customer") - - if customer: - transactions = webnotes.conn.sql("""select name, creation, currency, grand_total_export - from `tab%s` where customer=%s and docstatus=1 - order by creation desc - limit %s, 20""" % (doctype, "%s", "%s"), (customer, cint(start)), as_dict=True) - for doc in transactions: - doc.items = ", ".join(webnotes.conn.sql_list("""select item_name - from `tab%s Item` where parent=%s limit 5""" % (doctype, "%s"), doc.name)) - doc.creation = formatdate(doc.creation) - return transactions - else: - return [] - -def get_common_args(): - return { - "global_number_format": webnotes.conn.get_default("number_format") or "#,###.##", - "currency": webnotes.conn.get_default("currency"), - "currency_symbols": json.dumps(dict(webnotes.conn.sql("""select name, symbol - from tabCurrency where ifnull(enabled,0)=1"""))) - } - -@webnotes.whitelist() -def get_orders(start=0): - return get_transaction_list("Sales Order", start) - -def order_list_args(): - args = get_common_args() - args.update({ - "title": "My Orders", - "method": "website.helpers.transaction.get_orders", - "icon": "icon-list", - "empty_list_message": "No Orders Yet", - "page": "order", - }) - return args - -@webnotes.whitelist() -def get_invoices(start=0): - return get_transaction_list("Sales Invoice", start) - -def invoice_list_args(): - args = get_common_args() - args.update({ - "title": "Invoices", - "method": "website.helpers.transaction.get_invoices", - "icon": "icon-file-text", - "empty_list_message": "No Invoices Found", - "page": "invoice" - }) - return args - -@webnotes.whitelist() -def get_shipments(start=0): - return get_transaction_list("Delivery Note", start) - -def shipment_list_args(): - args = get_common_args() - args.update({ - "title": "Shipments", - "method": "website.helpers.transaction.get_shipments", - "icon": "icon-truck", - "empty_list_message": "No Shipments Found", - "page": "shipment" - }) - return args - -@webnotes.whitelist() -def get_tickets(start=0): - tickets = webnotes.conn.sql("""select name, subject, status, creation - from `tabSupport Ticket` where raised_by=%s - order by modified desc - limit %s, 20""", (webnotes.session.user, cint(start)), as_dict=True) - for t in tickets: - t.creation = formatdate(t.creation) - - return tickets - -def ticket_list_args(): - return { - "title": "My Tickets", - "method": "website.helpers.transaction.get_tickets", - "icon": "icon-ticket", - "empty_list_message": "No Tickets Raised", - "page": "ticket" - } - -def get_transaction_args(doctype, name): - customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, - "customer") - - bean = webnotes.bean(doctype, name) - if bean.doc.customer != customer: - return { - "doc": {"name": "Not Allowed"} - } - else: - return { - "doc": bean.doc, - "doclist": bean.doclist, - "webnotes": webnotes, - "utils": webnotes.utils - } - -def get_order_args(): - args = get_transaction_args("Sales Order", webnotes.form_dict.name) - args.update({ - "parent_link": "orders", - "parent_title": "My Orders" - }) - return args - -def get_invoice_args(): - args = get_transaction_args("Sales Invoice", webnotes.form_dict.name) - args.update({ - "parent_link": "invoices", - "parent_title": "Invoices" - }) - return args - -def get_shipment_args(): - args = get_transaction_args("Delivery Note", webnotes.form_dict.name) - args.update({ - "parent_link": "shipments", - "parent_title": "Shipments" - }) - return args diff --git a/website/page/__init__.py b/website/page/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/page/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/page/website_home/__init__.py b/website/page/website_home/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/page/website_home/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/page/website_home/website_home.js b/website/page/website_home/website_home.js deleted file mode 100644 index a197f69638..0000000000 --- a/website/page/website_home/website_home.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt" - -wn.module_page["Website"] = [ - { - title: wn._("Web Content"), - icon: "icon-copy", - top: true, - items: [ - { - label: wn._("Web Page"), - description: wn._("Content web page."), - doctype:"Web Page" - }, - { - label: wn._("Blog Post"), - description: wn._("Single Post (article)."), - doctype:"Blog Post" - }, - ] - }, - { - title: wn._("Documents"), - icon: "icon-edit", - items: [ - { - label: wn._("Website Slideshow"), - description: wn._("Embed image slideshows in website pages."), - doctype:"Website Slideshow" - }, - { - label: wn._("Blogger"), - description: wn._("Profile of a blog writer."), - doctype:"Blogger" - }, - { - label: wn._("Blog Category"), - description: wn._("Categorize blog posts."), - doctype:"Blog Category" - }, - { - label: wn._("Blog Settings"), - description: wn._("Write titles and introductions to your blog."), - doctype:"Blog Settings", - route: "Form/Blog Settings" - }, - ] - }, - - { - title: wn._("Website Overall Settings"), - icon: "icon-wrench", - right: true, - items: [ - { - "route":"Form/Website Settings", - "label":wn._("Website Settings"), - "description":wn._("Setup of top navigation bar, footer and logo."), - doctype:"Website Settings" - }, - { - "route":"Form/Style Settings", - "label":wn._("Style Settings"), - "description":wn._("Setup of fonts and background."), - doctype:"Style Settings" - }, - { - "route":"Form/Shopping Cart Settings", - "label":wn._("Shopping Cart Settings"), - "description":wn._("Setup of Shopping Cart."), - doctype:"Shopping Cart Settings" - }, - ] - }, - { - title: wn._("Special Page Settings"), - icon: "icon-wrench", - right: true, - items: [ - { - "route":"Form/About Us Settings", - "label":wn._("About Us Settings"), - "description":wn._("Settings for About Us Page."), - doctype:"About Us Settings" - }, - { - "route":"Form/Contact Us Settings", - "label":wn._("Contact Us Settings"), - "description":wn._("Settings for Contact Us Page."), - doctype:"Contact Us Settings" - }, - ] - }, - { - title: wn._("Advanced Scripting"), - icon: "icon-wrench", - right: true, - items: [ - { - "route":"Form/Website Script", - "label":wn._("Website Script"), - "description":wn._("Javascript to append to the head section of the page."), - doctype:"Website Script" - }, - ] - } -] - -pscript['onload_website-home'] = function(wrapper) { - wn.views.moduleview.make(wrapper, "Website"); -} \ No newline at end of file diff --git a/website/page/website_home/website_home.txt b/website/page/website_home/website_home.txt deleted file mode 100644 index eeede04589..0000000000 --- a/website/page/website_home/website_home.txt +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "creation": "2012-02-21 13:23:51", - "docstatus": 0, - "modified": "2013-07-11 14:45:29", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "doctype": "Page", - "icon": "icon-th", - "module": "Website", - "name": "__common__", - "page_name": "website-home", - "standard": "Yes", - "title": "Website Home" - }, - { - "doctype": "Page", - "name": "website-home" - } -] \ No newline at end of file diff --git a/website/templates/__init__.py b/website/templates/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/website/templates/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/website/templates/css/blog.css b/website/templates/css/blog.css deleted file mode 100644 index 199df1ac77..0000000000 --- a/website/templates/css/blog.css +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/website/templates/css/blog_page.css b/website/templates/css/blog_page.css deleted file mode 100644 index 8f56cd2fec..0000000000 --- a/website/templates/css/blog_page.css +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file diff --git a/website/templates/html/blog_footer.html b/website/templates/html/blog_footer.html deleted file mode 100644 index e71b3eccb1..0000000000 --- a/website/templates/html/blog_footer.html +++ /dev/null @@ -1,13 +0,0 @@ -
-
- {% if categories %} -
Explore posts by categories
- -

- {% endif %} -

Show posts by everyone. Meet the writers of this blog

-
diff --git a/website/templates/html/blog_page.html b/website/templates/html/blog_page.html deleted file mode 100644 index 90f6a79f2b..0000000000 --- a/website/templates/html/blog_page.html +++ /dev/null @@ -1,58 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% block javascript %} - {% include "app/website/templates/js/blog_page.js" %} -{% endblock %} - -{% block css %} - {% include "app/website/templates/css/blog_page.css" %} -{% endblock %} - -{% block content %} -
-

{{ title }}

- - -
- / - {{ updated }}
-
-
- {{ content_html }} -
- - {% if blogger_info %} -
- {% include "app/website/templates/html/blogger.html" %} - {% endif %} -
-

{{ texts.comments }}


-
- - {% if not comment_list %} -
-

{{ texts.first_comment }}

-
- {% endif %} - - {% include 'app/website/templates/html/comment.html' %} -
-
- -
-{% include 'app/website/templates/html/blog_footer.html' %} -{% endblock %} \ No newline at end of file diff --git a/website/templates/html/blog_subscribe.html b/website/templates/html/blog_subscribe.html deleted file mode 100644 index 1238d837f0..0000000000 --- a/website/templates/html/blog_subscribe.html +++ /dev/null @@ -1,9 +0,0 @@ -

Subscribe

-
-

- -

-

- -RSS Feed -

\ No newline at end of file diff --git a/website/templates/html/blogger.html b/website/templates/html/blogger.html deleted file mode 100644 index 90c3571e7b..0000000000 --- a/website/templates/html/blogger.html +++ /dev/null @@ -1,13 +0,0 @@ -
-
-
- -
-
-
-

{{ blogger_info.full_name }}

-

{{ blogger_info.bio }}

-

- {{ texts.all_posts_by }} {{ blogger_info.full_name }}

-
-
\ No newline at end of file diff --git a/website/templates/html/comment.html b/website/templates/html/comment.html deleted file mode 100644 index 27baaad54d..0000000000 --- a/website/templates/html/comment.html +++ /dev/null @@ -1,17 +0,0 @@ -{# - this template generates comment rows for a blog - it is to be included in the blog/blog.html template -#} - -
- {% for comment in comment_list %} -
-
- {{ comment.comment_by_fullname }} / - {{ comment.comment_date }}: -
-

{{ comment.comment }}

-
-
- {% endfor %} -
\ No newline at end of file diff --git a/website/templates/html/footer.html b/website/templates/html/footer.html deleted file mode 100644 index e391794dd1..0000000000 --- a/website/templates/html/footer.html +++ /dev/null @@ -1,79 +0,0 @@ -
- -
- diff --git a/website/templates/html/navbar.html b/website/templates/html/navbar.html deleted file mode 100644 index 9e827c4ebe..0000000000 --- a/website/templates/html/navbar.html +++ /dev/null @@ -1,39 +0,0 @@ - - diff --git a/website/templates/html/outer.html b/website/templates/html/outer.html deleted file mode 100644 index 3ecb0573e6..0000000000 --- a/website/templates/html/outer.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "lib/templates/base.html" %} - -{% block body %} - {% include "app/website/templates/html/navbar.html" %} -
-
- {% if shopping_cart_enabled -%} - - | - {%- endif %} - Login -
-
- | - {% if shopping_cart_enabled -%} - - | - {%- endif %} - -
-
- {% if banner_html %}{% endif %} -
-
- {%- block content -%} - {%- endblock -%} -
-
-
- {% include "app/website/templates/html/footer.html" %} - -{% endblock %} \ No newline at end of file diff --git a/website/templates/html/page.html b/website/templates/html/page.html deleted file mode 100644 index c9fbec449a..0000000000 --- a/website/templates/html/page.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "app/website/templates/html/outer.html" %} - -{% block title -%}{{ title }}{%- endblock %} - -{% block header -%} - {{ super() }} - - {% block css -%} - {% if insert_style -%} - - {%- endif %} - {%- endblock %} -{%- endblock -%} - -{%- block content -%} - {{ content }} -{%- endblock %} \ No newline at end of file diff --git a/website/templates/html/slideshow.html b/website/templates/html/slideshow.html deleted file mode 100644 index b148cb1ce8..0000000000 --- a/website/templates/html/slideshow.html +++ /dev/null @@ -1,39 +0,0 @@ -{% if slideshow %} -{{ slideshow_header }} - - - - - -{% endif %} diff --git a/website/templates/html/web_page.html b/website/templates/html/web_page.html deleted file mode 100644 index c857263816..0000000000 --- a/website/templates/html/web_page.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% block javascript %} - {% if insert_code %} - {{ javascript }} - {% endif %} -{% endblock %} - -{% block content %} -
- {% include "app/website/templates/html/slideshow.html" %} - {{ main_section }} -
-{% endblock %} \ No newline at end of file diff --git a/website/templates/js/blog.js b/website/templates/js/blog.js deleted file mode 100644 index 8134b635d1..0000000000 --- a/website/templates/js/blog.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -// js inside blog page - -$(document).ready(function() { - // make list of blogs - blog.get_list(); - - $("#next-page").click(function() { - blog.get_list(); - }) - - if(get_url_arg("by_name")) { - $("#blot-subtitle").html("Posts by " + get_url_arg("by_name")).toggle(true); - } - - if(get_url_arg("category")) { - $("#blot-subtitle").html("Posts filed under " + get_url_arg("category")).toggle(true); - } - -}); - -var blog = { - start: 0, - get_list: function() { - $.ajax({ - method: "GET", - url: "server.py", - data: { - cmd: "website.helpers.blog.get_blog_list", - start: blog.start, - by: get_url_arg("by"), - category: get_url_arg("category") - }, - dataType: "json", - success: function(data) { - $(".progress").toggle(false); - if(data.exc) console.log(data.exc); - blog.render(data.message); - } - }); - }, - render: function(data) { - var $wrap = $("#blog-list"); - $.each(data, function(i, b) { - // comments - if(!b.comments) { - b.comment_text = 'No comments yet.' - } else if (b.comments===1) { - b.comment_text = '1 comment.' - } else { - b.comment_text = b.comments + ' comments.' - } - - b.page_name = encodeURIComponent(b.page_name); - - $(repl('
\ -
\ -
\ - \ -
\ -
\ -
\ -

%(title)s

\ -

%(content)s

\ -

\ - \ - %(full_name)s wrote this on %(published)s / %(comment_text)s

\ -
\ -

', b)).appendTo($wrap); - }); - blog.start += (data.length || 0); - if(!data.length || data.length < 20) { - if(blog.start) { - $("#next-page").toggle(false) - .parent().append("
Nothing more to show.
"); - } else { - $("#next-page").toggle(false) - .parent().append("
No blogs written yet.
"); - } - } else { - $("#next-page").toggle(true); - } - } -} \ No newline at end of file diff --git a/website/templates/js/blog_page.js b/website/templates/js/blog_page.js deleted file mode 100644 index ee56d9087b..0000000000 --- a/website/templates/js/blog_page.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -// js inside blog page - -$(document).ready(function() { - var n_comments = $(".comment-row").length; - - if(n_comments) { - $(".no_comment").toggle(false); - } - if(n_comments > 50) { - $(".add-comment").toggle(false) - .parent().append("
Comments are closed.
") - } - $(".add-comment").click(function() { - $("#comment-form").toggle(); - $("#comment-form input, #comment-form, textarea").val(""); - }) - $("#submit-comment").click(function() { - var args = { - comment_by_fullname: $("[name='comment_by_fullname']").val(), - comment_by: $("[name='comment_by']").val(), - comment: $("[name='comment']").val(), - cmd: "website.helpers.blog.add_comment", - comment_doctype: "Blog Post", - comment_docname: "{{ name }}", - page_name: "{{ page_name }}", - _type: "POST" - } - - $("#comment-form .alert").toggle(false); - - if(!args.comment_by_fullname || !args.comment_by || !args.comment) { - $("#comment-form .alert") - .html("All fields are necessary to submit the comment.") - .toggle(true); - return false; - } - - - $.ajax({ - type: "POST", - url: "server.py", - data: args, - dataType: "json", - success: function(data) { - if(data.exc) { - $("#comment-form .alert") - .html(data.exc) - .toggle(true) - } else { - $(data.message).appendTo(".blog-comments"); - $(".no_comment").toggle(false); - $(".add-comment").toggle(false); - $("#comment-form") - .replaceWith("
Thank you for your comment!
") - } - } - }) - - return false; - }) -}) \ No newline at end of file diff --git a/website/templates/js/contact.js b/website/templates/js/contact.js deleted file mode 100644 index dece898755..0000000000 --- a/website/templates/js/contact.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt - -$(document).ready(function() { - - $('.btn-send').click(function() { - var email = $('[name="email"]').val(); - var message = $('[name="message"]').val(); - - if(!(email && message)) { - msgprint("Please enter both your email and message so that we \ - can get back to you. Thanks!"); - return false; - } - - if(!valid_email(email)) { - msgprint("You seem to have written your name instead of your email. \ - Please enter a valid email address so that we can get back."); - $('[name="email"]').focus(); - return false; - } - - $("#contact-alert").toggle(false); - erpnext.send_message({ - subject: $('[name="subject"]').val(), - sender: email, - message: message, - callback: function(r) { - if(r.status==="okay") { - msgprint(r.message || "Thank you for your message.") - } else { - msgprint("There were errors"); - console.log(r.exc); - } - $(':input').val(''); - } - }); - return false; - }); - -}); - -var msgprint = function(txt) { - if(txt) $("#contact-alert").html(txt).toggle(true); -} diff --git a/website/templates/pages/about.html b/website/templates/pages/about.html deleted file mode 100644 index 277f790cf7..0000000000 --- a/website/templates/pages/about.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% set title="About Us" %} - -{% block content %} -
- {{ obj.doc.company_introduction or "

About Us

Some Introduction about your company that you would like your website visitor to know. More people than you think will read your About page. People always like to know who the are doing business with. Be authentic and avoid using jargon like 'value added services' etc. Be sure to update your company history and list of key team members in Website > About Us Settings

" }} - {% if obj.doclist.get({"doctype":"Company History"}) %} -

{{ obj.doc.company_history_heading or "Company History" }}

- {% for d in obj.doclist.get({"doctype":"Company History"}) %} -
-

{{ d.year }}

-

{{ d.highlight }}

-
- {% endfor %} - {% endif %} - {% if obj.doclist.get({"doctype":"About Us Team Member"}) %} -

{{ obj.doc.team_members_heading or "Team Members" }}

- {% for d in obj.doclist.get({"doctype":"About Us Team Member"}) %} -
- -
- -
-
-

{{ d.full_name }}

-

{{ d.bio }}

-
-
- {% endfor %} - {% endif %} - {{ obj.doc.footer or "" }} -
-{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/account.html b/website/templates/pages/account.html deleted file mode 100644 index 2a5acf67e3..0000000000 --- a/website/templates/pages/account.html +++ /dev/null @@ -1,27 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% set title="My Account" %} - -{% block content %} - -{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/blog.html b/website/templates/pages/blog.html deleted file mode 100644 index 9bd1abf178..0000000000 --- a/website/templates/pages/blog.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% block javascript %} - {% include "app/website/templates/js/blog.js" %} -{% endblock %} - -{% block css %} - {% include "app/website/templates/css/blog.css" %} -{% endblock %} - -{% set title="Blog" %} - -{% block content %} -
-

{{ blog_title }}

- {% if blog_introduction %} -

{{ blog_introduction }}

- {% endif %} - -
-
-
-
-
- -
-
- -
-
-{% include 'app/website/templates/html/blog_footer.html' %} -{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/contact.html b/website/templates/pages/contact.html deleted file mode 100644 index 86be163f8e..0000000000 --- a/website/templates/pages/contact.html +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% block javascript %} - {% include "app/website/templates/js/contact.js" %} -{% endblock %} - -{% set title="Contact Us" %} - -{% block content %} -
-

{{ obj.doc.heading or "Contact Us"}}

-
-
- -

- -

-

- -

-

- -

-

- -

-
- {% if obj.doc.address %} -
-

{{ obj.address.address_title }}

- {% if obj.address.address_line1 %} - {{ obj.address.address_line1 }}
- {% endif %} - {% if obj.address.address_line2 %} - {{ obj.address.address_line2 }}
- {% endif %} - {% if obj.address.city %} - {{ obj.address.city }}
- {% endif %} - {% if obj.address.state %} - {{ obj.address.state }}
- {% endif %} - {% if obj.address.pincode %} - {{ obj.address.pincode }}
- {% endif %} - {% if obj.address.country %} - {{ obj.address.country }}
- {% endif %} -
- {% endif %} -
- {{ obj.doc.introduction }} -
-{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/index.html b/website/templates/pages/index.html deleted file mode 100644 index 761da0c8da..0000000000 --- a/website/templates/pages/index.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "app/website/templates/html/web_page.html" %} \ No newline at end of file diff --git a/website/templates/pages/invoice.html b/website/templates/pages/invoice.html deleted file mode 100644 index 26ddea43d2..0000000000 --- a/website/templates/pages/invoice.html +++ /dev/null @@ -1,88 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% set title=doc.name %} - -{% block content %} -
- -

{{ doc.name }}

-
- {%- if doc.status -%} -
-
-
-
{{ doc.status }}
-
-
- {{ utils.formatdate(doc.transaction_date) }} -
-
-
-
-
- - - - - - - - - - - - {%- for row in doclist.get({"doctype":"Sales Order Item"}) %} - - - - - - - - - - {% endfor -%} - -
SrItem NameDescriptionQtyUoMBasic RateAmount
{{ row.idx }}{{ row.item_name }}{{ row.description }}{{ row.qty }}{{ row.stock_uom }}{{ utils.fmt_money(row.export_rate, currency=doc.currency) }}{{ utils.fmt_money(row.export_amount, currency=doc.currency) }}
-
-
-
-
-
- - - - - - - {%- for charge in doclist.get({"doctype":"Sales Taxes and Charges"}) -%} - {%- if not charge.included_in_print_rate -%} - - - - - {%- endif -%} - {%- endfor -%} - - - - - - - - - -
Net Total{{ - utils.fmt_money(doc.net_total/doc.conversion_rate, currency=doc.currency) - }}
{{ charge.description }}{{ utils.fmt_money(charge.tax_amount / doc.conversion_rate, currency=doc.currency) }}
Grand Total{{ utils.fmt_money(doc.grand_total_export, currency=doc.currency) }}
Rounded Total{{ utils.fmt_money(doc.rounded_total_export, currency=doc.currency) }}
-
-
-
- {%- endif -%} -
-{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/messages.html b/website/templates/pages/messages.html deleted file mode 100644 index e1ea8d0fe3..0000000000 --- a/website/templates/pages/messages.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "app/website/templates/html/transactions.html" %} - -{% block javascript -%} -{{ super() }} - -var render = function(doc) { - doc.sender = doc.sender ? doc.sender : "To "; - doc.recipients = doc.recipients ? (" to " + doc.recipients) : ""; - doc.content = remove_script_and_style(doc.content); - - if(!is_html(doc.content)) { - doc.content = doc.content.replace("\n", "
"); - } - - $(repl('\ -
%(subject)s
\ -
\ -
%(sender)s%(recipients)s
\ -
%(creation)s
\ -
\ - \ -
', doc)) - .appendTo($list) - .on("click", function() { - $(this).find(".msg-content").toggle(); - }); - - -} - -{%- endblock %} \ No newline at end of file diff --git a/website/templates/pages/sales_transactions.html b/website/templates/pages/sales_transactions.html deleted file mode 100644 index 7215339c0d..0000000000 --- a/website/templates/pages/sales_transactions.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "app/website/templates/html/transactions.html" %} - -{% block javascript -%} -global_number_format = "{{ global_number_format }}"; -currency = "{{ currency }}"; -wn.currency_symbols = {{ currency_symbols }}; - -{{ super() }} - -var render = function(doc) { - doc.grand_total_export = format_currency(doc.grand_total_export, doc.currency); - - $(repl('\ -
\ -
\ -
%(name)s
\ -
%(items)s...
\ -
\ -
%(grand_total_export)s
\ -
%(creation)s
\ -
\ -
', doc)).appendTo($list); -}; - -{%- endblock %} \ No newline at end of file diff --git a/website/templates/pages/ticket.html b/website/templates/pages/ticket.html deleted file mode 100644 index 6622ed1589..0000000000 --- a/website/templates/pages/ticket.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% set title=doc.name %} - -{% set status_label = { - "Open": "label-success", - "To Reply": "label-danger", - "Closed": "label-default" -} %} - -{% block content %} -
- -

{{ doc.name }}

- {% if doc.name == "Not Allowed" -%} - - {% else %} -
- {%- if doc.status -%} - {% if doc.status == "Waiting for Customer" -%} - {% set status = "To Reply" %} - {% else %} - {% set status = doc.status %} - {%- endif -%} -
-
- {{ status }} -
-
-
{{ doc.subject }}
-
-
- {{ utils.formatdate(doc.creation) }} -
-
-
-

Messages

- {%- if doclist.get({"doctype":"Communication"}) -%} -
- - - {%- for comm in doclist.get({"doctype":"Communication"}) %} - - - - {% endfor -%} - -
-
- {{ comm.sender }} on {{ utils.formatdate(doc.modified) }}
-
-

{{ webnotes.utils.is_html(comm.content) and comm.content or - comm.content.replace("\n", "
")}}

-
-
- {%- else -%} -
No messages
- {%- endif -%} - {%- endif -%} - {% endif -%} -
-{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/tickets.html b/website/templates/pages/tickets.html deleted file mode 100644 index 166dbcd4d4..0000000000 --- a/website/templates/pages/tickets.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "app/website/templates/html/transactions.html" %} - -{% block javascript -%} -{{ super() }} - -var status_label = { - "Open": "label-success", - "Waiting for Customer": "label-danger", - "Closed": "label-default" -} - -var render = function(doc) { - doc.status = doc.status.trim(); - doc.label_class = status_label[doc.status] || "label-default"; - if(doc.status==="Waiting for Customer") doc.status = "To Reply"; - - $(repl('\ -
\ -
\ - %(status)s
\ -
\ -
%(name)s
\ -
%(subject)s
\ -
\ -
\ - %(creation)s\ -
\ -
\ -
', doc)).appendTo($list); -}; -{%- endblock %} \ No newline at end of file diff --git a/website/templates/pages/transaction_list.html b/website/templates/pages/transaction_list.html deleted file mode 100644 index 967a6a8324..0000000000 --- a/website/templates/pages/transaction_list.html +++ /dev/null @@ -1,77 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% block content %} -
- -
-
-
-
-
-
-
-
-{% endblock %} - -{% block javascript %} -global_number_format = "{{ global_number_format }}"; -currency = "{{ currency }}"; -wn.currency_symbols = {{ currency_symbols }}; - -$(document).ready(function() { - var start = 0; - var $list = $(".transaction-list"); - - var $show_more = $(".btn-show-more").on("click", function() { - get_transactions(this); - }); - - var get_transactions = function(btn) { - wn.call({ - method: "{{ method }}", - args: { start: start }, - btn: btn, - callback: function(r) { - $list.find(".progress").remove(); - $show_more.toggle(!(r.message && r.message.length===20)); - - if(!(r.message && r.message.length)) { - console.log("empty"); - if(!$list.html().trim()) { - $list.html("
\ - {{ empty_list_message }}
"); - } - return; - } - - start += r.message.length; - - $.each(r.message, function(i, doc) { - render(doc); - }); - } - }) - }; - - var render = function(doc) { - doc.grand_total_export = format_currency(doc.grand_total_export, doc.currency); - - var $row = $(repl('\ -
\ -
\ -
%(name)s
\ -
%(items)s...
\ -
\ -
%(grand_total_export)s
\ -
%(creation)s
\ -
\ -
', doc)).appendTo($list); - }; - - get_transactions(); -}); -{% endblock %} \ No newline at end of file diff --git a/website/templates/pages/writers.html b/website/templates/pages/writers.html deleted file mode 100644 index 5b254b0407..0000000000 --- a/website/templates/pages/writers.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "app/website/templates/html/page.html" %} - -{% set title="Blog Writers" %} - -{% block content %} -
-

Blog Writers

- {% if writers_introduction %} -

{{ writers_introduction }}

- {% endif %} -
- {% for blogger_info in bloggers %} - {% include "app/website/templates/html/blogger.html" %} - {% endfor %} -
-{% include 'app/website/templates/html/blog_footer.html' %} -{% endblock %} \ No newline at end of file