diff --git a/frappe/config/website.py b/frappe/config/website.py index ad2fba13b1..c9de0a4a9a 100644 --- a/frappe/config/website.py +++ b/frappe/config/website.py @@ -26,16 +26,6 @@ def get_data(): "name": "Blogger", "description": _("User ID of a blog writer."), }, - { - "type": "doctype", - "name": "Website Group", - "description": _("Web Site Forum Page."), - }, - { - "type": "doctype", - "name": "Post", - "description": _("List of Web Site Forum's Posts."), - }, { "type": "doctype", "name": "Website Slideshow", diff --git a/frappe/hooks.py b/frappe/hooks.py index 4d8323cd90..b8de9640f3 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -25,15 +25,13 @@ web_include_css = [ "style_settings.css" ] -website_clear_cache = "frappe.website.doctype.website_group.website_group.clear_cache" - write_file_keys = ["file_url", "file_name"] notification_config = "frappe.core.notifications.get_notification_config" before_tests = "frappe.utils.install.before_tests" -website_generators = ["Web Page", "Blog Post", "Website Group", "Blog Category", "Web Form"] +website_generators = ["Web Page", "Blog Post", "Blog Category", "Web Form"] # login @@ -76,9 +74,6 @@ doc_events = { "frappe.email.doctype.email_alert.email_alert.trigger_email_alerts" ], "on_trash": "frappe.core.doctype.notification_count.notification_count.clear_doctype_notifications" - }, - "Website Route Permission": { - "on_update": "frappe.website.doctype.website_group.website_group.clear_cache_on_doc_event" } } @@ -93,8 +88,5 @@ scheduler_events = { "frappe.desk.doctype.event.event.send_event_digest", "frappe.sessions.clear_expired_sessions", "frappe.email.doctype.email_alert.email_alert.trigger_daily_alerts", - ], - "hourly": [ - "frappe.website.doctype.website_group.website_group.clear_event_cache" ] } diff --git a/frappe/patches.txt b/frappe/patches.txt index a5a843ec8b..226747cfef 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -57,3 +57,4 @@ frappe.patches.v4_2.refactor_website_routing frappe.patches.v4_2.set_assign_in_doc frappe.patches.v4_3.remove_allow_on_submit_customization frappe.patches.v5_0.communication_parent +frappe.patches.v5_0.clear_website_group diff --git a/frappe/patches/v4_0/__init__.py b/frappe/patches/v4_0/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/patches/v4_0/add_delete_permission.py b/frappe/patches/v4_0/add_delete_permission.py deleted file mode 100644 index 7811217d97..0000000000 --- a/frappe/patches/v4_0/add_delete_permission.py +++ /dev/null @@ -1,12 +0,0 @@ -import frappe - -def execute(): - frappe.reload_doc("core", "doctype", "docperm") - - # delete same as cancel (map old permissions) - frappe.db.sql("""update tabDocPerm set `delete`=ifnull(`cancel`,0)""") - - # can't cancel if can't submit - frappe.db.sql("""update tabDocPerm set `cancel`=0 where ifnull(`submit`,0)=0""") - - frappe.clear_cache() \ No newline at end of file diff --git a/frappe/patches/v4_0/change_varchar_length.py b/frappe/patches/v4_0/change_varchar_length.py deleted file mode 100644 index d9da8221e9..0000000000 --- a/frappe/patches/v4_0/change_varchar_length.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - for dt in frappe.db.sql_list("""select name from `tabDocType` where ifnull(issingle, 0)=0"""): - desc = dict((d["Field"], d) for d in frappe.db.sql("desc `tab{}`".format(dt), as_dict=True)) - alter_table = [] - - if desc["name"]["Type"] != "varchar(255)": - alter_table.append("change `name` `name` varchar(255) not null") - - for fieldname in ("modified_by", "owner", "parent", "parentfield", "parenttype"): - if desc[fieldname]["Type"] != "varchar(255)": - alter_table.append("change `{fieldname}` `{fieldname}` varchar(255)".format(fieldname=fieldname)) - - if alter_table: - alter_table_query = "alter table `tab{doctype}` {alter_table}".format(doctype=dt, alter_table=",\n".join(alter_table)) - # print alter_table_query - frappe.db.sql_ddl(alter_table_query) - diff --git a/frappe/patches/v4_0/create_custom_field_for_owner_match.py b/frappe/patches/v4_0/create_custom_field_for_owner_match.py deleted file mode 100644 index fe2fcbfc11..0000000000 --- a/frappe/patches/v4_0/create_custom_field_for_owner_match.py +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe.custom.doctype.custom_field.custom_field import create_custom_field - -def execute(): - if "match" in frappe.db.get_table_columns("DocPerm"): - create_custom_field_for_owner_match() - -def create_custom_field_for_owner_match(): - frappe.db.sql("""update `tabDocPerm` set apply_user_permissions=1 where `match`='owner'""") - - for dt in frappe.db.sql_list("""select distinct parent from `tabDocPerm` - where `match`='owner' and permlevel=0 and parent != 'User'"""): - - # a link field pointing to User already exists - if (frappe.db.get_value("DocField", {"parent": dt, "fieldtype": "Link", "options": "User", "default": "__user"}) - or frappe.db.get_value("Custom Field", {"dt": dt, "fieldtype": "Link", "options": "User", "default": "__user"})): - print "User link field already exists for", dt - continue - - fieldname = "{}_owner".format(frappe.scrub(dt)) - - create_custom_field(dt, frappe._dict({ - "permlevel": 0, - "label": "{} Owner".format(dt), - "fieldname": fieldname, - "fieldtype": "Link", - "options": "User", - "default": "__user" - })) - - frappe.db.sql("""update `tab{doctype}` set `{fieldname}`=owner""".format(doctype=dt, - fieldname=fieldname)) - - # commit is required so that we don't lose these changes because of an error in next loop's ddl - frappe.db.commit() diff --git a/frappe/patches/v4_0/deprecate_control_panel.py b/frappe/patches/v4_0/deprecate_control_panel.py deleted file mode 100644 index 7bccf4bf2b..0000000000 --- a/frappe/patches/v4_0/deprecate_control_panel.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - frappe.db.sql("update `tabDefaultValue` set parenttype='__default' where parenttype='Control Panel'") - frappe.db.sql("update `tabDefaultValue` set parent='__default' where parent='Control Panel'") - frappe.clear_cache() diff --git a/frappe/patches/v4_0/deprecate_link_selects.py b/frappe/patches/v4_0/deprecate_link_selects.py deleted file mode 100644 index 317333b019..0000000000 --- a/frappe/patches/v4_0/deprecate_link_selects.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - for name in frappe.db.sql_list("""select name from `tabCustom Field` - where fieldtype="Select" and options like "link:%" """): - custom_field = frappe.get_doc("Custom Field", name) - custom_field.fieldtype = "Link" - custom_field.options = custom_field.options[5:] - custom_field.save() diff --git a/frappe/patches/v4_0/enable_scheduler_in_system_settings.py b/frappe/patches/v4_0/enable_scheduler_in_system_settings.py deleted file mode 100644 index bc2f167ece..0000000000 --- a/frappe/patches/v4_0/enable_scheduler_in_system_settings.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe.utils.scheduler import disable_scheduler, enable_scheduler -from frappe.utils import cint - -def execute(): - frappe.reload_doc("core", "doctype", "system_settings") - if cint(frappe.db.get_global("disable_scheduler")): - disable_scheduler() - else: - enable_scheduler() diff --git a/frappe/patches/v4_0/file_manager_hooks.py b/frappe/patches/v4_0/file_manager_hooks.py deleted file mode 100644 index ef043d4d31..0000000000 --- a/frappe/patches/v4_0/file_manager_hooks.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals - -import frappe -import os -from frappe.utils import get_files_path -from frappe.utils.file_manager import get_content_hash, get_file - - -def execute(): - frappe.reload_doc('core', 'doctype', 'file_data') - for name, file_name, file_url in frappe.db.sql( - """select name, file_name, file_url from `tabFile Data` - where file_name is not null"""): - b = frappe.get_doc('File Data', name) - old_file_name = b.file_name - b.file_name = os.path.basename(old_file_name) - if old_file_name.startswith('files/') or old_file_name.startswith('/files/'): - b.file_url = os.path.normpath('/' + old_file_name) - else: - b.file_url = os.path.normpath('/files/' + old_file_name) - try: - _file_name, content = get_file(name) - b.content_hash = get_content_hash(content) - except IOError: - print 'Warning: Error processing ', name - _file_name = old_file_name - b.content_hash = None - - try: - b.save() - except frappe.DuplicateEntryError: - frappe.delete_doc(b.doctype, b.name) - diff --git a/frappe/patches/v4_0/fix_attach_field_file_url.py b/frappe/patches/v4_0/fix_attach_field_file_url.py deleted file mode 100644 index 3c5a6aa03c..0000000000 --- a/frappe/patches/v4_0/fix_attach_field_file_url.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - attach_fields = (frappe.db.sql("""select parent, fieldname from `tabDocField` where fieldtype='Attach'""") + - frappe.db.sql("""select dt, fieldname from `tabCustom Field` where fieldtype='Attach'""")) - - for doctype, fieldname in attach_fields: - frappe.db.sql("""update `tab{doctype}` set `{fieldname}`=concat("/", `{fieldname}`) - where `{fieldname}` like 'files/%'""".format(doctype=doctype, fieldname=fieldname)) diff --git a/frappe/patches/v4_0/private_backups.py b/frappe/patches/v4_0/private_backups.py deleted file mode 100644 index f82209c31e..0000000000 --- a/frappe/patches/v4_0/private_backups.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe.installer import make_site_dirs - -def execute(): - make_site_dirs() - if frappe.local.conf.backup_path and frappe.local.conf.backup_path.startswith("public"): - raise Exception, "Backups path in conf set to public directory" diff --git a/frappe/patches/v4_0/remove_index_sitemap.py b/frappe/patches/v4_0/remove_index_sitemap.py deleted file mode 100644 index 00d37eaf2e..0000000000 --- a/frappe/patches/v4_0/remove_index_sitemap.py +++ /dev/null @@ -1,4 +0,0 @@ -import frappe - -def execute(): - pass diff --git a/frappe/patches/v4_0/remove_old_parent.py b/frappe/patches/v4_0/remove_old_parent.py deleted file mode 100644 index 588cda9121..0000000000 --- a/frappe/patches/v4_0/remove_old_parent.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - for doctype in frappe.db.sql_list("""select name from `tabDocType` where istable=1"""): - frappe.db.sql("""delete from `tab{0}` where parent like "old_par%:%" """.format(doctype)) - frappe.db.sql("""delete from `tabDocField` where parent="0" """) diff --git a/frappe/patches/v4_0/remove_user_owner_custom_field.py b/frappe/patches/v4_0/remove_user_owner_custom_field.py deleted file mode 100644 index 4f3e478f98..0000000000 --- a/frappe/patches/v4_0/remove_user_owner_custom_field.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - user_owner = frappe.db.get_value("Custom Field", {"fieldname": "user_owner"}) - if user_owner: - frappe.delete_doc("Custom Field", user_owner) diff --git a/frappe/patches/v4_0/rename_profile_to_user.py b/frappe/patches/v4_0/rename_profile_to_user.py deleted file mode 100644 index bcb910b80a..0000000000 --- a/frappe/patches/v4_0/rename_profile_to_user.py +++ /dev/null @@ -1,18 +0,0 @@ -import frappe - -from frappe.model import rename_field -from frappe.model.meta import get_table_columns - -def execute(): - tables = frappe.db.sql_list("show tables") - if "tabUser" not in tables: - frappe.rename_doc("DocType", "Profile", "User", force=True) - - if frappe.db.exists("DocType", "Website Route Permission"): - frappe.reload_doc("website", "doctype", "website_route_permission") - if "profile" in get_table_columns("Website Route Permission"): - rename_field("Website Route Permission", "profile", "user") - frappe.reload_doc("website", "doctype", "blogger") - - if "profile" in get_table_columns("Blogger"): - rename_field("Blogger", "profile", "user") diff --git a/frappe/patches/v4_0/rename_sitemap_to_route.py b/frappe/patches/v4_0/rename_sitemap_to_route.py deleted file mode 100644 index 991edf1f7c..0000000000 --- a/frappe/patches/v4_0/rename_sitemap_to_route.py +++ /dev/null @@ -1,31 +0,0 @@ -import frappe - -from frappe.model import rename_field - -def execute(): - tables = frappe.db.sql_list("show tables") - for doctype in ("Website Sitemap", "Website Sitemap Config"): - if "tab{}".format(doctype) in tables: - frappe.delete_doc("DocType", doctype, force=1) - frappe.db.sql("drop table `tab{}`".format(doctype)) - - if "tabWebsite Route Permission" not in tables: - frappe.rename_doc("DocType", "Website Sitemap Permission", "Website Route Permission", force=True) - - for d in ("Blog Category", "Blog Post", "Web Page", "Website Group"): - frappe.reload_doc("website", "doctype", frappe.scrub(d)) - rename_field_if_exists(d, "parent_website_sitemap", "parent_website_route") - - frappe.reload_doc("website", "doctype", "website_route_permission") - - rename_field_if_exists("Website Route Permission", "website_sitemap", "website_route") - - for d in ("blog_category", "blog_post", "web_page", "website_group", "post", "user_vote"): - frappe.reload_doc("website", "doctype", d) - -def rename_field_if_exists(doctype, old_fieldname, new_fieldname): - try: - rename_field(doctype, old_fieldname, new_fieldname) - except Exception, e: - if e.args[0] != 1054: - raise diff --git a/frappe/patches/v4_0/replace_deprecated_timezones.py b/frappe/patches/v4_0/replace_deprecated_timezones.py deleted file mode 100644 index 4574dc19f8..0000000000 --- a/frappe/patches/v4_0/replace_deprecated_timezones.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe.utils.momentjs import data as momentjs_data - -def execute(): - frappe.reload_doc("core", "doctype", "user") - - ss = frappe.get_doc("System Settings", "System Settings") - if ss.time_zone in momentjs_data.get("links"): - ss.time_zone = momentjs_data["links"][ss.time_zone] - ss.ignore_mandatory = True - ss.save() - - for user, time_zone in frappe.db.sql("select name, time_zone from `tabUser` where ifnull(time_zone, '')!=''"): - if time_zone in momentjs_data.get("links"): - user = frappe.get_doc("User", user) - user.time_zone = momentjs_data["links"][user.time_zone] - user.save() diff --git a/frappe/patches/v4_0/set_module_in_report.py b/frappe/patches/v4_0/set_module_in_report.py deleted file mode 100644 index 107d868eba..0000000000 --- a/frappe/patches/v4_0/set_module_in_report.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - frappe.reload_doc("core", "doctype", "report") - frappe.db.sql("""update `tabReport` r set r.module=(select d.module from `tabDocType` d - where d.name=r.ref_doctype) where ifnull(r.module, '')=''""") \ No newline at end of file diff --git a/frappe/patches/v4_0/set_todo_checked_as_closed.py b/frappe/patches/v4_0/set_todo_checked_as_closed.py deleted file mode 100644 index cc4b87a0bc..0000000000 --- a/frappe/patches/v4_0/set_todo_checked_as_closed.py +++ /dev/null @@ -1,8 +0,0 @@ -import frappe - -def execute(): - frappe.reload_doc("core", "doctype", "todo") - try: - frappe.db.sql("""update tabToDo set status = if(ifnull(checked,0)=0, 'Open', 'Closed')""") - except: - pass diff --git a/frappe/patches/v4_0/set_user_gravatar.py b/frappe/patches/v4_0/set_user_gravatar.py deleted file mode 100644 index 78bd72f4dc..0000000000 --- a/frappe/patches/v4_0/set_user_gravatar.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - for name in frappe.db.sql_list("select name from `tabUser` where ifnull(user_image, '')=''"): - user = frappe.get_doc("User", name) - user.update_gravatar() - user.db_set("user_image", user.user_image) diff --git a/frappe/patches/v4_0/set_user_permissions.py b/frappe/patches/v4_0/set_user_permissions.py deleted file mode 100644 index b25f68c09c..0000000000 --- a/frappe/patches/v4_0/set_user_permissions.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -import frappe.permissions - -def execute(): - frappe.reload_doc("core", "doctype", "docperm") - table_columns = frappe.db.get_table_columns("DocPerm") - - if "restricted" in table_columns: - frappe.db.sql("""update `tabDocPerm` set apply_user_permissions=1 where ifnull(apply_user_permissions, 0)=0 - and restricted=1""") - - if "match" in table_columns: - frappe.db.sql("""update `tabDocPerm` set apply_user_permissions=1 - where ifnull(apply_user_permissions, 0)=0 and ifnull(`match`, '')!=''""") - - # change Restriction to User Permission in tabDefaultValue - frappe.db.sql("""update `tabDefaultValue` set parenttype='User Permission' where parenttype='Restriction'""") - - frappe.clear_cache() - diff --git a/frappe/patches/v4_0/set_website_route_idx.py b/frappe/patches/v4_0/set_website_route_idx.py deleted file mode 100644 index 82f64756a4..0000000000 --- a/frappe/patches/v4_0/set_website_route_idx.py +++ /dev/null @@ -1,24 +0,0 @@ -import frappe - -def execute(): - pass - # from frappe.website.doctype.website_template.website_template import \ - # get_pages_and_generators, get_template_controller - # - # frappe.reload_doc("website", "doctype", "website_template") - # frappe.reload_doc("website", "doctype", "website_route") - # - # for app in frappe.get_installed_apps(): - # pages, generators = get_pages_and_generators(app) - # for g in generators: - # doctype = frappe.get_attr(get_template_controller(app, g["path"], g["fname"]) + ".doctype") - # module = frappe.db.get_value("DocType", doctype, "module") - # frappe.reload_doc(frappe.scrub(module), "doctype", frappe.scrub(doctype)) - # - # frappe.db.sql("""update `tabBlog Category` set `title`=`name` where ifnull(`title`, '')=''""") - # frappe.db.sql("""update `tabWebsite Route` set idx=null""") - # for doctype in ["Blog Category", "Blog Post", "Web Page", "Website Group"]: - # frappe.db.sql("""update `tab{}` set idx=null""".format(doctype)) - # - # from frappe.website.doctype.website_template.website_template import rebuild_website_template - # rebuild_website_template() diff --git a/frappe/patches/v4_0/update_custom_field_insert_after.py b/frappe/patches/v4_0/update_custom_field_insert_after.py deleted file mode 100644 index 0e820cd0e3..0000000000 --- a/frappe/patches/v4_0/update_custom_field_insert_after.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - for d in frappe.db.sql("""select name, dt, insert_after from `tabCustom Field` - where docstatus < 2""", as_dict=1): - dt_meta = frappe.get_meta(d.dt) - if not dt_meta.get_field(d.insert_after): - cf = frappe.get_doc("Custom Field", d.name) - df = dt_meta.get("fields", {"label": d.insert_after}) - if df: - cf.insert_after = df[0].fieldname - else: - cf.insert_after = None - cf.save() diff --git a/frappe/patches/v4_0/update_datetime.py b/frappe/patches/v4_0/update_datetime.py deleted file mode 100644 index 672dd1940b..0000000000 --- a/frappe/patches/v4_0/update_datetime.py +++ /dev/null @@ -1,11 +0,0 @@ -import frappe - -def execute(): - for table in frappe.db.sql_list("show tables"): - for field in frappe.db.sql("desc `%s`" % table): - if field[1]=="datetime": - frappe.db.sql("alter table `%s` change `%s` `%s` datetime(6)" % \ - (table, field[0], field[0])) - elif field[1]=="time": - frappe.db.sql("alter table `%s` change `%s` `%s` time(6)" % \ - (table, field[0], field[0])) diff --git a/frappe/patches/v4_0/webnotes_to_frappe.py b/frappe/patches/v4_0/webnotes_to_frappe.py deleted file mode 100644 index c70b2fdbde..0000000000 --- a/frappe/patches/v4_0/webnotes_to_frappe.py +++ /dev/null @@ -1,11 +0,0 @@ -import frappe, json - -def execute(): - frappe.clear_cache() - installed = frappe.get_installed_apps() - if "webnotes" in installed: - installed.remove("webnotes") - if "frappe" not in installed: - installed = ["frappe"] + installed - frappe.db.set_global("installed_apps", json.dumps(installed)) - frappe.clear_cache() diff --git a/frappe/patches/v4_0/website_sitemap_hierarchy.py b/frappe/patches/v4_0/website_sitemap_hierarchy.py deleted file mode 100644 index 324b13ea4a..0000000000 --- a/frappe/patches/v4_0/website_sitemap_hierarchy.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals - -import frappe - -def execute(): - # frappe.db.sql("""update `tabWebsite Route` ws set ref_doctype=(select wsc.ref_doctype - # from `tabWebsite Template` wsc where wsc.name=ws.website_template) - # where ifnull(page_or_generator, '')!='Page'""") - - frappe.reload_doc("website", "doctype", "website_settings") - - # original_home_page = frappe.db.get_value("Website Settings", "Website Settings", "home_page") - # - # home_page = frappe.db.sql("""select name from `tabWebsite Route` - # where (name=%s or docname=%s) and name!='index'""", (original_home_page, original_home_page)) - # home_page = home_page[0][0] if home_page else original_home_page - # - # frappe.db.set_value("Website Settings", "Website Settings", "home_page", home_page) diff --git a/frappe/patches/v4_1/__init__.py b/frappe/patches/v4_1/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/patches/v4_1/enable_outgoing_email_settings.py b/frappe/patches/v4_1/enable_outgoing_email_settings.py deleted file mode 100644 index cce8ce9647..0000000000 --- a/frappe/patches/v4_1/enable_outgoing_email_settings.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - return - # frappe.reload_doc("core", "doctype", "outgoing_email_settings") - # if (frappe.db.get_value("Outgoing Email Settings", "Outgoing Email Settings", "mail_server") or "").strip(): - # frappe.db.set_value("Outgoing Email Settings", "Outgoing Email Settings", "enabled", 1) diff --git a/frappe/patches/v4_1/enable_print_as_pdf.py b/frappe/patches/v4_1/enable_print_as_pdf.py deleted file mode 100644 index d218a26940..0000000000 --- a/frappe/patches/v4_1/enable_print_as_pdf.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - frappe.reload_doc("core", "doctype", "print_settings") - print_settings = frappe.get_doc("Print Settings") - print_settings.print_style = "Modern" - - try: - import pdfkit - except ImportError: - pass - else: - # if someone has already configured in Outgoing Email Settings - # outgoing_email_settings = frappe.db.get_singles_dict("Outgoing Email Settings") - # if "send_print_as_pdf" in outgoing_email_settings: - # print_settings.send_print_as_pdf = outgoing_email_settings.send_print_as_pdf - # print_settings.pdf_page_size = outgoing_email_settings.pdf_page_size - - print_settings.send_print_as_pdf = 1 - print_settings.save() diff --git a/frappe/patches/v4_1/file_manager_fix.py b/frappe/patches/v4_1/file_manager_fix.py deleted file mode 100644 index 5315284109..0000000000 --- a/frappe/patches/v4_1/file_manager_fix.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals - -import frappe -import os -from frappe.utils.file_manager import get_content_hash, get_file, get_file_name -from frappe.utils import get_files_path, get_site_path - -# The files missed by the previous patch might have been replaced with new files -# with the same filename -# -# This patch does the following, -# * Detect which files were replaced and rename them with name{hash:5}.extn and -# update filedata record for the new file -# -# * make missing_files.txt in site dir with files that should be recovered from -# a backup from a time before version 3 migration -# -# * Patch remaining unpatched file data records. - -def execute(): - frappe.db.auto_commit_on_many_writes = True - rename_replacing_files() - for name, file_name, file_url in frappe.db.sql( - """select name, file_name, file_url from `tabFile Data` - where ifnull(file_name, '')!='' and ifnull(content_hash, '')=''"""): - b = frappe.get_doc('File Data', name) - old_file_name = b.file_name - b.file_name = os.path.basename(old_file_name) - if old_file_name.startswith('files/') or old_file_name.startswith('/files/'): - b.file_url = os.path.normpath('/' + old_file_name) - else: - b.file_url = os.path.normpath('/files/' + old_file_name) - try: - _file_name, content = get_file(name) - b.content_hash = get_content_hash(content) - except IOError: - print 'Warning: Error processing ', name - b.content_hash = None - b.ignore_duplicate_entry_error = True - b.save() - frappe.db.auto_commit_on_many_writes = False - -def get_replaced_files(): - ret = [] - new_files = dict(frappe.db.sql("select name, file_name from `tabFile Data` where file_name not like 'files/%'")) - old_files = dict(frappe.db.sql("select name, file_name from `tabFile Data` where ifnull(content_hash, '')=''")) - invfiles = invert_dict(new_files) - - for nname, nfilename in new_files.iteritems(): - if 'files/' + nfilename in old_files.values(): - ret.append((nfilename, invfiles[nfilename])) - return ret - -def rename_replacing_files(): - replaced_files = get_replaced_files() - if len(replaced_files): - missing_files = [v[0] for v in replaced_files] - with open(get_site_path('missing_files.txt'), 'w') as f: - f.write(('\n'.join(missing_files) + '\n').encode('utf-8')) - - for file_name, file_datas in replaced_files: - print 'processing ' + file_name - content_hash = frappe.db.get_value('File Data', file_datas[0], 'content_hash') - if not content_hash: - continue - new_file_name = get_file_name(file_name, content_hash) - if os.path.exists(get_files_path(new_file_name)): - continue - print 'skipping ' + file_name - try: - os.rename(get_files_path(file_name), get_files_path(new_file_name)) - except OSError: - print 'Error renaming ', file_name - for name in file_datas: - f = frappe.get_doc('File Data', name) - f.file_name = new_file_name - f.file_url = '/files/' + new_file_name - f.save() - -def invert_dict(ddict): - ret = {} - for k,v in ddict.iteritems(): - if not ret.get(v): - ret[v] = [k] - else: - ret[v].append(k) - return ret - -def get_file_name(fname, hash): - if '.' in fname: - partial, extn = fname.rsplit('.', 1) - else: - partial = fname - extn = '' - return '{partial}{suffix}.{extn}'.format(partial=partial, extn=extn, suffix=hash[:5]) diff --git a/frappe/patches/v4_2/__init__.py b/frappe/patches/v4_2/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/patches/v4_2/print_with_letterhead.py b/frappe/patches/v4_2/print_with_letterhead.py deleted file mode 100644 index ad2a144d95..0000000000 --- a/frappe/patches/v4_2/print_with_letterhead.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - frappe.reload_doc("core", "doctype", "print_settings") - print_settings = frappe.get_doc("Print Settings") - print_settings.with_letterhead = 1 - print_settings.save() diff --git a/frappe/patches/v4_2/refactor_website_routing.py b/frappe/patches/v4_2/refactor_website_routing.py deleted file mode 100644 index 9cb39beaf0..0000000000 --- a/frappe/patches/v4_2/refactor_website_routing.py +++ /dev/null @@ -1,7 +0,0 @@ -import frappe - -def execute(): - # clear all static web pages - frappe.delete_doc("DocType", "Website Route", force=1) - frappe.delete_doc("Page", "sitemap-browser", force=1) - frappe.db.sql("drop table if exists `tabWebsite Route`") diff --git a/frappe/patches/v4_2/set_assign_in_doc.py b/frappe/patches/v4_2/set_assign_in_doc.py deleted file mode 100644 index 664c997eaf..0000000000 --- a/frappe/patches/v4_2/set_assign_in_doc.py +++ /dev/null @@ -1,10 +0,0 @@ -import frappe - -def execute(): - for name in frappe.db.sql_list("""select name from `tabToDo` - where ifnull(reference_type, '')!='' and ifnull(reference_name, '')!=''"""): - try: - frappe.get_doc("ToDo", name).on_update() - except Exception, e: - if e.args[0]!=1146: - raise diff --git a/frappe/patches/v5_0/clear_website_group.py b/frappe/patches/v5_0/clear_website_group.py new file mode 100644 index 0000000000..4530681542 --- /dev/null +++ b/frappe/patches/v5_0/clear_website_group.py @@ -0,0 +1,7 @@ +import frappe + +def execute(): + frappe.delete_doc("DocType", "Post") + frappe.delete_doc("DocType", "Website Group") + frappe.delete_doc("DocType", "Website Route Permission") + frappe.delete_doc("DocType", "User Vote") diff --git a/frappe/templates/website_group/__init__.py b/frappe/templates/website_group/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/templates/website_group/edit_post.html b/frappe/templates/website_group/edit_post.html deleted file mode 100644 index 99bce0bd84..0000000000 --- a/frappe/templates/website_group/edit_post.html +++ /dev/null @@ -1,19 +0,0 @@ -{% include "templates/includes/post_editor.html" %} - - diff --git a/frappe/templates/website_group/forum.html b/frappe/templates/website_group/forum.html deleted file mode 100644 index bd83acd4fc..0000000000 --- a/frappe/templates/website_group/forum.html +++ /dev/null @@ -1,27 +0,0 @@ -
-%s
\ -This is just for your information.
""" % subject) - -@frappe.whitelist() -def update_description(group, description): - doc = frappe.get_doc("Website Group", group) - pathname = doc.get_route() - if not get_access(doc, pathname).get("admin"): - raise frappe.PermissionError - - group = frappe.get_doc("Website Group", group) - group.group_description = description - group.save(ignore_permissions=True) - -@frappe.whitelist() -def add_website_group(group, new_group, public_read, public_write, group_type="Forum"): - doc = frappe.get_doc("Website Group", group) - pathname = doc.get_route() - if not get_access(doc, pathname).get("admin"): - raise frappe.PermissionError - - frappe.get_doc({ - "doctype": "Website Group", - "group_name": group + "-" + new_group, - "group_title": new_group, - "parent_website_group": group, - "group_type": group_type, - "public_read": int(public_read), - "public_write": int(public_write) - }).insert(ignore_permissions=True) diff --git a/frappe/website/context.py b/frappe/website/context.py index 38f6111f19..46cac7a478 100644 --- a/frappe/website/context.py +++ b/frappe/website/context.py @@ -8,7 +8,6 @@ from frappe.website.doctype.website_settings.website_settings import get_website from frappe.website.template import render_blocks from frappe.website.router import get_route_info from frappe.website.utils import can_cache -from frappe.website.permissions import get_access def get_context(path): context = None @@ -28,10 +27,7 @@ def get_context(path): context = get_route_info(path) # permission may be required for rendering - if context.doc and context.doc.doctype=="Website Group": - context["access"] = get_access(context.doc, context.pathname) - else: - context["access"] = frappe._dict({"public_read":1, "public_write":1}) + context["access"] = frappe._dict({"public_read":1, "public_write":1}) context = build_context(context) add_data_path(context) diff --git a/frappe/website/doctype/post/__init__.py b/frappe/website/doctype/post/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/post/post.json b/frappe/website/doctype/post/post.json deleted file mode 100644 index ffbc54ecf3..0000000000 --- a/frappe/website/doctype/post/post.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "autoname": "P.#######", - "creation": "2014-01-07 14:00:04.000000", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Transaction", - "fields": [ - { - "fieldname": "title", - "fieldtype": "Data", - "label": "Title", - "permlevel": 0, - "reqd": 0 - }, - { - "fieldname": "content", - "fieldtype": "Text", - "in_list_view": 1, - "label": "Content", - "permlevel": 0, - "reqd": 1 - }, - { - "fieldname": "picture_url", - "fieldtype": "Attach", - "label": "Picture URL", - "permlevel": 0 - }, - { - "fieldname": "website_group", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Website Group", - "options": "Website Group", - "permlevel": 0, - "reqd": 1, - "search_index": 1 - }, - { - "fieldname": "is_event", - "fieldtype": "Check", - "label": "Is Event", - "permlevel": 0 - }, - { - "fieldname": "event_datetime", - "fieldtype": "Datetime", - "label": "Event Datetime", - "permlevel": 0 - }, - { - "fieldname": "is_task", - "fieldtype": "Check", - "label": "Is Task", - "permlevel": 0 - }, - { - "fieldname": "assigned_to", - "fieldtype": "Link", - "label": "Assigned To", - "options": "User", - "permlevel": 0 - }, - { - "fieldname": "assigned_to_fullname", - "fieldtype": "Data", - "label": "Assigned To Fullname", - "permlevel": 0 - }, - { - "fieldname": "status", - "fieldtype": "Select", - "label": "Status", - "options": "\nOpen\nClosed", - "permlevel": 0, - "reqd": 0 - }, - { - "fieldname": "parent_post", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Parent Post", - "options": "Post", - "permlevel": 0, - "search_index": 1 - }, - { - "fieldname": "unsubscribe", - "fieldtype": "Check", - "label": "Unsubscribe", - "permlevel": 0 - }, - { - "default": "0", - "fieldname": "upvotes", - "fieldtype": "Int", - "label": "Upvotes", - "permlevel": 0 - }, - { - "default": "0", - "fieldname": "replies", - "fieldtype": "Int", - "label": "Replies", - "permlevel": 0 - } - ], - "icon": "icon-comment", - "idx": 1, - "modified": "2014-03-03 14:53:19.000000", - "modified_by": "Administrator", - "module": "Website", - "name": "Post", - "owner": "Administrator", - "permissions": [ - { - "cancel": 0, - "create": 1, - "delete": 1, - "export": 1, - "permlevel": 0, - "read": 1, - "report": 1, - "role": "System Manager", - "write": 1 - } - ] -} \ No newline at end of file diff --git a/frappe/website/doctype/post/post.py b/frappe/website/doctype/post/post.py deleted file mode 100644 index a13608e2f0..0000000000 --- a/frappe/website/doctype/post/post.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -# For license information, please see license.txt - -from __future__ import unicode_literals - -import frappe -from frappe import _ -from frappe.utils import get_fullname -from frappe.email.bulk import send - -from frappe.model.document import Document - -class Post(Document): - - def validate(self): - if not self.parent_post and not self.title: - frappe.throw(_("Title is required")) - - self.assigned_to = frappe.db.get_value(self.doctype, self.name, "assigned_to") - if self.is_task: - if not self.status: - self.status = "Open" - if self.assigned_to: - if not self.assigned_to_fullname: - self.assigned_to_fullname = get_fullname(self.assigned_to) - else: - self.assigned_to_fullname = None - else: - self.assigned_to = self.assigned_to_fullname = self.status = None - - if self.is_event: - if not self.event_datetime: - frappe.throw(_("Please specify Event date and time")) - else: - self.event_datetime = None - - def on_update(self): - from frappe.templates.website_group.post import clear_post_cache - from frappe.website.doctype.website_group.website_group import clear_cache - - clear_cache(website_group=self.website_group) - clear_post_cache(self.parent_post or self.name) - - if self.assigned_to and self.assigned_to != self.assigned_to \ - and frappe.session.user != self.assigned_to: - - # send assignment email - frappe.sendmail(recipients=[self.assigned_to], - subject="You have been assigned this Task by {}".format(get_fullname(self.modified_by)), - content=self.get_reply_email_message(self.name, get_fullname(self.owner))) - - def send_email_on_reply(self): - owner_fullname = get_fullname(self.owner) - - parent_post = frappe.get_doc("Post", self.parent_post) - - message = self.get_reply_email_message(self.name, owner_fullname) - - # send email to the owner of the post, if he/she is different - if parent_post.owner != self.owner: - send(recipients=[parent_post.owner], - subject="{someone} replied to your post".format(someone=owner_fullname), - message=message, - - # to allow unsubscribe - doctype='Post', - email_field='owner', - - # for tracking sent status - ref_doctype=self.doctype, ref_docname=self.name) - - # send email to members who part of the conversation - participants = frappe.db.sql("""select owner, name from `tabPost` - where parent_post=%s and owner not in (%s, %s) order by creation asc""", - (self.parent_post, parent_post.owner, self.owner), as_dict=True) - - send(recipients=[p.owner for p in participants], - subject="{someone} replied to a post by {other}".format(someone=owner_fullname, - other=get_fullname(parent_post.owner)), - message=message, - - # to allow unsubscribe - doctype='Post', - email_field='owner', - - # for tracking sent status - ref_doctype=self.doctype, ref_docname=self.name) - - def get_reply_email_message(self, post_name, owner_fullname=None): - message = self.content - if self.picture_url: - message += """By {fullname}
".format(fullname=owner_fullname) - message += "".format(fullname=owner_fullname, - post_name=post_name) - return message diff --git a/frappe/website/doctype/user_vote/__init__.py b/frappe/website/doctype/user_vote/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/user_vote/user_vote.json b/frappe/website/doctype/user_vote/user_vote.json deleted file mode 100644 index 31ab141701..0000000000 --- a/frappe/website/doctype/user_vote/user_vote.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "autoname": "_VOTE.#######", - "creation": "2014-01-17 16:26:21.000000", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Transaction", - "fields": [ - { - "fieldname": "ref_doctype", - "fieldtype": "Link", - "label": "Ref DocType", - "options": "DocType", - "permlevel": 0, - "search_index": 0 - }, - { - "fieldname": "ref_name", - "fieldtype": "Data", - "label": "Ref Name", - "permlevel": 0, - "search_index": 0 - } - ], - "idx": 1, - "modified": "2014-01-21 15:45:30.000000", - "modified_by": "Administrator", - "module": "Website", - "name": "User Vote", - "owner": "Administrator", - "permissions": [ - { - "cancel": 0, - "create": 1, - "delete": 1, - "export": 1, - "permlevel": 0, - "read": 1, - "report": 1, - "role": "System Manager", - "write": 1 - } - ] -} \ No newline at end of file diff --git a/frappe/website/doctype/user_vote/user_vote.py b/frappe/website/doctype/user_vote/user_vote.py deleted file mode 100644 index b265d2bc4e..0000000000 --- a/frappe/website/doctype/user_vote/user_vote.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe.website.permissions import get_access -from frappe.website.doctype.website_group.website_group import clear_cache -from frappe.model.document import Document - -class UserVote(Document): - def after_insert(self): - clear_cache(self.ref_name) - - def validate(self): - # if new - if self.get("__islocal"): - if frappe.db.get_value("User Vote", {"ref_doctype": self.ref_doctype, - "ref_name": self.ref_name, "owner": frappe.session.user}): - - raise frappe.DuplicateEntryError - - def on_update(self): - self.update_ref_count() - - def on_trash(self): - self.update_ref_count(-1) - - def update_ref_count(self, cnt=0): - count = frappe.db.sql("""select count(*) from `tabUser Vote` where ref_doctype=%s and ref_name=%s""", - (self.ref_doctype, self.ref_name))[0][0] - frappe.db.set_value(self.ref_doctype, self.ref_name, "upvotes", count + cnt) - -def on_doctype_update(): - frappe.db.add_index("User Vote", ["ref_doctype", "ref_name"]) - -# don't allow guest to give vote -@frappe.whitelist() -def set_vote(ref_doctype, ref_name): - website_group_name = frappe.db.get_value(ref_doctype, ref_name, "website_group") - group = frappe.get_doc("Website Group", website_group_name) - - if not get_access(group, group.get_route()).get("read"): - raise frappe.PermissionError - - try: - user_vote = frappe.get_doc({ - "doctype": "User Vote", - "ref_doctype": ref_doctype, - "ref_name": ref_name - }) - user_vote.ignore_permissions = True - user_vote.insert() - return "ok" - except frappe.DuplicateEntryError: - return "duplicate" diff --git a/frappe/website/doctype/website_group/__init__.py b/frappe/website/doctype/website_group/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/website_group/test_records.json b/frappe/website/doctype/website_group/test_records.json deleted file mode 100644 index 367c8663ee..0000000000 --- a/frappe/website/doctype/website_group/test_records.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "doctype": "Website Group", - "group_name": "_Test Website Group 1", - "group_title": "_Test Website Group 1" - } -] diff --git a/frappe/website/doctype/website_group/test_website_group.py b/frappe/website/doctype/website_group/test_website_group.py deleted file mode 100644 index b06104ee43..0000000000 --- a/frappe/website/doctype/website_group/test_website_group.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# See license.txt - -import frappe -import unittest - -test_records = frappe.get_test_records('Website Group') - -class TestWebsiteGroup(unittest.TestCase): - pass diff --git a/frappe/website/doctype/website_group/website_group.json b/frappe/website/doctype/website_group/website_group.json deleted file mode 100644 index d0506eab08..0000000000 --- a/frappe/website/doctype/website_group/website_group.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "creation": "2014-01-29 15:57:42", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Master", - "fields": [ - { - "fieldname": "name_and_description", - "fieldtype": "Section Break", - "label": "Name and Description", - "permlevel": 0 - }, - { - "fieldname": "group_name", - "fieldtype": "Data", - "label": "Group Name", - "permlevel": 0, - "reqd": 1 - }, - { - "fieldname": "group_title", - "fieldtype": "Data", - "label": "Group Title", - "no_copy": 0, - "permlevel": 0, - "reqd": 1 - }, - { - "fieldname": "group_type", - "fieldtype": "Select", - "label": "Group Type", - "options": "Forum\nTasks\nEvents", - "permlevel": 0, - "reqd": 1 - }, - { - "fieldname": "parent_website_group", - "fieldtype": "Link", - "label": "Parent Website Group", - "options": "Website Group", - "permlevel": 0 - }, - { - "description": "Display in the sidebar of this Website Route node", - "fieldname": "parent_website_route", - "fieldtype": "Read Only", - "in_list_view": 0, - "label": "Parent Website Route", - "options": "", - "permlevel": 0 - }, - { - "fieldname": "column_break_6", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "fieldname": "group_description", - "fieldtype": "Text", - "label": "Group Description", - "permlevel": 0 - }, - { - "fieldname": "page_name", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Page Name", - "no_copy": 1, - "permlevel": 0, - "reqd": 0 - }, - { - "fieldname": "details", - "fieldtype": "Section Break", - "label": "Details", - "permlevel": 0 - }, - { - "fieldname": "public_read", - "fieldtype": "Check", - "label": "Anyone Can Read", - "permlevel": 0 - }, - { - "fieldname": "public_write", - "fieldtype": "Check", - "label": "Anyone Can Write", - "permlevel": 0 - }, - { - "fieldname": "column_break_12", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "fieldname": "upvotes", - "fieldtype": "Int", - "label": "Upvotes", - "permlevel": 0, - "read_only": 1 - }, - { - "fieldname": "replies", - "fieldtype": "Int", - "label": "Replies", - "permlevel": 0, - "read_only": 1 - }, - { - "fieldname": "lft", - "fieldtype": "Int", - "hidden": 1, - "label": "lft", - "permlevel": 0 - }, - { - "fieldname": "rgt", - "fieldtype": "Int", - "hidden": 1, - "label": "rgt", - "permlevel": 0 - }, - { - "fieldname": "old_parent", - "fieldtype": "Read Only", - "hidden": 1, - "label": "Old Parent", - "permlevel": 0 - } - ], - "icon": "icon-group", - "idx": 1, - "modified": "2014-08-19 14:33:40.664635", - "modified_by": "Administrator", - "module": "Website", - "name": "Website Group", - "owner": "Administrator", - "permissions": [ - { - "cancel": 0, - "create": 1, - "delete": 1, - "export": 1, - "permlevel": 0, - "read": 1, - "report": 1, - "role": "Website Manager", - "write": 1 - } - ], - "sort_field": "modified", - "sort_order": "DESC" -} \ No newline at end of file diff --git a/frappe/website/doctype/website_group/website_group.py b/frappe/website/doctype/website_group/website_group.py deleted file mode 100644 index d05ce77340..0000000000 --- a/frappe/website/doctype/website_group/website_group.py +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe.website.website_generator import WebsiteGenerator -from frappe.website.render import can_cache -from frappe.templates.website_group.forum import get_post_list_html -from frappe.utils.nestedset import NestedSet - -class WebsiteGroup(WebsiteGenerator, NestedSet): - no_cache = True - template = "templates/generators/website_group.html" - parent_website_route_field = "parent_website_group" - page_title_field = "group_title" - - def on_update(self): - WebsiteGenerator.on_update(self) - NestedSet.on_update(self) - clear_cache(website_group=self.name) - - def on_trash(self): - WebsiteGenerator.on_trash(self) - NestedSet.on_trash(self) - - def after_insert(self): - clear_cache(website_group=self.name) - - def get_context(self, context): - group, view = guess_group_view(context) - - try: - if not has_access(context.access, view): - raise frappe.PermissionError - - return get_group_context(group, view, context) - - except frappe.DoesNotExistError: - return { - "content": '