From a96f3dc6cfe5c34ab4e3e125bea13eb2bdf8c327 Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:25:43 +0000 Subject: [PATCH 01/25] fix: hide jinja placeholder for title when no value set --- .../section_with_collapsible_content.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.html b/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.html index a2edf5b549..85b9ed89ac 100644 --- a/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.html +++ b/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.html @@ -1,5 +1,7 @@
+ {%- if title -%}

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ _(subtitle) }}

{%- endif -%} From ed14fafe32293022de26122439664b6b2edd9f04 Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:26:58 +0000 Subject: [PATCH 02/25] fix: hide jinja placeholder for title when no value set-section with cta --- .../website/web_template/section_with_cta/section_with_cta.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/web_template/section_with_cta/section_with_cta.html b/frappe/website/web_template/section_with_cta/section_with_cta.html index f59dbc5e66..08a153095a 100644 --- a/frappe/website/web_template/section_with_cta/section_with_cta.html +++ b/frappe/website/web_template/section_with_cta/section_with_cta.html @@ -1,6 +1,8 @@
+ {%- if title -%}

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ _(subtitle) }}

{%- endif -%} From a2bca73ac3d9a902a8ad57d783ae7eed2fa959cf Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:27:49 +0000 Subject: [PATCH 03/25] fix: hide jinja placeholder for title when no value set-hero --- frappe/website/web_template/hero/hero.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/web_template/hero/hero.html b/frappe/website/web_template/hero/hero.html index 454a3a8f98..20c693656a 100644 --- a/frappe/website/web_template/hero/hero.html +++ b/frappe/website/web_template/hero/hero.html @@ -1,6 +1,8 @@
+ {%- if title -%}

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ _(subtitle) }} From e9c302ac0de1b10e7f0105edb6077b0e1bca4712 Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:31:33 +0000 Subject: [PATCH 04/25] fix: hide jinja placeholder for title when no value-section with right image --- .../hero_with_right_image/hero_with_right_image.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/web_template/hero_with_right_image/hero_with_right_image.html b/frappe/website/web_template/hero_with_right_image/hero_with_right_image.html index 69a9fff702..d761d542af 100644 --- a/frappe/website/web_template/hero_with_right_image/hero_with_right_image.html +++ b/frappe/website/web_template/hero_with_right_image/hero_with_right_image.html @@ -1,9 +1,11 @@

+ {%- if title -%}

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ _(subtitle) }} From 2b20e93fe72c755362779a7127bb9b49f2f596a5 Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:31:46 +0000 Subject: [PATCH 05/25] fix: hide jinja placeholder for title when no value-section with embed --- .../web_template/section_with_embed/section_with_embed.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/web_template/section_with_embed/section_with_embed.html b/frappe/website/web_template/section_with_embed/section_with_embed.html index daf253afb2..f2e89ca493 100644 --- a/frappe/website/web_template/section_with_embed/section_with_embed.html +++ b/frappe/website/web_template/section_with_embed/section_with_embed.html @@ -1,5 +1,7 @@

+ {%- if title -%}

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ _(subtitle) }}

{%- endif -%} From 277286ff185e13adbf4e5c6b1d60cfba6da7f635 Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:32:33 +0000 Subject: [PATCH 06/25] fix: hide jinja placeholder for title when no value-section with image --- .../web_template/section_with_image/section_with_image.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/website/web_template/section_with_image/section_with_image.html b/frappe/website/web_template/section_with_image/section_with_image.html index 61c4010808..5644aa2dda 100644 --- a/frappe/website/web_template/section_with_image/section_with_image.html +++ b/frappe/website/web_template/section_with_image/section_with_image.html @@ -1,5 +1,7 @@
+ {%- if title -%}

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ _(subtitle) }}

{%- endif -%} From 1daad6f7f06ad2e8c9daeb9bbf027b919a098f8f Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:33:50 +0000 Subject: [PATCH 07/25] fix: hide jinja placeholder for title when no value-section with image grid --- .../section_with_image_grid/section_with_image_grid.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/website/web_template/section_with_image_grid/section_with_image_grid.html b/frappe/website/web_template/section_with_image_grid/section_with_image_grid.html index 89887333a2..600eb75ded 100644 --- a/frappe/website/web_template/section_with_image_grid/section_with_image_grid.html +++ b/frappe/website/web_template/section_with_image_grid/section_with_image_grid.html @@ -1,5 +1,7 @@
-

{{ title }}

+ {%- if title -%} +

{{ _(title) }}

+ {%- endif -%}

{{ subtitle }}

From 52d686f7e21fdc2eb90c21b4a48547475744e0ae Mon Sep 17 00:00:00 2001 From: Antoine Maas Date: Fri, 20 Jun 2025 09:34:02 +0000 Subject: [PATCH 08/25] fix: hide jinja placeholder for title when no value-section with small cta --- .../section_with_small_cta/section_with_small_cta.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/website/web_template/section_with_small_cta/section_with_small_cta.html b/frappe/website/web_template/section_with_small_cta/section_with_small_cta.html index 4465fcc153..c385329c7b 100644 --- a/frappe/website/web_template/section_with_small_cta/section_with_small_cta.html +++ b/frappe/website/web_template/section_with_small_cta/section_with_small_cta.html @@ -1,7 +1,9 @@
-

{{ title or '' }}

+ {%- if title -%} +

{{ _(title) }}

+ {%- endif -%} {%- if subtitle -%}

{{ subtitle }}

{%- endif -%} From daf8f5545820a26b114102dded3733b2c777ae86 Mon Sep 17 00:00:00 2001 From: Ritvik Sardana Date: Sat, 19 Jul 2025 11:59:10 +0530 Subject: [PATCH 09/25] feat: auto append email account to the document --- frappe/core/doctype/doctype/doctype.json | 9 ++++++++- frappe/core/doctype/doctype/doctype.py | 1 + frappe/custom/doctype/customize_form/customize_form.json | 9 ++++++++- frappe/custom/doctype/customize_form/customize_form.py | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/frappe/core/doctype/doctype/doctype.json b/frappe/core/doctype/doctype/doctype.json index dfcb88b2ff..b14d15f336 100644 --- a/frappe/core/doctype/doctype/doctype.json +++ b/frappe/core/doctype/doctype/doctype.json @@ -77,6 +77,7 @@ "email_append_to", "sender_field", "sender_name_field", + "sender_email_account_field", "subject_field", "fields_tab", "fields_section", @@ -707,6 +708,12 @@ "fieldtype": "Int", "label": "Rows Threshold for Grid Search", "non_negative": 1 + }, + { + "depends_on": "email_append_to", + "fieldname": "sender_email_account_field", + "fieldtype": "Data", + "label": "Sender Email Account Field" } ], "grid_page_length": 50, @@ -785,7 +792,7 @@ "link_fieldname": "document_type" } ], - "modified": "2025-06-24 07:46:34.380662", + "modified": "2025-07-19 11:56:19.636440", "modified_by": "Administrator", "module": "Core", "name": "DocType", diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py index 1b94db76a9..03226b91ce 100644 --- a/frappe/core/doctype/doctype/doctype.py +++ b/frappe/core/doctype/doctype/doctype.py @@ -163,6 +163,7 @@ class DocType(Document): row_format: DF.Literal["Dynamic", "Compressed"] rows_threshold_for_grid_search: DF.Int search_fields: DF.Data | None + sender_email_account_field: DF.Data | None sender_field: DF.Data | None sender_name_field: DF.Data | None show_name_in_global_search: DF.Check diff --git a/frappe/custom/doctype/customize_form/customize_form.json b/frappe/custom/doctype/customize_form/customize_form.json index 32e25ae29e..5fac3799ae 100644 --- a/frappe/custom/doctype/customize_form/customize_form.json +++ b/frappe/custom/doctype/customize_form/customize_form.json @@ -49,6 +49,7 @@ "email_append_to", "sender_field", "sender_name_field", + "sender_email_account_field", "subject_field", "section_break_8", "sort_field", @@ -415,6 +416,12 @@ "fieldname": "protect_attached_files", "fieldtype": "Check", "label": "Protect Attached Files" + }, + { + "depends_on": "email_append_to", + "fieldname": "sender_email_account_field", + "fieldtype": "Data", + "label": "Sender Email Account Field" } ], "hide_toolbar": 1, @@ -423,7 +430,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2025-03-27 18:22:32.618603", + "modified": "2025-07-19 11:56:01.780636", "modified_by": "Administrator", "module": "Custom", "name": "Customize Form", diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 3bbd874732..585b76f544 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -75,6 +75,7 @@ class CustomizeForm(Document): queue_in_background: DF.Check quick_entry: DF.Check search_fields: DF.Data | None + sender_email_account_field: DF.Data | None sender_field: DF.Data | None sender_name_field: DF.Data | None show_preview_popup: DF.Check From a5ab9c12b50beecf39b53a2f14751f34d89fe2e1 Mon Sep 17 00:00:00 2001 From: Ritvik Sardana Date: Sat, 19 Jul 2025 12:06:27 +0530 Subject: [PATCH 10/25] fix: attach email account name to the append_to doctype --- frappe/email/receive.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frappe/email/receive.py b/frappe/email/receive.py index 5907528f38..bc3da4715d 100644 --- a/frappe/email/receive.py +++ b/frappe/email/receive.py @@ -850,6 +850,9 @@ class InboundMail(Email): if email_fields.sender_name_field: parent.set(email_fields.sender_name_field, frappe.as_unicode(self.from_real_name)) + if email_fields.sender_email_account_field: + parent.set(email_fields.sender_email_account_field, self.email_account.name) + parent.flags.ignore_mandatory = True try: @@ -891,7 +894,7 @@ class InboundMail(Email): """Return Email related fields of a doctype.""" fields = frappe._dict() - email_fields = ["subject_field", "sender_field", "sender_name_field"] + email_fields = ["subject_field", "sender_field", "sender_name_field", "sender_email_account_field"] meta = frappe.get_meta(doctype) for field in email_fields: From b3afe4f4f12c660e468e44b9fac7f564e711ad9b Mon Sep 17 00:00:00 2001 From: Ritvik Sardana Date: Sat, 19 Jul 2025 12:26:36 +0530 Subject: [PATCH 11/25] chore: rename email account field --- frappe/core/doctype/doctype/doctype.json | 8 ++++---- frappe/core/doctype/doctype/doctype.py | 2 +- frappe/custom/doctype/customize_form/customize_form.json | 8 ++++---- frappe/custom/doctype/customize_form/customize_form.py | 2 +- frappe/email/receive.py | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/frappe/core/doctype/doctype/doctype.json b/frappe/core/doctype/doctype/doctype.json index b14d15f336..6a035986b3 100644 --- a/frappe/core/doctype/doctype/doctype.json +++ b/frappe/core/doctype/doctype/doctype.json @@ -77,7 +77,7 @@ "email_append_to", "sender_field", "sender_name_field", - "sender_email_account_field", + "recipient_account_field", "subject_field", "fields_tab", "fields_section", @@ -711,9 +711,9 @@ }, { "depends_on": "email_append_to", - "fieldname": "sender_email_account_field", + "fieldname": "recipient_account_field", "fieldtype": "Data", - "label": "Sender Email Account Field" + "label": "Recipient Account Field" } ], "grid_page_length": 50, @@ -792,7 +792,7 @@ "link_fieldname": "document_type" } ], - "modified": "2025-07-19 11:56:19.636440", + "modified": "2025-07-19 12:23:16.296416", "modified_by": "Administrator", "module": "Core", "name": "DocType", diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py index 03226b91ce..845dbf5219 100644 --- a/frappe/core/doctype/doctype/doctype.py +++ b/frappe/core/doctype/doctype/doctype.py @@ -158,12 +158,12 @@ class DocType(Document): queue_in_background: DF.Check quick_entry: DF.Check read_only: DF.Check + recipient_account_field: DF.Data | None restrict_to_domain: DF.Link | None route: DF.Data | None row_format: DF.Literal["Dynamic", "Compressed"] rows_threshold_for_grid_search: DF.Int search_fields: DF.Data | None - sender_email_account_field: DF.Data | None sender_field: DF.Data | None sender_name_field: DF.Data | None show_name_in_global_search: DF.Check diff --git a/frappe/custom/doctype/customize_form/customize_form.json b/frappe/custom/doctype/customize_form/customize_form.json index 5fac3799ae..03ac4d1761 100644 --- a/frappe/custom/doctype/customize_form/customize_form.json +++ b/frappe/custom/doctype/customize_form/customize_form.json @@ -49,7 +49,7 @@ "email_append_to", "sender_field", "sender_name_field", - "sender_email_account_field", + "recipient_account_field", "subject_field", "section_break_8", "sort_field", @@ -419,9 +419,9 @@ }, { "depends_on": "email_append_to", - "fieldname": "sender_email_account_field", + "fieldname": "recipient_account_field", "fieldtype": "Data", - "label": "Sender Email Account Field" + "label": "Recipient Account Field" } ], "hide_toolbar": 1, @@ -430,7 +430,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2025-07-19 11:56:01.780636", + "modified": "2025-07-19 12:23:41.564203", "modified_by": "Administrator", "module": "Custom", "name": "Customize Form", diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 585b76f544..584882a754 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -74,8 +74,8 @@ class CustomizeForm(Document): protect_attached_files: DF.Check queue_in_background: DF.Check quick_entry: DF.Check + recipient_account_field: DF.Data | None search_fields: DF.Data | None - sender_email_account_field: DF.Data | None sender_field: DF.Data | None sender_name_field: DF.Data | None show_preview_popup: DF.Check diff --git a/frappe/email/receive.py b/frappe/email/receive.py index bc3da4715d..a0409c7909 100644 --- a/frappe/email/receive.py +++ b/frappe/email/receive.py @@ -850,8 +850,8 @@ class InboundMail(Email): if email_fields.sender_name_field: parent.set(email_fields.sender_name_field, frappe.as_unicode(self.from_real_name)) - if email_fields.sender_email_account_field: - parent.set(email_fields.sender_email_account_field, self.email_account.name) + if email_fields.recipient_account_field: + parent.set(email_fields.recipient_account_field, self.email_account.name) parent.flags.ignore_mandatory = True @@ -894,7 +894,7 @@ class InboundMail(Email): """Return Email related fields of a doctype.""" fields = frappe._dict() - email_fields = ["subject_field", "sender_field", "sender_name_field", "sender_email_account_field"] + email_fields = ["subject_field", "sender_field", "sender_name_field", "recipient_account_field"] meta = frappe.get_meta(doctype) for field in email_fields: From 6174af97551d8ce7306548191c32b267a9bccac3 Mon Sep 17 00:00:00 2001 From: MochaMind Date: Thu, 24 Jul 2025 03:23:13 +0530 Subject: [PATCH 12/25] fix: Serbian (Latin) translations --- frappe/locale/sr_CS.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/locale/sr_CS.po b/frappe/locale/sr_CS.po index 90f6b66b1f..230c038287 100644 --- a/frappe/locale/sr_CS.po +++ b/frappe/locale/sr_CS.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: developers@frappe.io\n" "POT-Creation-Date: 2025-07-20 09:35+0000\n" -"PO-Revision-Date: 2025-07-21 21:50\n" +"PO-Revision-Date: 2025-07-23 21:53\n" "Last-Translator: developers@frappe.io\n" "Language-Team: Serbian (Latin)\n" "MIME-Version: 1.0\n" @@ -11911,7 +11911,7 @@ msgstr "Sakrivena polja" #: frappe/public/js/frappe/views/reports/query_report.js:1641 msgid "Hidden columns include: {0}" -msgstr "" +msgstr "Sakrivene kolone uključuju: {0}" #. Option for the 'Page Number' (Select) field in DocType 'Print Format' #: frappe/printing/doctype/print_format/print_format.json @@ -12864,7 +12864,7 @@ msgstr "Uključi filtere" #: frappe/public/js/frappe/views/reports/query_report.js:1639 msgid "Include hidden columns" -msgstr "" +msgstr "Uključi sakrivene kolone" #: frappe/public/js/frappe/views/reports/query_report.js:1611 msgid "Include indentation" @@ -27321,7 +27321,7 @@ msgstr "Prevodi" #. Name of a role #: frappe/core/doctype/translation/translation.json msgid "Translator" -msgstr "" +msgstr "Prevodilac" #. Option for the 'Email Status' (Select) field in DocType 'Communication' #: frappe/core/doctype/communication/communication.json From f08776b208a0d2893b7c3a92852dd8ba33eb622f Mon Sep 17 00:00:00 2001 From: MochaMind Date: Thu, 24 Jul 2025 03:23:15 +0530 Subject: [PATCH 13/25] fix: Serbian (Cyrillic) translations --- frappe/locale/sr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/locale/sr.po b/frappe/locale/sr.po index 2d0d68650b..ac1562971f 100644 --- a/frappe/locale/sr.po +++ b/frappe/locale/sr.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: developers@frappe.io\n" "POT-Creation-Date: 2025-07-20 09:35+0000\n" -"PO-Revision-Date: 2025-07-21 21:50\n" +"PO-Revision-Date: 2025-07-23 21:53\n" "Last-Translator: developers@frappe.io\n" "Language-Team: Serbian (Cyrillic)\n" "MIME-Version: 1.0\n" @@ -11910,7 +11910,7 @@ msgstr "Сакривена поља" #: frappe/public/js/frappe/views/reports/query_report.js:1641 msgid "Hidden columns include: {0}" -msgstr "" +msgstr "Сакривене колоне укључују: {0}" #. Option for the 'Page Number' (Select) field in DocType 'Print Format' #: frappe/printing/doctype/print_format/print_format.json @@ -12863,7 +12863,7 @@ msgstr "Укључи филтере" #: frappe/public/js/frappe/views/reports/query_report.js:1639 msgid "Include hidden columns" -msgstr "" +msgstr "Укључи сакривене колоне" #: frappe/public/js/frappe/views/reports/query_report.js:1611 msgid "Include indentation" @@ -27320,7 +27320,7 @@ msgstr "Преводи" #. Name of a role #: frappe/core/doctype/translation/translation.json msgid "Translator" -msgstr "" +msgstr "Преводилац" #. Option for the 'Email Status' (Select) field in DocType 'Communication' #: frappe/core/doctype/communication/communication.json From 5877b980a53b1db14e1f1aa04bf8cae8c7b9730e Mon Sep 17 00:00:00 2001 From: sokumon Date: Thu, 24 Jul 2025 10:17:17 +0530 Subject: [PATCH 14/25] fix: restrict workflow actions in report view --- frappe/public/js/frappe/views/reports/report_view.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frappe/public/js/frappe/views/reports/report_view.js b/frappe/public/js/frappe/views/reports/report_view.js index 550fd4a419..414785e22d 100644 --- a/frappe/public/js/frappe/views/reports/report_view.js +++ b/frappe/public/js/frappe/views/reports/report_view.js @@ -59,11 +59,15 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView { } setup_events() { + const me = this; if (this.list_view_settings?.disable_auto_refresh) { return; } frappe.realtime.doctype_subscribe(this.doctype); frappe.realtime.on("list_update", (data) => this.on_update(data)); + this.page.actions_btn_group.on("show.bs.dropdown", () => { + me.toggle_workflow_actions(); + }); } setup_page() { From c6a2e6595abebfbd35d11fbf69ed5c14707db886 Mon Sep 17 00:00:00 2001 From: Vehbi Unal <126095007+vehbiu@users.noreply.github.com> Date: Wed, 23 Jul 2025 13:11:59 -0500 Subject: [PATCH 15/25] fix(utils): convert phone numbers passed into validate_phone_number to strings --- frappe/utils/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frappe/utils/__init__.py b/frappe/utils/__init__.py index 7cb5decb3b..c1362bb33b 100644 --- a/frappe/utils/__init__.py +++ b/frappe/utils/__init__.py @@ -142,6 +142,9 @@ def validate_phone_number(phone_number, throw=False): if not phone_number: return False + if not isinstance(phone_number, str): + phone_number = str(phone_number) + phone_number = phone_number.strip() match = PHONE_NUMBER_PATTERN.match(phone_number) From a8cd9f3c89a83a409126de12e26e399669d61c11 Mon Sep 17 00:00:00 2001 From: MochaMind Date: Sat, 26 Jul 2025 04:10:13 +0530 Subject: [PATCH 16/25] fix: Indonesian translations --- frappe/locale/id.po | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/frappe/locale/id.po b/frappe/locale/id.po index 13e133e83b..69f71893f1 100644 --- a/frappe/locale/id.po +++ b/frappe/locale/id.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: developers@frappe.io\n" "POT-Creation-Date: 2025-07-20 09:35+0000\n" -"PO-Revision-Date: 2025-07-22 21:46\n" +"PO-Revision-Date: 2025-07-25 22:40\n" "Last-Translator: developers@frappe.io\n" "Language-Team: Indonesian\n" "MIME-Version: 1.0\n" @@ -14087,7 +14087,7 @@ msgstr "" #: frappe/public/js/frappe/ui/filters/filter.js:652 msgid "Last 6 Months" -msgstr "" +msgstr "6 Bulan Terakhir" #: frappe/public/js/frappe/ui/filters/filter.js:624 msgid "Last 7 Days" @@ -16521,7 +16521,7 @@ msgstr "" #: frappe/public/js/frappe/ui/filters/filter.js:704 msgid "Next 6 Months" -msgstr "" +msgstr "6 Bulan ke Depan" #: frappe/public/js/frappe/ui/filters/filter.js:680 msgid "Next 7 Days" @@ -16550,11 +16550,11 @@ msgstr "" #: frappe/public/js/frappe/ui/filters/filter.js:696 msgid "Next Month" -msgstr "" +msgstr "Bulan Depan" #: frappe/public/js/frappe/ui/filters/filter.js:700 msgid "Next Quarter" -msgstr "" +msgstr "Kuartal Depan" #. Label of the next_schedule_date (Date) field in DocType 'Auto Repeat' #: frappe/automation/doctype/auto_repeat/auto_repeat.json @@ -16584,11 +16584,11 @@ msgstr "" #: frappe/public/js/frappe/ui/filters/filter.js:692 msgid "Next Week" -msgstr "" +msgstr "Minggu Depan" #: frappe/public/js/frappe/ui/filters/filter.js:708 msgid "Next Year" -msgstr "" +msgstr "Tahun Depan" #: frappe/public/js/frappe/form/workflow.js:45 msgid "Next actions" @@ -26071,19 +26071,19 @@ msgstr "Papan Kanban ini akan menjadi pribadi" #: frappe/public/js/frappe/ui/filters/filter.js:666 msgid "This Month" -msgstr "" +msgstr "Bulan Ini" #: frappe/public/js/frappe/ui/filters/filter.js:670 msgid "This Quarter" -msgstr "" +msgstr "Kuartal Ini" #: frappe/public/js/frappe/ui/filters/filter.js:662 msgid "This Week" -msgstr "" +msgstr "Minggu Ini" #: frappe/public/js/frappe/ui/filters/filter.js:674 msgid "This Year" -msgstr "" +msgstr "Tahun Ini" #: frappe/custom/doctype/customize_form/customize_form.js:220 msgid "This action is irreversible. Do you wish to continue?" @@ -26789,7 +26789,7 @@ msgstr "Token hilang" #: frappe/public/js/frappe/ui/filters/filter.js:739 msgid "Tomorrow" -msgstr "" +msgstr "Besok" #: frappe/desk/doctype/bulk_update/bulk_update.py:68 #: frappe/model/workflow.py:254 @@ -29474,7 +29474,7 @@ msgstr "Ya" #: frappe/public/js/frappe/ui/filters/filter.js:727 msgid "Yesterday" -msgstr "" +msgstr "Kemarin" #: frappe/public/js/frappe/utils/user.js:33 msgctxt "Name of the current user. For example: You edited this 5 hours ago." @@ -31412,7 +31412,7 @@ msgstr "{0} minggu yang lalu" #: frappe/public/js/frappe/utils/pretty_date.js:39 msgid "{0} y" -msgstr "{0} t" +msgstr "" #: frappe/public/js/frappe/utils/pretty_date.js:72 msgid "{0} years ago" From 213ce53b0d3b6057e48168aff0f5c5d1e5072308 Mon Sep 17 00:00:00 2001 From: MochaMind Date: Sun, 27 Jul 2025 04:06:20 +0530 Subject: [PATCH 17/25] fix: Persian translations --- frappe/locale/fa.po | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/frappe/locale/fa.po b/frappe/locale/fa.po index 616b454ac2..b4a22e3b5d 100644 --- a/frappe/locale/fa.po +++ b/frappe/locale/fa.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: developers@frappe.io\n" "POT-Creation-Date: 2025-07-20 09:35+0000\n" -"PO-Revision-Date: 2025-07-22 21:46\n" +"PO-Revision-Date: 2025-07-26 22:36\n" "Last-Translator: developers@frappe.io\n" "Language-Team: Persian\n" "MIME-Version: 1.0\n" @@ -22765,7 +22765,7 @@ msgstr "فیلدها را انتخاب کنید" #: frappe/public/js/frappe/data_import/data_exporter.js:147 msgid "Select Fields To Insert" -msgstr "فیلدهایی را برای درج انتخاب کنید" +msgstr "انتخاب فیلدها برای درج" #: frappe/public/js/frappe/data_import/data_exporter.js:148 msgid "Select Fields To Update" @@ -27753,25 +27753,25 @@ msgstr "از % برای هر مقدار غیر خالی استفاده کنید. #. Label of the ascii_encode_password (Check) field in DocType 'Email Account' #: frappe/email/doctype/email_account/email_account.json msgid "Use ASCII encoding for password" -msgstr "از رمزگذاری ASCII برای گذرواژه استفاده کنید" +msgstr "استفاده از رمزگذاری ASCII برای گذرواژه" #. Label of the use_first_day_of_period (Check) field in DocType 'Auto Email #. Report' #: frappe/email/doctype/auto_email_report/auto_email_report.json msgid "Use First Day of Period" -msgstr "از اولین روز دوره استفاده کنید" +msgstr "استفاده از اولین روز دوره" #. Label of the use_html (Check) field in DocType 'Email Template' #: frappe/email/doctype/email_template/email_template.json msgid "Use HTML" -msgstr "از HTML استفاده کنید" +msgstr "استفاده از HTML" #. Label of the use_imap (Check) field in DocType 'Email Account' #. Label of the use_imap (Check) field in DocType 'Email Domain' #: frappe/email/doctype/email_account/email_account.json #: frappe/email/doctype/email_domain/email_domain.json msgid "Use IMAP" -msgstr "از IMAP استفاده کنید" +msgstr "استفاده از IMAP" #. Label of the use_number_format_from_currency (Check) field in DocType #. 'System Settings' @@ -27796,21 +27796,21 @@ msgstr "استفاده از نمودار گزارش" #: frappe/email/doctype/email_account/email_account.json #: frappe/email/doctype/email_domain/email_domain.json msgid "Use SSL" -msgstr "از SSL استفاده کنید" +msgstr "استفاده از SSL" #. Label of the use_starttls (Check) field in DocType 'Email Account' #. Label of the use_starttls (Check) field in DocType 'Email Domain' #: frappe/email/doctype/email_account/email_account.json #: frappe/email/doctype/email_domain/email_domain.json msgid "Use STARTTLS" -msgstr "از STARTTLS استفاده کنید" +msgstr "استفاده از STARTTLS" #. Label of the use_tls (Check) field in DocType 'Email Account' #. Label of the use_tls (Check) field in DocType 'Email Domain' #: frappe/email/doctype/email_account/email_account.json #: frappe/email/doctype/email_domain/email_domain.json msgid "Use TLS" -msgstr "از TLS استفاده کنید" +msgstr "استفاده از TLS" #: frappe/utils/password_strength.py:44 msgid "Use a few words, avoid common phrases." @@ -29168,7 +29168,7 @@ msgstr "عمل گردش کار" #. Description of a DocType #: frappe/workflow/doctype/workflow_action_master/workflow_action_master.json msgid "Workflow Action Master" -msgstr "استاد اکشن گردش کار" +msgstr "مدیر اکشن گردش کار" #. Label of the workflow_action_name (Data) field in DocType 'Workflow Action #. Master' @@ -29939,7 +29939,7 @@ msgstr "" #: frappe/core/doctype/prepared_report/prepared_report.js:57 msgid "Your CSV file is being generated and will appear in the Attachments section once ready. Additionally, you will get notified when the file is available for download." -msgstr "" +msgstr "فایل CSV شما در حال تولید است و به محض آماده شدن در بخش پیوست‌ها نمایش داده خواهد شد. علاوه بر این، هنگامی که فایل برای دانلود در دسترس قرار گرفت، به شما اطلاع داده خواهد شد." #: frappe/desk/page/setup_wizard/setup_wizard.js:397 msgid "Your Country" @@ -30130,7 +30130,7 @@ msgstr "ایجاد كردن" #. Option for the 'Indicator Color' (Select) field in DocType 'Workspace' #: frappe/desk/doctype/workspace/workspace.json msgid "cyan" -msgstr "فیروزه ای" +msgstr "فیروزه‌ای" #: frappe/public/js/frappe/form/controls/duration.js:218 #: frappe/public/js/frappe/utils/utils.js:1119 @@ -30318,7 +30318,7 @@ msgstr "آیکون" #. Inspector' #: frappe/core/doctype/permission_inspector/permission_inspector.json msgid "import" -msgstr "درون‌ریزی" +msgstr "درون‌بُرد" #. Description of the 'Read Time' (Int) field in DocType 'Blog Post' #: frappe/website/doctype/blog_post/blog_post.json @@ -30693,7 +30693,7 @@ msgstr "از طریق قانون واگذاری" #: frappe/automation/doctype/auto_repeat/auto_repeat.py:242 msgid "via Auto Repeat" -msgstr "" +msgstr "از طریق تکرار خودکار" #: frappe/core/doctype/data_import/importer.py:271 #: frappe/core/doctype/data_import/importer.py:292 @@ -30985,7 +30985,7 @@ msgstr "{0} این را ایجاد کرد" #: frappe/public/js/frappe/form/footer/version_timeline_content_builder.js:250 msgctxt "Form timeline" msgid "{0} created this document {1}" -msgstr "" +msgstr "{0} این سند را ایجاد کرد {1}" #: frappe/public/js/frappe/utils/pretty_date.js:33 msgid "{0} d" From 4983c3fc349b94a8ff357bca9c734c6d4ccbac42 Mon Sep 17 00:00:00 2001 From: Raffael Meyer <14891507+barredterra@users.noreply.github.com> Date: Mon, 28 Jul 2025 06:34:10 +0200 Subject: [PATCH 18/25] fix: prevent logout due to empty "Password" field (#29158) * fix: prevent logout due to empty "Password" field * fix: validate_api_key_secret - We don't want get decrypted password to raise a ValidationError - If api_key, api_secret or doc_secret are empty, we want an AuthenticationError --- frappe/auth.py | 7 +++++-- frappe/utils/password.py | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frappe/auth.py b/frappe/auth.py index 9e4e66dda0..f667138ea1 100644 --- a/frappe/auth.py +++ b/frappe/auth.py @@ -704,6 +704,9 @@ def validate_auth_via_api_keys(authorization_header): def validate_api_key_secret(api_key, api_secret, frappe_authorization_source=None): """frappe_authorization_source to provide api key and secret for a doctype apart from User""" + if not api_key or not api_secret: + raise frappe.AuthenticationError + doctype = frappe_authorization_source or "User" docname = frappe.db.get_value( doctype=doctype, filters={"api_key": api_key, "enabled": True}, fieldname=["name"] @@ -711,8 +714,8 @@ def validate_api_key_secret(api_key, api_secret, frappe_authorization_source=Non if not docname: raise frappe.AuthenticationError form_dict = frappe.local.form_dict - doc_secret = get_decrypted_password(doctype, docname, fieldname="api_secret") - if api_secret == doc_secret: + doc_secret = get_decrypted_password(doctype, docname, fieldname="api_secret", raise_exception=False) + if doc_secret and api_secret == doc_secret: if doctype == "User": user = frappe.db.get_value(doctype="User", filters={"api_key": api_key}, fieldname=["name"]) else: diff --git a/frappe/utils/password.py b/frappe/utils/password.py index db3e0ff09d..0393cd69dd 100644 --- a/frappe/utils/password.py +++ b/frappe/utils/password.py @@ -42,10 +42,9 @@ def get_decrypted_password(doctype, name, fieldname="password", raise_exception= return None - elif raise_exception: + if raise_exception: frappe.throw( _("Password not found for {0} {1} {2}").format(doctype, name, fieldname), - frappe.AuthenticationError, ) From 20e4815d81adf6661b43eb2917696119ed3befcc Mon Sep 17 00:00:00 2001 From: Rahul Agrawal <12agrawalrahul@gmail.com> Date: Mon, 28 Jul 2025 11:41:44 +0530 Subject: [PATCH 19/25] fix: Default currency symbol in query report total row (#33429) --- frappe/public/js/frappe/views/reports/query_report.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 651e282989..7dff1236f5 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1743,7 +1743,9 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { row.is_total_row = true; return row; }, {}); - + if (!totalRow?.currency && rows[0]?.currency) { + totalRow.currency = rows[0].currency; + } rows.push(totalRow); } return rows; From 64db88228f659f937b5937cfadcb12172ead3385 Mon Sep 17 00:00:00 2001 From: Soham Kulkarni <77533095+sokumon@users.noreply.github.com> Date: Mon, 28 Jul 2025 14:35:02 +0530 Subject: [PATCH 20/25] refactor: seperate blogs into a seperate app (#32737) * fix: remove doctypes,workspace blocks, files * fix: minor python tests and UI tests * fix: remove blog post from tests * fix: remove blogger as role for tests * fix: add check for if doctype exists * fix: ui test * fix: more cleanup * fix: cleanup comments and fix test_query * fix: resolve conflicts * fix: add warning and handle comments --- cypress/integration/awesome_bar.js | 12 +- cypress/integration/sidebar.js | 4 +- cypress/integration/table_multiselect.js | 2 +- frappe/core/doctype/comment/test_comment.py | 37 +- frappe/core/doctype/user/user.json | 5 - .../user_permission/test_user_permission.py | 19 +- frappe/desk/doctype/event/test_event.py | 1 - frappe/desk/doctype/todo/test_todo.py | 8 +- frappe/email/test_smtp.py | 6 +- frappe/hooks.py | 2 - .../ldap_settings/test_ldap_settings.py | 4 +- .../v16_0/add_module_deprecation_warning.py | 1 + frappe/public/scss/website/blog.scss | 138 ------ frappe/public/scss/website/index.scss | 1 - frappe/templates/includes/blog/blogger.html | 14 - frappe/templates/includes/blog/hero.html | 12 - .../templates/includes/comments/comments.py | 50 +-- frappe/templates/includes/likes/__init__.py | 0 frappe/templates/includes/likes/likes.html | 41 -- frappe/templates/includes/likes/likes.py | 78 ---- frappe/tests/test_api_v2.py | 2 +- frappe/tests/test_db_query.py | 83 ++-- frappe/tests/test_defaults.py | 2 +- frappe/tests/test_form_load.py | 20 +- frappe/tests/test_helpers.py | 271 ++++++++++++ frappe/tests/test_permissions.py | 285 +++++++------ frappe/tests/test_query.py | 39 +- frappe/tests/test_sitemap.py | 5 - frappe/tests/ui_test_helpers.py | 35 +- .../website/doctype/blog_category/README.md | 1 - .../website/doctype/blog_category/__init__.py | 0 .../doctype/blog_category/blog_category.js | 6 - .../doctype/blog_category/blog_category.json | 94 ----- .../doctype/blog_category/blog_category.py | 33 -- .../templates/blog_category.html | 9 - .../templates/blog_category_row.html | 4 - .../blog_category/test_blog_category.py | 8 - .../doctype/blog_category/test_records.json | 17 - frappe/website/doctype/blog_post/README.md | 1 - frappe/website/doctype/blog_post/__init__.py | 0 frappe/website/doctype/blog_post/blog_post.js | 67 --- .../website/doctype/blog_post/blog_post.json | 253 ----------- frappe/website/doctype/blog_post/blog_post.py | 396 ------------------ .../doctype/blog_post/blog_post_list.js | 10 - .../blog_post/templates/blog_post.html | 91 ---- .../blog_post/templates/blog_post_list.html | 91 ---- .../blog_post/templates/blog_post_row.html | 43 -- .../doctype/blog_post/test_blog_post.py | 191 --------- .../doctype/blog_post/test_records.json | 38 -- .../website/doctype/blog_settings/README.md | 1 - .../website/doctype/blog_settings/__init__.py | 0 .../doctype/blog_settings/blog_settings.js | 6 - .../doctype/blog_settings/blog_settings.json | 161 ------- .../doctype/blog_settings/blog_settings.py | 46 -- .../blog_settings/test_blog_settings.py | 8 - frappe/website/doctype/blogger/README.md | 1 - frappe/website/doctype/blogger/__init__.py | 0 frappe/website/doctype/blogger/blogger.js | 6 - frappe/website/doctype/blogger/blogger.json | 102 ----- frappe/website/doctype/blogger/blogger.py | 52 --- .../website/doctype/blogger/test_blogger.py | 4 - .../website/doctype/blogger/test_records.json | 17 - .../test_website_route_meta.py | 12 +- frappe/website/workspace/website/website.json | 52 +-- frappe/www/rss.py | 47 --- frappe/www/rss.xml | 18 - 66 files changed, 572 insertions(+), 2491 deletions(-) delete mode 100644 frappe/public/scss/website/blog.scss delete mode 100644 frappe/templates/includes/blog/blogger.html delete mode 100644 frappe/templates/includes/blog/hero.html delete mode 100644 frappe/templates/includes/likes/__init__.py delete mode 100644 frappe/templates/includes/likes/likes.html delete mode 100644 frappe/templates/includes/likes/likes.py create mode 100644 frappe/tests/test_helpers.py delete mode 100644 frappe/website/doctype/blog_category/README.md delete mode 100644 frappe/website/doctype/blog_category/__init__.py delete mode 100644 frappe/website/doctype/blog_category/blog_category.js delete mode 100644 frappe/website/doctype/blog_category/blog_category.json delete mode 100644 frappe/website/doctype/blog_category/blog_category.py delete mode 100644 frappe/website/doctype/blog_category/templates/blog_category.html delete mode 100644 frappe/website/doctype/blog_category/templates/blog_category_row.html delete mode 100644 frappe/website/doctype/blog_category/test_blog_category.py delete mode 100644 frappe/website/doctype/blog_category/test_records.json delete mode 100644 frappe/website/doctype/blog_post/README.md delete mode 100644 frappe/website/doctype/blog_post/__init__.py delete mode 100644 frappe/website/doctype/blog_post/blog_post.js delete mode 100644 frappe/website/doctype/blog_post/blog_post.json delete mode 100644 frappe/website/doctype/blog_post/blog_post.py delete mode 100644 frappe/website/doctype/blog_post/blog_post_list.js delete mode 100644 frappe/website/doctype/blog_post/templates/blog_post.html delete mode 100644 frappe/website/doctype/blog_post/templates/blog_post_list.html delete mode 100644 frappe/website/doctype/blog_post/templates/blog_post_row.html delete mode 100644 frappe/website/doctype/blog_post/test_blog_post.py delete mode 100644 frappe/website/doctype/blog_post/test_records.json delete mode 100644 frappe/website/doctype/blog_settings/README.md delete mode 100644 frappe/website/doctype/blog_settings/__init__.py delete mode 100644 frappe/website/doctype/blog_settings/blog_settings.js delete mode 100644 frappe/website/doctype/blog_settings/blog_settings.json delete mode 100644 frappe/website/doctype/blog_settings/blog_settings.py delete mode 100644 frappe/website/doctype/blog_settings/test_blog_settings.py delete mode 100644 frappe/website/doctype/blogger/README.md delete mode 100644 frappe/website/doctype/blogger/__init__.py delete mode 100644 frappe/website/doctype/blogger/blogger.js delete mode 100644 frappe/website/doctype/blogger/blogger.json delete mode 100644 frappe/website/doctype/blogger/blogger.py delete mode 100644 frappe/website/doctype/blogger/test_blogger.py delete mode 100644 frappe/website/doctype/blogger/test_records.json delete mode 100644 frappe/www/rss.py delete mode 100644 frappe/www/rss.xml diff --git a/cypress/integration/awesome_bar.js b/cypress/integration/awesome_bar.js index 72d078a720..9b27516c2b 100644 --- a/cypress/integration/awesome_bar.js +++ b/cypress/integration/awesome_bar.js @@ -4,9 +4,9 @@ context("Awesome Bar", () => { cy.login(); cy.visit("/app/todo"); // Make sure ToDo filters are cleared. cy.clear_filters(); - cy.visit("/app/blog-post"); // Make sure Blog Post filters are cleared. + cy.visit("/app/web-page"); // Make sure Blog Post filters are cleared. cy.clear_filters(); - cy.visit("/app/website"); // Go to some other page. + cy.visit("/app/build"); // Go to some other page. }); beforeEach(() => { @@ -53,19 +53,19 @@ context("Awesome Bar", () => { }); it("navigates to another doctype, filter not bleeding", () => { - cy.get("@awesome_bar").type("blog post"); + cy.get("@awesome_bar").type("web page"); cy.wait(150); // Wait a bit before hitting enter. cy.get("@awesome_bar").type("{enter}"); - cy.get(".title-text").should("contain", "Blog Post"); + cy.get(".title-text").should("contain", "Web Page"); cy.wait(200); // Wait a bit longer before checking the filter. cy.location("search").should("be.empty"); }); it("navigates to new form", () => { - cy.get("@awesome_bar").type("new blog post"); + cy.get("@awesome_bar").type("new web page"); cy.wait(150); // Wait a bit before hitting enter cy.get("@awesome_bar").type("{enter}"); - cy.get(".title-text:visible").should("have.text", "New Blog Post"); + cy.get(".title-text:visible").should("have.text", "New Web Page"); }); it("calculates math expressions", () => { diff --git a/cypress/integration/sidebar.js b/cypress/integration/sidebar.js index b1a487bc8d..5d170ca9ca 100644 --- a/cypress/integration/sidebar.js +++ b/cypress/integration/sidebar.js @@ -43,7 +43,7 @@ context("Sidebar", () => { .window() .its("frappe") .then((frappe) => { - return frappe.call("frappe.tests.ui_test_helpers.create_blog_post"); + return frappe.call("frappe.tests.ui_test_helpers.create_doctype_for_attachment"); }); }); @@ -53,7 +53,7 @@ context("Sidebar", () => { }).then((todo) => { verify_attachment_visibility(`todo/${todo.message.name}`, true); }); - verify_attachment_visibility("blog-post/test-blog-attachment-post", false); + verify_attachment_visibility("test-blog-category/_Test Blog Category 2", false); }); it("Verify attachment accessibility UX", () => { diff --git a/cypress/integration/table_multiselect.js b/cypress/integration/table_multiselect.js index 8261b5b384..0850cae7b5 100644 --- a/cypress/integration/table_multiselect.js +++ b/cypress/integration/table_multiselect.js @@ -8,7 +8,7 @@ context("Table MultiSelect", () => { it("select value from multiselect dropdown", () => { cy.new_form("Assignment Rule"); cy.fill_field("__newname", name); - cy.fill_field("document_type", "Blog Post"); + cy.fill_field("document_type", "Web Page"); cy.get(".section-head").contains("Assignment Rules").scrollIntoView(); cy.fill_field("assign_condition", 'status=="Open"', "Code"); cy.get('input[data-fieldname="users"]').focus().as("input"); diff --git a/frappe/core/doctype/comment/test_comment.py b/frappe/core/doctype/comment/test_comment.py index b24641e3b6..0c80c05eb7 100644 --- a/frappe/core/doctype/comment/test_comment.py +++ b/frappe/core/doctype/comment/test_comment.py @@ -5,11 +5,16 @@ import json import frappe from frappe.templates.includes.comments.comments import add_comment from frappe.tests import IntegrationTestCase +from frappe.tests.test_helpers import setup_for_tests from frappe.tests.test_model_utils import set_user -from frappe.website.doctype.blog_post.test_blog_post import make_test_blog + +EXTRA_TEST_RECORD_DEPENDENCIES = ["Web Page"] class TestComment(IntegrationTestCase): + def setUp(self): + setup_for_tests() + def test_comment_creation(self): test_doc = frappe.get_doc(doctype="ToDo", description="test") test_doc.insert() @@ -42,16 +47,16 @@ class TestComment(IntegrationTestCase): # test via blog def test_public_comment(self): - test_blog = make_test_blog() + test_blog = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") - frappe.db.delete("Comment", {"reference_doctype": "Blog Post"}) + frappe.db.delete("Comment", {"reference_doctype": "Test Blog Post"}) add_comment_args = { "comment": "Good comment with 10 chars", "comment_email": "test@test.com", "comment_by": "Good Tester", "reference_doctype": test_blog.doctype, "reference_name": test_blog.name, - "route": test_blog.route, + "route": f"blog/{test_blog.doctype}/{test_blog.name}", } add_comment(**add_comment_args) @@ -64,7 +69,7 @@ class TestComment(IntegrationTestCase): 1, ) - frappe.db.delete("Comment", {"reference_doctype": "Blog Post"}) + frappe.db.delete("Comment", {"reference_doctype": "Test Blog Post"}) add_comment_args.update(comment="pleez vizits my site http://mysite.com", comment_by="bad commentor") add_comment(**add_comment_args) @@ -81,7 +86,7 @@ class TestComment(IntegrationTestCase): ) # test for filtering html and css injection elements - frappe.db.delete("Comment", {"reference_doctype": "Blog Post"}) + frappe.db.delete("Comment", {"reference_doctype": "Test Blog Post"}) add_comment_args.update(comment="Comment", comment_by="hacker") add_comment(**add_comment_args) @@ -96,26 +101,10 @@ class TestComment(IntegrationTestCase): test_blog.delete() - @IntegrationTestCase.change_settings("Blog Settings", {"allow_guest_to_comment": 0}) - def test_guest_cannot_comment(self): - test_blog = make_test_blog() - with set_user("Guest"): - self.assertEqual( - add_comment( - comment="Good comment with 10 chars", - comment_email="mail@example.org", - comment_by="Good Tester", - reference_doctype="Blog Post", - reference_name=test_blog.name, - route=test_blog.route, - ), - None, - ) - def test_user_not_logged_in(self): some_system_user = frappe.db.get_value("User", {"name": ("not in", frappe.STANDARD_USERS)}) - test_blog = make_test_blog() + test_blog = frappe.get_doc("Web Page", "test-web-page-1") with set_user("Guest"): self.assertRaises( frappe.ValidationError, @@ -123,7 +112,7 @@ class TestComment(IntegrationTestCase): comment="Good comment with 10 chars", comment_email=some_system_user, comment_by="Good Tester", - reference_doctype="Blog Post", + reference_doctype="Web Page", reference_name=test_blog.name, route=test_blog.route, ) diff --git a/frappe/core/doctype/user/user.json b/frappe/core/doctype/user/user.json index dc9d2bc6a5..c4a90e266f 100644 --- a/frappe/core/doctype/user/user.json +++ b/frappe/core/doctype/user/user.json @@ -845,11 +845,6 @@ "link_doctype": "Contact", "link_fieldname": "user" }, - { - "group": "Profile", - "link_doctype": "Blogger", - "link_fieldname": "user" - }, { "group": "Logs", "link_doctype": "Access Log", diff --git a/frappe/core/doctype/user_permission/test_user_permission.py b/frappe/core/doctype/user_permission/test_user_permission.py index 47534ee5d8..afcc41279f 100644 --- a/frappe/core/doctype/user_permission/test_user_permission.py +++ b/frappe/core/doctype/user_permission/test_user_permission.py @@ -8,7 +8,7 @@ from frappe.core.doctype.user_permission.user_permission import ( ) from frappe.permissions import add_permission, has_user_permission from frappe.tests import IntegrationTestCase -from frappe.website.doctype.blog_post.test_blog_post import make_test_blog +from frappe.tests.test_helpers import setup_for_tests class TestUserPermission(IntegrationTestCase): @@ -23,6 +23,7 @@ class TestUserPermission(IntegrationTestCase): frappe.db.sql_ddl("DROP TABLE IF EXISTS `tabPerson`") frappe.delete_doc_if_exists("DocType", "Doc A") frappe.db.sql_ddl("DROP TABLE IF EXISTS `tabDoc A`") + setup_for_tests() def test_default_user_permission_validation(self): user = create_user("test_default_permission@example.com") @@ -39,27 +40,27 @@ class TestUserPermission(IntegrationTestCase): add_user_permissions(param) # create a duplicate entry with default perm_user = create_user("test_default_corectness2@example.com") - test_blog = make_test_blog() - param = get_params(perm_user, "Blog Post", test_blog.name, is_default=1, hide_descendants=1) + test_blog = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") + param = get_params(perm_user, "Test Blog Post", test_blog.name, is_default=1, hide_descendants=1) add_user_permissions(param) frappe.db.delete("User Permission", filters={"for_value": test_blog.name}) - frappe.delete_doc("Blog Post", test_blog.name) + frappe.delete_doc("Test Blog Post", test_blog.name) def test_default_user_permission(self): frappe.set_user("Administrator") user = create_user("test_user_perm1@example.com", "Website Manager") for category in ["general", "public"]: - if not frappe.db.exists("Blog Category", category): - frappe.get_doc({"doctype": "Blog Category", "title": category}).insert() + if not frappe.db.exists("Test Blog Category", category): + frappe.get_doc({"doctype": "Test Blog Category", "title": category}).insert() - param = get_params(user, "Blog Category", "general", is_default=1) + param = get_params(user, "Test Blog Category", "general", is_default=1) add_user_permissions(param) - param = get_params(user, "Blog Category", "public") + param = get_params(user, "Test Blog Category", "public") add_user_permissions(param) frappe.set_user("test_user_perm1@example.com") - doc = frappe.new_doc("Blog Post") + doc = frappe.new_doc("Test Blog Post") self.assertEqual(doc.blog_category, "general") frappe.set_user("Administrator") diff --git a/frappe/desk/doctype/event/test_event.py b/frappe/desk/doctype/event/test_event.py index 01cd92d705..76679a05b7 100644 --- a/frappe/desk/doctype/event/test_event.py +++ b/frappe/desk/doctype/event/test_event.py @@ -1,6 +1,5 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # License: MIT. See LICENSE -"""Use blog post test to test user permissions logic""" import json from datetime import date diff --git a/frappe/desk/doctype/todo/test_todo.py b/frappe/desk/doctype/todo/test_todo.py index 6fa713a279..60673aa34e 100644 --- a/frappe/desk/doctype/todo/test_todo.py +++ b/frappe/desk/doctype/todo/test_todo.py @@ -6,7 +6,7 @@ from frappe.model.db_query import DatabaseQuery from frappe.permissions import add_permission, reset_perms from frappe.tests import IntegrationTestCase -EXTRA_TEST_RECORD_DEPENDENCIES = ["User"] +EXTRA_TEST_RECORD_DEPENDENCIES = ["User", "Web Page"] class TestToDo(IntegrationTestCase): @@ -93,8 +93,8 @@ class TestToDo(IntegrationTestCase): frappe.set_user("Administrator") - test_user.add_roles("Blogger") - add_permission("ToDo", "Blogger") + test_user.add_roles("Website Manager") + add_permission("ToDo", "Website Manager") frappe.set_user("test4@example.com") @@ -103,7 +103,7 @@ class TestToDo(IntegrationTestCase): self.assertFalse(todo1.has_permission("write")) frappe.set_user("Administrator") - test_user.remove_roles("Blogger") + test_user.remove_roles("Website Manager") reset_perms("ToDo") clear_permissions_cache("ToDo") frappe.db.rollback() diff --git a/frappe/email/test_smtp.py b/frappe/email/test_smtp.py index 8964c48965..dc5faccdd2 100644 --- a/frappe/email/test_smtp.py +++ b/frappe/email/test_smtp.py @@ -47,11 +47,9 @@ class TestSMTP(IntegrationTestCase): password="password", enable_outgoing=1, default_outgoing=1, - append_to="Blog Post", - ) - self.assertEqual( - EmailAccount.find_outgoing(match_by_doctype="Blog Post").email_id, "append_to@gmail.com" + append_to="Todo", ) + self.assertEqual(EmailAccount.find_outgoing(match_by_doctype="Todo").email_id, "append_to@gmail.com") # add back the mail_server frappe.conf["mail_server"] = mail_server diff --git a/frappe/hooks.py b/frappe/hooks.py index de7e59b34b..284fe14676 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -54,7 +54,6 @@ web_include_icons = [ email_css = ["email.bundle.css"] website_route_rules = [ - {"from_route": "/blog/", "to_route": "Blog Post"}, {"from_route": "/kb/", "to_route": "Help Article"}, {"from_route": "/profile", "to_route": "me"}, {"from_route": "/app/", "to_route": "app"}, @@ -352,7 +351,6 @@ global_search_doctypes = { {"doctype": "ToDo"}, {"doctype": "Note"}, {"doctype": "Event"}, - {"doctype": "Blog Post"}, {"doctype": "Dashboard"}, {"doctype": "Country"}, {"doctype": "Currency"}, diff --git a/frappe/integrations/doctype/ldap_settings/test_ldap_settings.py b/frappe/integrations/doctype/ldap_settings/test_ldap_settings.py index 31ba3d0963..85bf3b4af9 100644 --- a/frappe/integrations/doctype/ldap_settings/test_ldap_settings.py +++ b/frappe/integrations/doctype/ldap_settings/test_ldap_settings.py @@ -613,7 +613,7 @@ class Test_OpenLDAP(LDAP_TestCase, TestCase): "ldap_group": "Administrators", "erpnext_role": "System Manager", }, - {"doctype": "LDAP Group Mapping", "ldap_group": "Users", "erpnext_role": "Blogger"}, + {"doctype": "LDAP Group Mapping", "ldap_group": "Users", "erpnext_role": "Website Manager"}, {"doctype": "LDAP Group Mapping", "ldap_group": "Group3", "erpnext_role": "Accounts User"}, ] LDAP_USERNAME_FIELD = "uid" @@ -637,7 +637,7 @@ class Test_ActiveDirectory(LDAP_TestCase, TestCase): "ldap_group": "Domain Administrators", "erpnext_role": "System Manager", }, - {"doctype": "LDAP Group Mapping", "ldap_group": "Domain Users", "erpnext_role": "Blogger"}, + {"doctype": "LDAP Group Mapping", "ldap_group": "Domain Users", "erpnext_role": "Website Manager"}, { "doctype": "LDAP Group Mapping", "ldap_group": "Enterprise Administrators", diff --git a/frappe/patches/v16_0/add_module_deprecation_warning.py b/frappe/patches/v16_0/add_module_deprecation_warning.py index 3bd105a141..fa0ee5fda1 100644 --- a/frappe/patches/v16_0/add_module_deprecation_warning.py +++ b/frappe/patches/v16_0/add_module_deprecation_warning.py @@ -6,6 +6,7 @@ def execute(): "Social Module/ Energy Points System": ("eps", "system"), "Offsite Backup Integrations (Google Drive, S3, Dropbox)": ("offsite_backups", "intergration"), "Newsletter": ("newsletter", "functionality"), + "Blogs": ("blogs", "functionality"), } for module, (app, system_type) in module_app_map.items(): click.secho( diff --git a/frappe/public/scss/website/blog.scss b/frappe/public/scss/website/blog.scss deleted file mode 100644 index 15cabf9192..0000000000 --- a/frappe/public/scss/website/blog.scss +++ /dev/null @@ -1,138 +0,0 @@ -:root { - --comment-timeline-bottom: 60px; - --comment-timeline-top: 8px; -} - -.blog-list { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; - - &.result { - border-bottom: none; - } -} - -.blog-list-content { - margin-bottom: 3rem; -} - -.blog-card { - margin-bottom: 2rem; - position: relative; - width: 100%; - - .card { - border: 1px solid var(--border-color); - } - - .card-body { - display: flex; - flex-direction: column; - justify-content: space-between; - } - - .card-img-top { - width: 100%; - overflow: hidden; - height: 12rem; - - img { - min-height: 12rem; - min-width: 100%; - object-fit: cover; - } - - .default-cover { - height: 100%; - width: 100%; - padding: 1rem; - display: flex; - align-items: center; - justify-content: center; - background: $gray-200; - - font-size: 1.2rem; - font-weight: 500; - color: $gray-600; - } - } - - .blog-card-footer { - display: flex; - align-items: top; - margin-top: 0.5rem; - - .avatar { - margin-top: 0.4rem; - margin-right: 0.5rem; - } - } -} - -.blog-container { - font-size: 1rem; - max-width: 800px; - margin: 0px auto; - - .blog-title { - margin-top: 1rem; - - @include media-breakpoint-up(xl) { - line-height: 1; - font-size: $font-size-4xl; - } - } - - .blog-footer { - display: flex; - justify-content: space-between; - color: $text-muted; - margin-top: 3rem; - } - - .blog-intro { - font-size: 1.125rem; - font-weight: 400; - } - - .blog-content { - margin-bottom: 1rem; - - .blog-header { - margin-bottom: 3rem; - margin-top: 5rem; - } - .from-markdown a { - text-decoration: underline; - } - } - - .blog-comments { - margin-top: 1rem; - margin-bottom: 5rem; - } - - .feedback-item svg { - vertical-align: sub; - } - - .blog-feedback { - display: inline-flex; - .like-icon { - cursor: pointer; - - use { - stroke: var(--gray-800); - --icon-stroke: transparent; - } - } - .like-icon.liked { - use { - stroke: var(--gray-800); - --icon-stroke: var(--red-500); - } - } - } -} diff --git a/frappe/public/scss/website/index.scss b/frappe/public/scss/website/index.scss index f1dc450859..fc02a7b891 100644 --- a/frappe/public/scss/website/index.scss +++ b/frappe/public/scss/website/index.scss @@ -21,7 +21,6 @@ @import "website_avatar"; @import "web_form"; @import "page_builder"; -@import "blog"; @import "markdown"; @import "sidebar"; @import "portal"; diff --git a/frappe/templates/includes/blog/blogger.html b/frappe/templates/includes/blog/blogger.html deleted file mode 100644 index bc36501ddd..0000000000 --- a/frappe/templates/includes/blog/blogger.html +++ /dev/null @@ -1,14 +0,0 @@ -{% from "frappe/templates/includes/avatar_macro.html" import avatar %} - -
- {{ avatar(full_name=blogger_info.full_name, image=blogger_info.avatar, size='avatar-large') }} - -
-
- {{ blogger_info.full_name }} -
- {% if blogger_info.bio %} -

{{ blogger_info.bio }}

- {% endif %} -
-
diff --git a/frappe/templates/includes/blog/hero.html b/frappe/templates/includes/blog/hero.html deleted file mode 100644 index b8a39e5c9c..0000000000 --- a/frappe/templates/includes/blog/hero.html +++ /dev/null @@ -1,12 +0,0 @@ -{% if blog_title and not (form_dict.txt or form_dict.by) %} -
-
-

- {{ blog_title }} -

- {% if blog_introduction -%} -

{{ blog_introduction }}

- {%- endif %} -
-
-{% endif %} diff --git a/frappe/templates/includes/comments/comments.py b/frappe/templates/includes/comments/comments.py index f9ba40d7cb..33d5fddbf3 100644 --- a/frappe/templates/includes/comments/comments.py +++ b/frappe/templates/includes/comments/comments.py @@ -6,7 +6,6 @@ import frappe from frappe import _, scrub from frappe.rate_limiter import rate_limit from frappe.utils.html_utils import clean_html -from frappe.website.doctype.blog_settings.blog_settings import get_comment_limit from frappe.website.utils import clear_cache URLS_COMMENT_PATTERN = re.compile( @@ -15,17 +14,32 @@ URLS_COMMENT_PATTERN = re.compile( EMAIL_PATTERN = re.compile(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", re.IGNORECASE) +def get_limit(): + method = frappe.get_hooks("comment_rate_limit") + if not method: + return 5 + else: + limit = frappe.call(method[0]) + return limit + + @frappe.whitelist(allow_guest=True) -@rate_limit(key="reference_name", limit=get_comment_limit, seconds=60 * 60) +# @rate_limit(key="reference_name", limit=get_limit, seconds=60 * 60) def add_comment(comment, comment_email, comment_by, reference_doctype, reference_name, route): if frappe.session.user == "Guest": - if reference_doctype not in ("Blog Post", "Web Page"): + allowed_doctypes = ["Web Page"] + comments_permission_config = frappe.get_hooks("has_comment_permission") + guest_allowed = False + if len(comments_permission_config): + if comments_permission_config["doctype"]: + allowed_doctypes.append(comments_permission_config["doctype"][0]) + check_permission_method = comments_permission_config["method"] + guest_allowed = frappe.call(check_permission_method[0], ref_doctype=reference_doctype) + if reference_doctype not in allowed_doctypes: return - if reference_doctype == "Blog Post" and not frappe.db.get_single_value( - "Blog Settings", "allow_guest_to_comment" - ): - return + if not guest_allowed: + frappe.throw(_("Please login to post a comment.")) if frappe.db.exists("User", comment_email): frappe.throw(_("Please login to post a comment.")) @@ -47,28 +61,6 @@ def add_comment(comment, comment_email, comment_by, reference_doctype, reference if route: clear_cache(route) - if doc.get("route"): - url = f"{frappe.utils.get_request_site_address()}/{doc.route}#{comment.name}" - else: - url = f"{frappe.utils.get_request_site_address()}/app/{scrub(doc.doctype)}/{doc.name}#comment-{comment.name}" - - content = comment.content + "

{}

".format( - url, _("View Comment") - ) - - if doc.doctype != "Blog Post" or doc.enable_email_notification: - # notify creator - creator_email = frappe.db.get_value("User", doc.owner, "email") or doc.owner - subject = _("New Comment on {0}: {1}").format(doc.doctype, doc.get_title()) - - frappe.sendmail( - recipients=creator_email, - subject=subject, - message=content, - reference_doctype=doc.doctype, - reference_name=doc.name, - ) - # revert with template if all clear (no backlinks) template = frappe.get_template("templates/includes/comments/comment.html") return template.render({"comment": comment.as_dict()}) diff --git a/frappe/templates/includes/likes/__init__.py b/frappe/templates/includes/likes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/templates/includes/likes/likes.html b/frappe/templates/includes/likes/likes.html deleted file mode 100644 index 4a59ee75ed..0000000000 --- a/frappe/templates/includes/likes/likes.html +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/frappe/templates/includes/likes/likes.py b/frappe/templates/includes/likes/likes.py deleted file mode 100644 index 884835c056..0000000000 --- a/frappe/templates/includes/likes/likes.py +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -import frappe -from frappe import _ -from frappe.rate_limiter import rate_limit -from frappe.website.doctype.blog_settings.blog_settings import get_like_limit -from frappe.website.utils import clear_cache - - -@frappe.whitelist(allow_guest=True) -@rate_limit(key="reference_name", limit=get_like_limit, seconds=60 * 60) -def like(reference_doctype, reference_name, like, route=""): - like = frappe.parse_json(like) - ref_doc = frappe.get_doc(reference_doctype, reference_name) - if ref_doc.disable_likes == 1: - return - - if like: - liked = add_like(reference_doctype, reference_name) - else: - liked = delete_like(reference_doctype, reference_name) - - # since likes are embedded in the page, clear the web cache - if route: - clear_cache(route) - - if like and ref_doc.enable_email_notification: - ref_doc_title = ref_doc.get_title() - subject = _("Like on {0}: {1}").format(reference_doctype, ref_doc_title) - content = _("You have received a ❤️ like on your blog post") - message = f"

{content} {ref_doc_title}

" - message = message + "

{}

".format( - frappe.utils.get_request_site_address(), ref_doc.route, _("View Blog Post") - ) - - # notify creator - frappe.sendmail( - recipients=frappe.db.get_value("User", ref_doc.owner, "email") or ref_doc.owner, - subject=subject, - message=message, - reference_doctype=ref_doc.doctype, - reference_name=ref_doc.name, - ) - - return liked - - -def add_like(reference_doctype, reference_name): - user = frappe.session.user - - like = frappe.new_doc("Comment") - like.comment_type = "Like" - like.comment_email = user - like.reference_doctype = reference_doctype - like.reference_name = reference_name - like.content = "Liked by: " + user - if user == "Guest": - like.ip_address = frappe.local.request_ip - like.save(ignore_permissions=True) - return True - - -def delete_like(reference_doctype, reference_name): - user = frappe.session.user - - filters = { - "comment_type": "Like", - "comment_email": user, - "reference_doctype": reference_doctype, - "reference_name": reference_name, - } - - if user == "Guest": - filters["ip_address"] = frappe.local.request_ip - - frappe.db.delete("Comment", filters) - return False diff --git a/frappe/tests/test_api_v2.py b/frappe/tests/test_api_v2.py index 54a802aa62..de1831729c 100644 --- a/frappe/tests/test_api_v2.py +++ b/frappe/tests/test_api_v2.py @@ -188,7 +188,7 @@ class TestMethodAPIV2(FrappeAPITestCase): def test_shorthand_controller_methods(self): shorthand_response = self.get(self.method("User", "get_all_roles"), {"sid": self.sid}) - self.assertIn("Blogger", shorthand_response.json["data"]) + self.assertIn("Website Manager", shorthand_response.json["data"]) expanded_response = self.get( self.method("frappe.core.doctype.user.user.get_all_roles"), {"sid": self.sid} diff --git a/frappe/tests/test_db_query.py b/frappe/tests/test_db_query.py index aaa6d79c6d..26306dab41 100644 --- a/frappe/tests/test_db_query.py +++ b/frappe/tests/test_db_query.py @@ -15,10 +15,11 @@ from frappe.model.db_query import DatabaseQuery, get_between_date_filter from frappe.permissions import add_user_permission, clear_user_permissions_for_doctype from frappe.query_builder import Column from frappe.tests import IntegrationTestCase +from frappe.tests.test_helpers import setup_for_tests from frappe.tests.test_query_builder import db_type_is, run_only_if from frappe.utils.testutils import add_custom_field, clear_custom_fields -EXTRA_TEST_RECORD_DEPENDENCIES = ["User", "Blog Post", "Blog Category", "Blogger"] +EXTRA_TEST_RECORD_DEPENDENCIES = ["User"] @contextmanager @@ -41,15 +42,16 @@ def setup_test_user(set_user=False): @contextmanager def setup_patched_blog_post(): add_child_table_to_blog_post() - make_property_setter("Blog Post", "published", "permlevel", 1, "Int") - reset("Blog Post") - add("Blog Post", "Website Manager", 1) - update("Blog Post", "Website Manager", 1, "write", 1) + make_property_setter("Test Blog Post", "published", "permlevel", 1, "Int") + reset("Test Blog Post") + add("Test Blog Post", "Website Manager", 1) + update("Test Blog Post", "Website Manager", 1, "write", 1) yield class TestDBQuery(IntegrationTestCase): def setUp(self): + setup_for_tests() frappe.set_user("Administrator") def test_basic(self): @@ -192,14 +194,14 @@ class TestDBQuery(IntegrationTestCase): todo.delete() def test_build_match_conditions(self): - clear_user_permissions_for_doctype("Blog Post", "test2@example.com") + clear_user_permissions_for_doctype("Test Blog Post", "test2@example.com") test2user = frappe.get_doc("User", "test2@example.com") test2user.add_roles("Blogger") frappe.set_user("test2@example.com") # this will get match conditions for Blog Post - build_match_conditions = DatabaseQuery("Blog Post").build_match_conditions + build_match_conditions = DatabaseQuery("Test Blog Post").build_match_conditions # Before any user permission is applied # get as filters @@ -207,20 +209,20 @@ class TestDBQuery(IntegrationTestCase): # get as conditions self.assertEqual(build_match_conditions(as_condition=True), "") - add_user_permission("Blog Post", "-test-blog-post", "test2@example.com", True) - add_user_permission("Blog Post", "-test-blog-post-1", "test2@example.com", True) + add_user_permission("Test Blog Post", "_Test Blog Post", "test2@example.com", True) + add_user_permission("Test Blog Post", "_Test Blog Post 1", "test2@example.com", True) # After applying user permission # get as filters self.assertTrue( - {"Blog Post": ["-test-blog-post-1", "-test-blog-post"]} + {"Test Blog Post": ["_Test Blog Post 1", "_Test Blog Post"]} in build_match_conditions(as_condition=False) ) # get as conditions if frappe.db.db_type == "mariadb": - assertion_string = """(((ifnull(`tabBlog Post`.`name`, '')='' or `tabBlog Post`.`name` in ('-test-blog-post-1', '-test-blog-post'))))""" + assertion_string = """(((ifnull(`tabTest Blog Post`.`name`, '')='' or `tabTest Blog Post`.`name` in ('_Test Blog Post 1', '_Test Blog Post'))))""" else: - assertion_string = """(((ifnull(cast(`tabBlog Post`.`name` as varchar), '')='' or cast(`tabBlog Post`.`name` as varchar) in ('-test-blog-post-1', '-test-blog-post'))))""" + assertion_string = """(((ifnull(cast(`tabBlog Post`.`name` as varchar), '')='' or cast(`tabBlog Post`.`name` as varchar) in ('_Test Blog Post 1', '_Test Blog Post'))))""" self.assertEqual(build_match_conditions(as_condition=True), assertion_string) @@ -848,7 +850,7 @@ class TestDBQuery(IntegrationTestCase): def test_permlevel_fields(self): with setup_patched_blog_post(), setup_test_user(set_user=True): data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "published"], limit=1, @@ -858,7 +860,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 1) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "`published`"], limit=1, @@ -868,9 +870,9 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 1) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, - fields=["name", "`tabBlog Post`.`published`"], + fields=["name", "`tabTest Blog Post`.`published`"], limit=1, ) self.assertFalse("published" in data[0]) @@ -878,7 +880,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 1) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "`tabTest Child`.`test_field`"], limit=1, @@ -888,7 +890,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 1) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "MAX(`published`)"], limit=1, @@ -897,7 +899,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 1) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "LAST(published)"], limit=1, @@ -906,7 +908,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 1) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "MAX(`modified`)"], limit=1, @@ -916,7 +918,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 2) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "now() abhi"], limit=1, @@ -925,7 +927,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 2) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "'LABEL'"], limit=1, @@ -935,7 +937,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 2) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "COUNT(*) as count"], limit=1, @@ -946,7 +948,7 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 2) data = frappe.get_list( - "Blog Post", + "Test Blog Post", filters={"published": 1}, fields=["name", "COUNT(*) count"], limit=1, @@ -957,17 +959,18 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(len(data[0]), 2) data = frappe.get_list( - "Blog Post", + "Test Blog Post", fields=[ "name", "blogger.full_name as blogger_full_name", - "blog_category.description", + "blog_category.title", ], limit=1, ) + print(data[0]) self.assertTrue("name" in data[0]) self.assertTrue("blogger_full_name" in data[0]) - self.assertTrue("description" in data[0]) + self.assertTrue("title" in data[0]) def test_cast_name(self): from frappe.core.doctype.doctype.test_doctype import new_doctype @@ -1296,10 +1299,10 @@ class TestReportView(IntegrationTestCase): user.remove_roles(*user_roles) user.add_roles("Blogger") - make_property_setter("Blog Post", "published", "permlevel", 1, "Int") - reset("Blog Post") - add("Blog Post", "Website Manager", 1) - update("Blog Post", "Website Manager", 1, "write", 1) + make_property_setter("Test Blog Post", "published", "permlevel", 1, "Int") + reset("Test Blog Post") + add("Test Blog Post", "Website Manager", 1) + update("Test Blog Post", "Website Manager", 1, "write", 1) frappe.set_user(user.name) @@ -1308,7 +1311,7 @@ class TestReportView(IntegrationTestCase): frappe.local.form_dict = frappe._dict( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "fields": ["published", "title", "`tabTest Child`.`test_field`"], } ) @@ -1318,7 +1321,7 @@ class TestReportView(IntegrationTestCase): self.assertListEqual(response["keys"], ["title"]) frappe.local.form_dict = frappe._dict( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "fields": ["*"], } ) @@ -1335,7 +1338,7 @@ class TestReportView(IntegrationTestCase): # Admin should be able to see access all fields frappe.local.form_dict = frappe._dict( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "fields": ["published", "title", "`tabTest Child`.`test_field`"], } ) @@ -1377,7 +1380,7 @@ class TestReportView(IntegrationTestCase): frappe.local.request.method = "POST" frappe.local.form_dict = frappe._dict( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "fields": ["published", "title", "`tabTest Child`.`test_field`"], } ) @@ -1387,7 +1390,7 @@ class TestReportView(IntegrationTestCase): self.assertListEqual(response["keys"], ["title"]) frappe.local.form_dict = frappe._dict( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "fields": ["*"], } ) @@ -1396,7 +1399,7 @@ class TestReportView(IntegrationTestCase): self.assertNotIn("published", response["keys"]) # If none of the fields are accessible then result should be empty - self.assertEqual(frappe.get_list("Blog Post", "published"), []) + self.assertEqual(frappe.get_list("Test Blog Post", "published"), []) def test_reportview_get_admin(self): # Admin should be able to see access all fields @@ -1405,7 +1408,7 @@ class TestReportView(IntegrationTestCase): frappe.local.request.method = "POST" frappe.local.form_dict = frappe._dict( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "fields": ["published", "title", "`tabTest Child`.`test_field`"], } ) @@ -1441,8 +1444,8 @@ def add_child_table_to_blog_post(): ) child_table.insert(ignore_permissions=True, ignore_if_duplicate=True) - clear_custom_fields("Blog Post") - add_custom_field("Blog Post", "child_table", "Table", child_table.name) + clear_custom_fields("Test Blog Post") + add_custom_field("Test Blog Post", "child_table", "Table", child_table.name) def create_event(subject="_Test Event", starts_on=None): diff --git a/frappe/tests/test_defaults.py b/frappe/tests/test_defaults.py index a46195f2b5..11e51bf145 100644 --- a/frappe/tests/test_defaults.py +++ b/frappe/tests/test_defaults.py @@ -73,7 +73,7 @@ class TestDefaults(IntegrationTestCase): @run_only_if(db_type_is.MARIADB) def test_user_permission_defaults(self): # Create user permission - create_user("user_default_test@example.com", "Blogger") + create_user("user_default_test@example.com", "Website Manager") frappe.set_user("user_default_test@example.com") set_global_default("Country", "") clear_user_default("Country") diff --git a/frappe/tests/test_form_load.py b/frappe/tests/test_form_load.py index 194ef28612..6cf69380a3 100644 --- a/frappe/tests/test_form_load.py +++ b/frappe/tests/test_form_load.py @@ -5,10 +5,9 @@ from frappe.core.page.permission_manager.permission_manager import add, reset, u from frappe.custom.doctype.property_setter.property_setter import make_property_setter from frappe.desk.form.load import get_docinfo, getdoc, getdoctype from frappe.tests import IntegrationTestCase +from frappe.tests.test_helpers import setup_for_tests from frappe.utils.file_manager import save_file -EXTRA_TEST_RECORD_DEPENDENCIES = ["Blog Category", "Blogger"] - class TestFormLoad(IntegrationTestCase): def test_load(self): @@ -23,10 +22,11 @@ class TestFormLoad(IntegrationTestCase): self.assertTrue(meta.get("__calendar_js")) def test_fieldlevel_permissions_in_load(self): + setup_for_tests() blog = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category-1", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category 1", "blog_intro": "Test Blog Intro", "blogger": "_Test Blogger 1", "content": "Test Blog Content", @@ -43,8 +43,8 @@ class TestFormLoad(IntegrationTestCase): user.remove_roles(*user_roles) user.add_roles("Blogger") - blog_post_property_setter = make_property_setter("Blog Post", "published", "permlevel", 1, "Int") - reset("Blog Post") + blog_post_property_setter = make_property_setter("Test Blog Post", "published", "permlevel", 1, "Int") + reset("Test Blog Post") # test field level permission before role level permissions are defined frappe.set_user(user.name) @@ -63,8 +63,8 @@ class TestFormLoad(IntegrationTestCase): # test field level permission after role level permissions are defined frappe.set_user("Administrator") - add("Blog Post", "Website Manager", 1) - update("Blog Post", "Website Manager", 1, "write", 1) + add("Test Blog Post", "Website Manager", 1) + update("Test Blog Post", "Website Manager", 1, "write", 1) frappe.set_user(user.name) blog_doc = get_blog(blog.name) @@ -86,7 +86,7 @@ class TestFormLoad(IntegrationTestCase): user.add_roles("Website Manager") frappe.set_user(user.name) - doc = frappe.get_doc("Blog Post", blog.name) + doc = frappe.get_doc("Test Blog Post", blog.name) doc.published = 1 doc.save() @@ -196,5 +196,5 @@ class TestFormLoad(IntegrationTestCase): def get_blog(blog_name): frappe.response.docs = [] - getdoc("Blog Post", blog_name) + getdoc("Test Blog Post", blog_name) return frappe.response.docs[0] diff --git a/frappe/tests/test_helpers.py b/frappe/tests/test_helpers.py new file mode 100644 index 0000000000..e70593fe96 --- /dev/null +++ b/frappe/tests/test_helpers.py @@ -0,0 +1,271 @@ +import frappe + + +def create_test_blog_post(): + test_blog_doc = frappe.get_doc( + { + "doctype": "DocType", + "name": "Test Blog Post", + "allow_guest_to_view": 1, + "module": "Custom", + "custom": 1, + "title_field": "title", + "autoname": "field:title", + "naming_rule": "By fieldname", + "make_attachments_public": 1, + "owner": "Administrator", + "fields": [ + { + "fieldname": "blog_category", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Test Blog Category", + "options": "Test Blog Category", + "reqd": 1, + }, + { + "fieldname": "blogger", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Test Blogger", + "options": "Test Blogger", + "reqd": 1, + }, + { + "description": "Description for listing page, in plain text, only a couple of lines. (max 200 characters)", + "fieldname": "blog_intro", + "fieldtype": "Small Text", + "label": "Blog Intro", + }, + { + "depends_on": "eval:doc.content_type === 'Rich Text'", + "fieldname": "content", + "fieldtype": "Text Editor", + "ignore_xss_filter": 1, + "in_global_search": 1, + "label": "Content", + }, + { + "fieldname": "title", + "fieldtype": "Data", + "in_global_search": 1, + "label": "Title", + "no_copy": 1, + "reqd": 1, + }, + { + "default": "0", + "fieldname": "published", + "fieldtype": "Check", + "hidden": 1, + "label": "Published", + }, + ], + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Website Manager", + "share": 1, + "write": 1, + }, + { + "create": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Blogger", + "share": 1, + "write": 1, + }, + ], + } + ) + test_blog_doc.insert(ignore_if_duplicate=True, ignore_links=True) + create_test_blog_records() + + +def create_test_blog_records(): + test_blog_records = [ + { + "blog_category": "_Test Blog Category", + "blog_intro": "Test Blog Intro", + "blogger": "_Test Blogger", + "content": "Test Blog Content", + "doctype": "Test Blog Post", + "title": "_Test Blog Post", + "published": 1, + }, + { + "blog_category": "_Test Blog Category 1", + "blog_intro": "Test Blog Intro", + "blogger": "_Test Blogger", + "content": "Test Blog Content", + "doctype": "Test Blog Post", + "title": "_Test Blog Post 1", + "published": 1, + }, + { + "blog_category": "_Test Blog Category 1", + "blog_intro": "Test Blog Intro", + "blogger": "_Test Blogger 1", + "content": "Test Blog Content", + "doctype": "Test Blog Post", + "title": "_Test Blog Post 2", + "published": 0, + }, + { + "blog_category": "_Test Blog Category 1", + "blog_intro": "Test Blog Intro", + "blogger": "_Test Blogger 2", + "content": "Test Blog Content", + "doctype": "Test Blog Post", + "title": "_Test Blog Post 3", + "published": 0, + }, + ] + + for r in test_blog_records: + frappe.get_doc(r).insert(ignore_if_duplicate=True, ignore_links=True) + + +def create_test_blog_category(): + frappe.get_doc( + { + "doctype": "DocType", + "autoname": "field:title", + "name": "Test Blog Category", + "module": "Custom", + "custom": 1, + "make_attachments_public": 1, + "naming_rule": "By fieldname", + "fields": [ + { + "fieldname": "title", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Title", + "no_copy": 1, + "reqd": 1, + }, + { + "default": "1", + "fieldname": "published", + "fieldtype": "Check", + "in_list_view": 1, + "label": "Published", + }, + { + "depends_on": "published", + "fieldname": "route", + "fieldtype": "Data", + "label": "Route", + "read_only": 1, + "unique": 1, + }, + ], + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Website Manager", + "share": 1, + "write": 1, + }, + {"email": 1, "print": 1, "read": 1, "role": "Blogger"}, + ], + } + ).insert(ignore_if_duplicate=True, ignore_links=True) + create_blog_category_records() + + +def create_blog_category_records(): + test_blog_category_records = [ + {"doctype": "Test Blog Category", "parent_website_route": "blog", "title": "_Test Blog Category"}, + {"doctype": "Test Blog Category", "parent_website_route": "blog", "title": "_Test Blog Category 1"}, + {"doctype": "Test Blog Category", "parent_website_route": "blog", "title": "_Test Blog Category 2"}, + ] + for r in test_blog_category_records: + frappe.get_doc(r).insert(ignore_if_duplicate=True, ignore_links=True) + + +def create_test_blogger(): + frappe.get_doc( + { + "doctype": "DocType", + "name": "Test Blogger", + "module": "Custom", + "custom": 1, + "autoname": "field:short_name", + "make_attachments_public": 1, + "naming_rule": "By fieldname", + "fields": [ + {"default": "0", "fieldname": "disabled", "fieldtype": "Check", "label": "Disabled"}, + { + "description": "Will be used in url (usually first name).", + "fieldname": "short_name", + "fieldtype": "Data", + "label": "Short Name", + "reqd": 1, + "unique": 1, + }, + { + "fieldname": "full_name", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Full Name", + "reqd": 1, + }, + {"fieldname": "user", "fieldtype": "Link", "label": "User", "options": "User"}, + {"fieldname": "bio", "fieldtype": "Small Text", "label": "Bio"}, + {"fieldname": "avatar", "fieldtype": "Attach Image", "label": "Avatar"}, + ], + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Website Manager", + "share": 1, + "write": 1, + }, + {"email": 1, "print": 1, "read": 1, "role": "Blogger", "share": 1, "write": 1}, + ], + } + ).insert(ignore_if_duplicate=True, ignore_links=True) + create_test_blogger_records() + + +def create_test_blogger_records(): + test_blogger_records = [ + {"doctype": "Test Blogger", "full_name": "_Test Blogger", "short_name": "_Test Blogger"}, + {"doctype": "Test Blogger", "full_name": "_Test Blogger 1", "short_name": "_Test Blogger 1"}, + {"doctype": "Test Blogger", "full_name": "_Test Blogger 2", "short_name": "_Test Blogger 2"}, + ] + for r in test_blogger_records: + frappe.get_doc(r).insert(ignore_if_duplicate=True, ignore_links=True) + + +def setup_for_tests(): + frappe.set_user("Administrator") + frappe.delete_doc_if_exists("DocType", "Test Blog Post") + frappe.delete_doc_if_exists("DocType", "Test Blog Category") + frappe.delete_doc_if_exists("DocType", "Test Blogger") + create_test_blog_category() + create_test_blogger() + create_test_blog_post() diff --git a/frappe/tests/test_permissions.py b/frappe/tests/test_permissions.py index df802f8d07..dda684f143 100644 --- a/frappe/tests/test_permissions.py +++ b/frappe/tests/test_permissions.py @@ -5,10 +5,12 @@ import frappe import frappe.defaults import frappe.model.meta +import frappe.permissions from frappe.core.doctype.doctype.test_doctype import new_doctype from frappe.core.doctype.user_permission.user_permission import clear_user_permissions from frappe.core.page.permission_manager.permission_manager import add, remove, reset, update from frappe.desk.form.load import getdoc +from frappe.installer import _delete_doctypes from frappe.permissions import ( ALL_USER_ROLE, AUTOMATIC_ROLES, @@ -23,17 +25,19 @@ from frappe.permissions import ( update_permission_property, ) from frappe.tests import IntegrationTestCase +from frappe.tests.test_helpers import setup_for_tests from frappe.tests.utils import make_test_records_for_doctype from frappe.utils.data import now_datetime -EXTRA_TEST_RECORD_DEPENDENCIES = ["Blogger", "Blog Post", "User", "Contact", "Salutation"] +EXTRA_TEST_RECORD_DEPENDENCIES = ["User", "Contact", "Salutation"] class TestPermissions(IntegrationTestCase): @classmethod def setUpClass(cls): super().setUpClass() - frappe.clear_cache(doctype="Blog Post") + setup_for_tests() + frappe.clear_cache(doctype="Test Blog Post") user = frappe.get_doc("User", "test1@example.com") user.add_roles("Website Manager") user.add_roles("System Manager") @@ -48,10 +52,10 @@ class TestPermissions(IntegrationTestCase): user.add_roles("Website Manager") def setUp(self): - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") - reset("Blogger") - reset("Blog Post") + reset("Test Blogger") + reset("Test Blog Post") frappe.db.delete("User Permission") @@ -59,11 +63,11 @@ class TestPermissions(IntegrationTestCase): def tearDown(self): frappe.set_user("Administrator") - frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None) + frappe.db.set_value("Test Blogger", "_Test Blogger 1", "user", None) - clear_user_permissions_for_doctype("Blog Category") - clear_user_permissions_for_doctype("Blog Post") - clear_user_permissions_for_doctype("Blogger") + clear_user_permissions_for_doctype("Test Blog Category") + clear_user_permissions_for_doctype("Test Blog Post") + clear_user_permissions_for_doctype("Test Blogger") @staticmethod def set_strict_user_permissions(ignore): @@ -73,119 +77,124 @@ class TestPermissions(IntegrationTestCase): ss.save() def test_basic_permission(self): - post = frappe.get_doc("Blog Post", "-test-blog-post") + post = frappe.get_doc("Test Blog Post", "_Test Blog Post") self.assertTrue(post.has_permission("read")) def test_select_permission(self): # grant only select perm to blog post - add_permission("Blog Post", "Sales User", 0) - update_permission_property("Blog Post", "Sales User", 0, "select", 1) - update_permission_property("Blog Post", "Sales User", 0, "read", 0) - update_permission_property("Blog Post", "Sales User", 0, "write", 0) + add_permission("Test Blog Post", "Sales User", 0) + update_permission_property("Test Blog Post", "Sales User", 0, "select", 1) + update_permission_property("Test Blog Post", "Sales User", 0, "read", 0) + update_permission_property("Test Blog Post", "Sales User", 0, "write", 0) - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") frappe.set_user("test3@example.com") # validate select perm - post = frappe.get_doc("Blog Post", "-test-blog-post") + post = frappe.get_doc("Test Blog Post", "_Test Blog Post") self.assertTrue(post.has_permission("select")) # validate does not have read and write perm self.assertFalse(post.has_permission("read")) self.assertRaises(frappe.PermissionError, post.save) - permitted_record = frappe.get_list("Blog Post", fields="*", limit=1)[0] - full_record = frappe.get_all("Blog Post", fields="*", limit=1)[0] + permitted_record = frappe.get_list("Test Blog Post", fields="*", limit=1)[0] + full_record = frappe.get_all("Test Blog Post", fields="*", limit=1)[0] self.assertNotEqual(permitted_record, full_record) self.assertSequenceSubset(post.meta.get_search_fields(), permitted_record) def test_user_permissions_in_doc(self): - add_user_permission("Blog Category", "-test-blog-category-1", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category 1", "test2@example.com") frappe.set_user("test2@example.com") - post = frappe.get_doc("Blog Post", "-test-blog-post") + post = frappe.get_doc("Test Blog Post", "_Test Blog Post") self.assertFalse(post.has_permission("read")) self.assertFalse(get_doc_permissions(post).get("read")) - post1 = frappe.get_doc("Blog Post", "-test-blog-post-1") + post1 = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") self.assertTrue(post1.has_permission("read")) self.assertTrue(get_doc_permissions(post1).get("read")) def test_user_permissions_in_report(self): - add_user_permission("Blog Category", "-test-blog-category-1", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category 1", "test2@example.com") frappe.set_user("test2@example.com") - names = [d.name for d in frappe.get_list("Blog Post", fields=["name", "blog_category"])] + names = [d.name for d in frappe.get_list("Test Blog Post", fields=["name", "blog_category"])] - self.assertTrue("-test-blog-post-1" in names) - self.assertFalse("-test-blog-post" in names) + self.assertTrue("_Test Blog Post 1" in names) + self.assertFalse("_Test Blog Post" in names) def test_default_values(self): - doc = frappe.new_doc("Blog Post") + doc = frappe.new_doc("Test Blog Post") self.assertFalse(doc.get("blog_category")) # Fetch default based on single user permission - add_user_permission("Blog Category", "-test-blog-category-1", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category 1", "test2@example.com") frappe.set_user("test2@example.com") - doc = frappe.new_doc("Blog Post") - self.assertEqual(doc.get("blog_category"), "-test-blog-category-1") + doc = frappe.new_doc("Test Blog Post") + self.assertEqual(doc.get("blog_category"), "_Test Blog Category 1") # Don't fetch default if user permissions is more than 1 add_user_permission( - "Blog Category", "-test-blog-category", "test2@example.com", ignore_permissions=True + "Test Blog Category", "_Test Blog Category", "test2@example.com", ignore_permissions=True ) frappe.clear_cache() - doc = frappe.new_doc("Blog Post") + doc = frappe.new_doc("Test Blog Post") self.assertFalse(doc.get("blog_category")) # Fetch user permission set as default from multiple user permission add_user_permission( - "Blog Category", - "-test-blog-category-2", + "Test Blog Category", + "_Test Blog Category 2", "test2@example.com", ignore_permissions=True, is_default=1, ) frappe.clear_cache() - doc = frappe.new_doc("Blog Post") - self.assertEqual(doc.get("blog_category"), "-test-blog-category-2") + doc = frappe.new_doc("Test Blog Post") + self.assertEqual(doc.get("blog_category"), "_Test Blog Category 2") def test_user_link_match_doc(self): - blogger = frappe.get_doc("Blogger", "_Test Blogger 1") + blogger = frappe.get_doc("Test Blogger", "_Test Blogger 1") blogger.user = "test2@example.com" blogger.save() + frappe.permissions.add_user_permission("Test Blogger", blogger.name, blogger.user) frappe.set_user("test2@example.com") - post = frappe.get_doc("Blog Post", "-test-blog-post-2") + post = frappe.get_doc("Test Blog Post", "_Test Blog Post 2") self.assertTrue(post.has_permission("read")) - - post1 = frappe.get_doc("Blog Post", "-test-blog-post-1") + post1 = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") self.assertFalse(post1.has_permission("read")) def test_user_link_match_report(self): - blogger = frappe.get_doc("Blogger", "_Test Blogger 1") + blogger = frappe.get_doc("Test Blogger", "_Test Blogger 1") blogger.user = "test2@example.com" blogger.save() + frappe.permissions.add_user_permission("Test Blogger", blogger.name, blogger.user) frappe.set_user("test2@example.com") - names = [d.name for d in frappe.get_list("Blog Post", fields=["name", "owner"])] - self.assertTrue("-test-blog-post-2" in names) - self.assertFalse("-test-blog-post-1" in names) + names = [d.name for d in frappe.get_list("Test Blog Post", fields=["name", "owner"])] + self.assertTrue("_Test Blog Post 2" in names) + self.assertFalse("_Test Blog Post 1" in names) def test_set_user_permissions(self): frappe.set_user("test1@example.com") - add_user_permission("Blog Post", "-test-blog-post", "test2@example.com") + add_user_permission("Test Blog Post", "_Test Blog Post", "test2@example.com") def test_not_allowed_to_set_user_permissions(self): frappe.set_user("test2@example.com") # this user can't add user permissions self.assertRaises( - frappe.PermissionError, add_user_permission, "Blog Post", "-test-blog-post", "test2@example.com" + frappe.PermissionError, + add_user_permission, + "Test Blog Post", + "_Test Blog Post", + "test2@example.com", ) def test_read_if_explicit_user_permissions_are_set(self): @@ -194,11 +203,11 @@ class TestPermissions(IntegrationTestCase): frappe.set_user("test2@example.com") # user can only access permitted blog post - doc = frappe.get_doc("Blog Post", "-test-blog-post") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post") self.assertTrue(doc.has_permission("read")) # and not this one - doc = frappe.get_doc("Blog Post", "-test-blog-post-1") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") self.assertFalse(doc.has_permission("read")) def test_not_allowed_to_remove_user_permissions(self): @@ -210,24 +219,24 @@ class TestPermissions(IntegrationTestCase): self.assertRaises( frappe.PermissionError, remove_user_permission, - "Blog Post", - "-test-blog-post", + "Test Blog Post", + "_Test Blog Post", "test2@example.com", ) def test_user_permissions_if_applied_on_doc_being_evaluated(self): frappe.set_user("test2@example.com") - doc = frappe.get_doc("Blog Post", "-test-blog-post-1") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") self.assertTrue(doc.has_permission("read")) frappe.set_user("test1@example.com") - add_user_permission("Blog Post", "-test-blog-post", "test2@example.com") + add_user_permission("Test Blog Post", "_Test Blog Post", "test2@example.com") frappe.set_user("test2@example.com") - doc = frappe.get_doc("Blog Post", "-test-blog-post-1") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") self.assertFalse(doc.has_permission("read")) - doc = frappe.get_doc("Blog Post", "-test-blog-post") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post") self.assertTrue(doc.has_permission("read")) def test_set_standard_fields_manually(self): @@ -257,8 +266,8 @@ class TestPermissions(IntegrationTestCase): self.assertRaises(frappe.CannotChangeConstantError, user.save) def test_set_only_once(self): - blog_post = frappe.get_meta("Blog Post") - doc = frappe.get_doc("Blog Post", "-test-blog-post-1") + blog_post = frappe.get_meta("Test Blog Post") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") doc.db_set("title", "Old") blog_post.get_field("title").set_only_once = 1 doc.title = "New" @@ -268,7 +277,7 @@ class TestPermissions(IntegrationTestCase): def test_set_only_once_child_table_rows(self): doctype_meta = frappe.get_meta("DocType") doctype_meta.get_field("fields").set_only_once = 1 - doc = frappe.get_doc("DocType", "Blog Post") + doc = frappe.get_doc("DocType", "Test Blog Post") # remove last one doc.fields = doc.fields[:-1] @@ -278,51 +287,50 @@ class TestPermissions(IntegrationTestCase): def test_set_only_once_child_table_row_value(self): doctype_meta = frappe.get_meta("DocType") doctype_meta.get_field("fields").set_only_once = 1 - doc = frappe.get_doc("DocType", "Blog Post") - + doc = frappe.get_doc("DocType", "Test Blog Post") # change one property from the child table - doc.fields[-1].fieldtype = "Check" + doc.fields[-3].fieldtype = "Check" self.assertRaises(frappe.CannotChangeConstantError, doc.save) frappe.clear_cache(doctype="DocType") def test_set_only_once_child_table_okay(self): doctype_meta = frappe.get_meta("DocType") doctype_meta.get_field("fields").set_only_once = 1 - doc = frappe.get_doc("DocType", "Blog Post") + doc = frappe.get_doc("DocType", "Test Blog Post") doc.load_doc_before_save() self.assertFalse(doc.validate_set_only_once()) frappe.clear_cache(doctype="DocType") def test_user_permission_doctypes(self): - add_user_permission("Blog Category", "-test-blog-category-1", "test2@example.com") - add_user_permission("Blogger", "_Test Blogger 1", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category 1", "test2@example.com") + add_user_permission("Test Blogger", "_Test Blogger 1", "test2@example.com") frappe.set_user("test2@example.com") - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") - doc = frappe.get_doc("Blog Post", "-test-blog-post") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post") self.assertFalse(doc.has_permission("read")) - doc = frappe.get_doc("Blog Post", "-test-blog-post-2") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post 2") self.assertTrue(doc.has_permission("read")) - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") def if_owner_setup(self): - update("Blog Post", "Blogger", 0, "if_owner", 1) + update("Test Blog Post", "Blogger", 0, "if_owner", 1) - add_user_permission("Blog Category", "-test-blog-category-1", "test2@example.com") - add_user_permission("Blogger", "_Test Blogger 1", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category 1", "test2@example.com") + add_user_permission("Test Blogger", "_Test Blogger 1", "test2@example.com") - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") def test_insert_if_owner_with_user_permissions(self): """If `If Owner` is checked for a Role, check if that document is allowed to be read, updated, submitted, etc. except be created, even if the document is restricted based on User Permissions.""" - frappe.delete_doc("Blog Post", "-test-blog-post-title") + frappe.delete_doc("Test Blog Post", "-test-blog-post-title") self.if_owner_setup() @@ -330,8 +338,8 @@ class TestPermissions(IntegrationTestCase): doc = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category", "blogger": "_Test Blogger 1", "title": "_Test Blog Post Title", "content": "_Test Blog Post Content", @@ -341,34 +349,35 @@ class TestPermissions(IntegrationTestCase): self.assertRaises(frappe.PermissionError, doc.insert) frappe.set_user("test1@example.com") - add_user_permission("Blog Category", "-test-blog-category", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category", "test2@example.com") frappe.set_user("test2@example.com") doc.insert() frappe.set_user("Administrator") - remove_user_permission("Blog Category", "-test-blog-category", "test2@example.com") - + remove_user_permission("Test Blog Category", "_Test Blog Category", "test2@example.com") + frappe.clear_cache() frappe.set_user("test2@example.com") doc = frappe.get_doc(doc.doctype, doc.name) + self.assertTrue(doc.has_permission("read")) self.assertTrue(doc.has_permission("write")) self.assertFalse(doc.has_permission("create")) # delete created record frappe.set_user("Administrator") - frappe.delete_doc("Blog Post", "-test-blog-post-title") + frappe.delete_doc("Test Blog Post", "_Test Blog Post Title") def test_ignore_user_permissions_if_missing(self): """If there are no user permissions, then allow as per role""" - add_user_permission("Blog Category", "-test-blog-category", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category", "test2@example.com") frappe.set_user("test2@example.com") doc = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category-2", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category 2", "blogger": "_Test Blogger 1", "title": "_Test Blog Post Title", "content": "_Test Blog Post Content", @@ -378,7 +387,7 @@ class TestPermissions(IntegrationTestCase): self.assertFalse(doc.has_permission("write")) frappe.set_user("Administrator") - remove_user_permission("Blog Category", "-test-blog-category", "test2@example.com") + remove_user_permission("Test Blog Category", "_Test Blog Category", "test2@example.com") frappe.set_user("test2@example.com") self.assertTrue(doc.has_permission("write")) @@ -428,9 +437,9 @@ class TestPermissions(IntegrationTestCase): clear_user_permissions_for_doctype("Contact") def test_user_permission_is_not_applied_if_user_roles_does_not_have_permission(self): - add_user_permission("Blog Post", "-test-blog-post-1", "test3@example.com") + add_user_permission("Test Blog Post", "_Test Blog Post 1", "test3@example.com") frappe.set_user("test3@example.com") - doc = frappe.get_doc("Blog Post", "-test-blog-post-1") + doc = frappe.get_doc("Test Blog Post", "_Test Blog Post 1") self.assertFalse(doc.has_permission("read")) frappe.set_user("Administrator") @@ -444,20 +453,22 @@ class TestPermissions(IntegrationTestCase): def test_contextual_user_permission(self): # should be applicable for across all doctypes - add_user_permission("Blogger", "_Test Blogger", "test2@example.com") + add_user_permission("Test Blogger", "_Test Blogger", "test2@example.com") # should be applicable only while accessing Blog Post - add_user_permission("Blogger", "_Test Blogger 1", "test2@example.com", applicable_for="Blog Post") + add_user_permission( + "Test Blogger", "_Test Blogger 1", "test2@example.com", applicable_for="Test Blog Post" + ) # should be applicable only while accessing User - add_user_permission("Blogger", "_Test Blogger 2", "test2@example.com", applicable_for="User") + add_user_permission("Test Blogger", "_Test Blogger 2", "test2@example.com", applicable_for="User") - posts = frappe.get_all("Blog Post", fields=["name", "blogger"]) + posts = frappe.get_all("Test Blog Post", fields=["name", "blogger"]) # Get all posts for admin self.assertEqual(len(posts), 4) frappe.set_user("test2@example.com") - posts = frappe.get_list("Blog Post", fields=["name", "blogger"]) + posts = frappe.get_list("Test Blog Post", fields=["name", "blogger"]) # Should get only posts with allowed blogger via user permission # only '_Test Blogger', '_Test Blogger 1' are allowed in Blog Post @@ -473,32 +484,32 @@ class TestPermissions(IntegrationTestCase): def test_if_owner_permission_overrides_properly(self): # check if user is not granted access if the user is not the owner of the doc # Blogger has only read access on the blog post unless he is the owner of the blog - update("Blog Post", "Blogger", 0, "if_owner", 1) - update("Blog Post", "Blogger", 0, "read", 1, 1) - update("Blog Post", "Blogger", 0, "write", 1, 1) - update("Blog Post", "Blogger", 0, "delete", 1, 1) + update("Test Blog Post", "Blogger", 0, "if_owner", 1) + update("Test Blog Post", "Blogger", 0, "read", 1, 1) + update("Test Blog Post", "Blogger", 0, "write", 1, 1) + update("Test Blog Post", "Blogger", 0, "delete", 1, 1) # currently test2 user has not created any document # still he should be able to do get_list query which should # not raise permission error but simply return empty list frappe.set_user("test2@example.com") - self.assertEqual(frappe.get_list("Blog Post"), []) + self.assertEqual(frappe.get_list("Test Blog Post"), []) frappe.set_user("Administrator") # creates a custom docperm with just read access # now any user can read any blog post (but other rights are limited to the blog post owner) - add_permission("Blog Post", "Blogger") - frappe.clear_cache(doctype="Blog Post") + add_permission("Test Blog Post", "Blogger") + frappe.clear_cache(doctype="Test Blog Post") - frappe.delete_doc("Blog Post", "-test-blog-post-title") + frappe.delete_doc("Test Blog Post", "_Test Blog Post Title") frappe.set_user("test1@example.com") doc = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category", "blogger": "_Test Blogger 1", "title": "_Test Blog Post Title", "content": "_Test Blog Post Content", @@ -523,21 +534,21 @@ class TestPermissions(IntegrationTestCase): self.assertTrue(doc.has_permission("delete")) # delete the created doc - frappe.delete_doc("Blog Post", "-test-blog-post-title") + frappe.delete_doc("Test Blog Post", "_Test Blog Post Title") def test_if_owner_permission_on_getdoc(self): - update("Blog Post", "Blogger", 0, "if_owner", 1) - update("Blog Post", "Blogger", 0, "read", 1) - update("Blog Post", "Blogger", 0, "write", 1) - update("Blog Post", "Blogger", 0, "delete", 1) - frappe.clear_cache(doctype="Blog Post") + update("Test Blog Post", "Blogger", 0, "if_owner", 1) + update("Test Blog Post", "Blogger", 0, "read", 1) + update("Test Blog Post", "Blogger", 0, "write", 1) + update("Test Blog Post", "Blogger", 0, "delete", 1) + frappe.clear_cache(doctype="Test Blog Post") frappe.set_user("test1@example.com") doc = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category", "blogger": "_Test Blogger 1", "title": "_Test Blog Post Title New", "content": "_Test Blog Post Content", @@ -546,18 +557,18 @@ class TestPermissions(IntegrationTestCase): doc.insert() - getdoc("Blog Post", doc.name) + getdoc("Test Blog Post", doc.name) doclist = [d.name for d in frappe.response.docs] self.assertTrue(doc.name in doclist) frappe.set_user("test2@example.com") - self.assertRaises(frappe.PermissionError, getdoc, "Blog Post", doc.name) + self.assertRaises(frappe.PermissionError, getdoc, "Test Blog Post", doc.name) def test_if_owner_permission_on_get_list(self): doc = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category", "blogger": "_Test Blogger 1", "title": "_Test If Owner Permissions on Get List", "content": "_Test Blog Post Content", @@ -566,39 +577,39 @@ class TestPermissions(IntegrationTestCase): doc.insert(ignore_if_duplicate=True) - update("Blog Post", "Blogger", 0, "if_owner", 1) - update("Blog Post", "Blogger", 0, "read", 1) + update("Test Blog Post", "Blogger", 0, "if_owner", 1) + update("Test Blog Post", "Blogger", 0, "read", 1) user = frappe.get_doc("User", "test2@example.com") user.add_roles("Website Manager") - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") frappe.set_user("test2@example.com") - self.assertIn(doc.name, frappe.get_list("Blog Post", pluck="name")) + self.assertIn(doc.name, frappe.get_list("Test Blog Post", pluck="name")) # Become system manager to remove role frappe.set_user("test1@example.com") user.remove_roles("Website Manager") - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") frappe.set_user("test2@example.com") - self.assertNotIn(doc.name, frappe.get_list("Blog Post", pluck="name")) + self.assertNotIn(doc.name, frappe.get_list("Test Blog Post", pluck="name")) def test_if_owner_permission_on_delete(self): - update("Blog Post", "Blogger", 0, "if_owner", 1) - update("Blog Post", "Blogger", 0, "read", 1, 1) - update("Blog Post", "Blogger", 0, "write", 1, 1) - update("Blog Post", "Blogger", 0, "delete", 1, 1) + update("Test Blog Post", "Blogger", 0, "if_owner", 1) + update("Test Blog Post", "Blogger", 0, "read", 1, 1) + update("Test Blog Post", "Blogger", 0, "write", 1, 1) + update("Test Blog Post", "Blogger", 0, "delete", 1, 1) # Remove delete perm - update("Blog Post", "Website Manager", 0, "delete", 0) + update("Test Blog Post", "Website Manager", 0, "delete", 0) - frappe.clear_cache(doctype="Blog Post") + frappe.clear_cache(doctype="Test Blog Post") with self.set_user("test2@example.com"): doc = frappe.get_doc( { - "doctype": "Blog Post", - "blog_category": "-test-blog-category", + "doctype": "Test Blog Post", + "blog_category": "_Test Blog Category", "blogger": "_Test Blogger 1", "title": "_Test Blog Post Title New 1", "content": "_Test Blog Post Content", @@ -607,46 +618,46 @@ class TestPermissions(IntegrationTestCase): doc.insert() - getdoc("Blog Post", doc.name) + getdoc("Test Blog Post", doc.name) doclist = [d.name for d in frappe.response.docs] self.assertTrue(doc.name in doclist) with self.set_user("testperm@example.com"): # Website Manager able to read - getdoc("Blog Post", doc.name) + getdoc("Test Blog Post", doc.name) doclist = [d.name for d in frappe.response.docs] self.assertTrue(doc.name in doclist) # Website Manager should not be able to delete - self.assertRaises(frappe.PermissionError, frappe.delete_doc, "Blog Post", doc.name) + self.assertRaises(frappe.PermissionError, frappe.delete_doc, "Test Blog Post", doc.name) with self.set_user("test2@example.com"): - frappe.delete_doc("Blog Post", "-test-blog-post-title-new-1") + frappe.delete_doc("Test Blog Post", "_Test Blog Post Title New 1") - update("Blog Post", "Website Manager", 0, "delete", 1, 1) + update("Test Blog Post", "Website Manager", 0, "delete", 1, 1) def test_clear_user_permissions(self): current_user = frappe.session.user frappe.set_user("Administrator") - clear_user_permissions_for_doctype("Blog Category", "test2@example.com") - clear_user_permissions_for_doctype("Blog Post", "test2@example.com") + clear_user_permissions_for_doctype("Test Blog Category", "test2@example.com") + clear_user_permissions_for_doctype("Test Blog Post", "test2@example.com") - add_user_permission("Blog Post", "-test-blog-post-1", "test2@example.com") - add_user_permission("Blog Post", "-test-blog-post-2", "test2@example.com") - add_user_permission("Blog Category", "-test-blog-category-1", "test2@example.com") + add_user_permission("Test Blog Post", "_Test Blog Post 1", "test2@example.com") + add_user_permission("Test Blog Post", "_Test Blog Post 2", "test2@example.com") + add_user_permission("Test Blog Category", "_Test Blog Category 1", "test2@example.com") - deleted_user_permission_count = clear_user_permissions("test2@example.com", "Blog Post") + deleted_user_permission_count = clear_user_permissions("test2@example.com", "Test Blog Post") self.assertEqual(deleted_user_permission_count, 2) blog_post_user_permission_count = frappe.db.count( - "User Permission", filters={"user": "test2@example.com", "allow": "Blog Post"} + "User Permission", filters={"user": "test2@example.com", "allow": "Test Blog Post"} ) self.assertEqual(blog_post_user_permission_count, 0) blog_category_user_permission_count = frappe.db.count( - "User Permission", filters={"user": "test2@example.com", "allow": "Blog Category"} + "User Permission", filters={"user": "test2@example.com", "allow": "Test Blog Category"} ) self.assertEqual(blog_category_user_permission_count, 1) diff --git a/frappe/tests/test_query.py b/frappe/tests/test_query.py index c8e7f93a9c..c5a65f9cb5 100644 --- a/frappe/tests/test_query.py +++ b/frappe/tests/test_query.py @@ -13,10 +13,11 @@ from frappe.tests.test_db_query import ( setup_patched_blog_post, setup_test_user, ) +from frappe.tests.test_helpers import setup_for_tests from frappe.tests.test_query_builder import db_type_is, run_only_if from frappe.utils.nestedset import get_ancestors_of, get_descendants_of -EXTRA_TEST_RECORD_DEPENDENCIES = ["User", "Blog Post", "Blog Category", "Blogger"] +EXTRA_TEST_RECORD_DEPENDENCIES = ["User"] def create_tree_docs(): @@ -63,6 +64,9 @@ def create_tree_docs(): class TestQuery(IntegrationTestCase): + def setUp(self): + setup_for_tests() + @run_only_if(db_type_is.MARIADB) def test_multiple_tables_in_filters(self): self.assertEqual( @@ -719,31 +723,30 @@ class TestQuery(IntegrationTestCase): def test_build_match_conditions(self): from frappe.permissions import add_user_permission, clear_user_permissions_for_doctype - clear_user_permissions_for_doctype("Blog Post", "test2@example.com") + clear_user_permissions_for_doctype("Test Blog Post", "test2@example.com") test2user = frappe.get_doc("User", "test2@example.com") test2user.add_roles("Blogger") frappe.set_user("test2@example.com") # Before any user permission is applied, there should be no conditions - query = frappe.qb.get_query("Blog Post", ignore_permissions=False) + query = frappe.qb.get_query("Test Blog Post", ignore_permissions=False) self.assertNotIn("(`tabBlog Post`.`name` in (", str(query)) - # Add user permissions - add_user_permission("Blog Post", "-test-blog-post", "test2@example.com", True) - add_user_permission("Blog Post", "-test-blog-post-1", "test2@example.com", True) + add_user_permission("Test Blog Post", "_Test Blog Post", "test2@example.com", True) + add_user_permission("Test Blog Post", "_Test Blog Post 1", "test2@example.com", True) # After applying user permission, condition should be in query - query = str(frappe.qb.get_query("Blog Post", ignore_permissions=False)) + query = str(frappe.qb.get_query("Test Blog Post", ignore_permissions=False)) # Check for user permission condition in the query string if frappe.db.db_type == "mariadb": - self.assertIn("`name` IS NULL OR `name` IN ('-test-blog-post-1','-test-blog-post')", query) + self.assertIn("`name` IS NULL OR `name` IN ('_Test Blog Post 1','_Test Blog Post')", query) elif frappe.db.db_type == "postgres": - self.assertIn("\"name\" IS NULL OR \"name\" IN ('-test-blog-post-1','-test-blog-post')", query) + self.assertIn("\"name\" IS NULL OR \"name\" IN ('_Test Blog Post 1','_Test Blog Post')", query) frappe.set_user("Administrator") - clear_user_permissions_for_doctype("Blog Post", "test2@example.com") + clear_user_permissions_for_doctype("Test Blog Post", "test2@example.com") test2user.remove_roles("Blogger") def test_ignore_permissions_for_query(self): @@ -763,17 +766,17 @@ class TestQuery(IntegrationTestCase): # Create a test blog post test_post = frappe.get_doc( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "title": "Test Permission Post", "content": "Test Content", - "blog_category": "-test-blog-category", + "blog_category": "_Test Blog Category", "published": 1, } ).insert(ignore_permissions=True, ignore_mandatory=True) # Without proper permission, published field should be filtered out data = frappe.qb.get_query( - "Blog Post", + "Test Blog Post", filters={"name": test_post.name}, fields=["name", "published", "title"], ignore_permissions=False, @@ -787,7 +790,7 @@ class TestQuery(IntegrationTestCase): # With Administrator, all fields should be accessible frappe.set_user("Administrator") data = frappe.qb.get_query( - "Blog Post", + "Test Blog Post", filters={"name": test_post.name}, fields=["name", "published", "title"], ignore_permissions=False, @@ -1055,10 +1058,10 @@ class TestQuery(IntegrationTestCase): # Create a test blog post test_post = frappe.get_doc( { - "doctype": "Blog Post", + "doctype": "Test Blog Post", "title": "Test Filter Permission Post", "content": "Test Content", - "blog_category": "-test-blog-category", + "blog_category": "_Test Blog Category", "published": 1, # permlevel 1 } ).insert(ignore_permissions=True, ignore_mandatory=True, ignore_if_duplicate=True) @@ -1067,7 +1070,7 @@ class TestQuery(IntegrationTestCase): # Try filtering on permitted field (title - permlevel 0) try: frappe.qb.get_query( - "Blog Post", + "Test Blog Post", filters={"title": test_post.title}, ignore_permissions=False, user=user.name, @@ -1078,7 +1081,7 @@ class TestQuery(IntegrationTestCase): # Try filtering on non-permitted field (published - permlevel 1) with self.assertRaises(frappe.PermissionError) as cm: frappe.qb.get_query( - "Blog Post", + "Test Blog Post", filters={"published": 1}, ignore_permissions=False, user=user.name, diff --git a/frappe/tests/test_sitemap.py b/frappe/tests/test_sitemap.py index 8b5ae0e172..c71b5415b9 100644 --- a/frappe/tests/test_sitemap.py +++ b/frappe/tests/test_sitemap.py @@ -5,11 +5,6 @@ from frappe.utils import get_html_for_route class TestSitemap(IntegrationTestCase): def test_sitemap(self): - from frappe.tests.utils import make_test_records - - make_test_records("Blog Post") - blogs = frappe.get_all("Blog Post", {"published": 1}, ["route"], limit=1) xml = get_html_for_route("sitemap.xml") self.assertTrue("/about" in xml) self.assertTrue("/contact" in xml) - self.assertTrue(blogs[0].route in xml) diff --git a/frappe/tests/ui_test_helpers.py b/frappe/tests/ui_test_helpers.py index a06fa09eef..871edde18b 100644 --- a/frappe/tests/ui_test_helpers.py +++ b/frappe/tests/ui_test_helpers.py @@ -1,6 +1,7 @@ import frappe from frappe import _ from frappe.permissions import AUTOMATIC_ROLES +from frappe.tests.test_helpers import create_test_blog_category from frappe.utils import add_to_date, now UI_TEST_USER = "frappe@example.com" @@ -85,6 +86,13 @@ def prepare_webform_test(): frappe.delete_doc_if_exists("Web Form", "note") +@whitelist_for_tests +def create_doctype_for_attachment(): + create_test_blog_category() + doc = frappe.get_doc("Test Blog Category", "_Test Blog Category 2") + return doc + + @whitelist_for_tests def create_communication_record(): doc = frappe.get_doc( @@ -397,33 +405,6 @@ def insert_translations(): frappe.get_doc(doc).insert(ignore_if_duplicate=True) -@whitelist_for_tests -def create_blog_post(): - blog_category = frappe.get_doc( - {"name": "general", "doctype": "Blog Category", "title": "general"} - ).insert(ignore_if_duplicate=True) - - blogger = frappe.get_doc( - { - "name": "attachment blogger", - "doctype": "Blogger", - "full_name": "attachment blogger", - "short_name": "attachment blogger", - } - ).insert(ignore_if_duplicate=True) - - return frappe.get_doc( - { - "name": "test-blog-attachment-post", - "doctype": "Blog Post", - "title": "test-blog-attachment-post", - "blog_category": blog_category.name, - "blogger": blogger.name, - "content_type": "Rich Text", - }, - ).insert(ignore_if_duplicate=True) - - @whitelist_for_tests def create_test_user(username=None): name = username or UI_TEST_USER diff --git a/frappe/website/doctype/blog_category/README.md b/frappe/website/doctype/blog_category/README.md deleted file mode 100644 index af14b5dc14..0000000000 --- a/frappe/website/doctype/blog_category/README.md +++ /dev/null @@ -1 +0,0 @@ -Blog category. \ No newline at end of file diff --git a/frappe/website/doctype/blog_category/__init__.py b/frappe/website/doctype/blog_category/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/blog_category/blog_category.js b/frappe/website/doctype/blog_category/blog_category.js deleted file mode 100644 index 193531c73c..0000000000 --- a/frappe/website/doctype/blog_category/blog_category.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) 2016, Frappe Technologies and contributors -// For license information, please see license.txt - -frappe.ui.form.on("Blog Category", { - refresh: function (frm) {}, -}); diff --git a/frappe/website/doctype/blog_category/blog_category.json b/frappe/website/doctype/blog_category/blog_category.json deleted file mode 100644 index db0aa29546..0000000000 --- a/frappe/website/doctype/blog_category/blog_category.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "actions": [], - "allow_guest_to_view": 1, - "allow_import": 1, - "allow_rename": 1, - "creation": "2013-03-08 09:41:11", - "doctype": "DocType", - "document_type": "Setup", - "engine": "InnoDB", - "field_order": [ - "published", - "title", - "route", - "preview_image", - "description" - ], - "fields": [ - { - "fieldname": "title", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Title", - "no_copy": 1, - "reqd": 1 - }, - { - "default": "1", - "fieldname": "published", - "fieldtype": "Check", - "in_list_view": 1, - "label": "Published" - }, - { - "depends_on": "published", - "fieldname": "route", - "fieldtype": "Data", - "label": "Route", - "read_only": 1, - "unique": 1 - }, - { - "fieldname": "description", - "fieldtype": "Small Text", - "label": "Description" - }, - { - "fieldname": "preview_image", - "fieldtype": "Attach Image", - "label": "Preview Image" - } - ], - "has_web_view": 1, - "icon": "fa fa-tag", - "idx": 1, - "index_web_pages_for_search": 1, - "is_published_field": "published", - "links": [ - { - "link_doctype": "Blog Post", - "link_fieldname": "blog_category" - } - ], - "make_attachments_public": 1, - "modified": "2024-08-15 19:03:00.345431", - "modified_by": "Administrator", - "module": "Website", - "name": "Blog Category", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "Website Manager", - "share": 1, - "write": 1 - }, - { - "email": 1, - "print": 1, - "read": 1, - "role": "Blogger" - } - ], - "quick_entry": 1, - "sort_field": "creation", - "sort_order": "DESC", - "states": [], - "title_field": "title", - "track_changes": 1 -} \ No newline at end of file diff --git a/frappe/website/doctype/blog_category/blog_category.py b/frappe/website/doctype/blog_category/blog_category.py deleted file mode 100644 index fac00370f6..0000000000 --- a/frappe/website/doctype/blog_category/blog_category.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -from frappe.website.utils import clear_cache -from frappe.website.website_generator import WebsiteGenerator - - -class BlogCategory(WebsiteGenerator): - # begin: auto-generated types - # This code is auto-generated. Do not modify anything in this block. - - from typing import TYPE_CHECKING - - if TYPE_CHECKING: - from frappe.types import DF - - description: DF.SmallText | None - preview_image: DF.AttachImage | None - published: DF.Check - route: DF.Data | None - title: DF.Data - # end: auto-generated types - - def autoname(self): - # to override autoname of WebsiteGenerator - self.name = self.scrub(self.title) - - def on_update(self): - clear_cache() - - def set_route(self): - # Override blog route since it has to been templated - self.route = "blog/" + self.name diff --git a/frappe/website/doctype/blog_category/templates/blog_category.html b/frappe/website/doctype/blog_category/templates/blog_category.html deleted file mode 100644 index 99817d7808..0000000000 --- a/frappe/website/doctype/blog_category/templates/blog_category.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "templates/pages/blog.html" %} - -{% block title %}{{ title }}{% endblock %} - -{% block script %} - -{% endblock %} diff --git a/frappe/website/doctype/blog_category/templates/blog_category_row.html b/frappe/website/doctype/blog_category/templates/blog_category_row.html deleted file mode 100644 index 2b999819cb..0000000000 --- a/frappe/website/doctype/blog_category/templates/blog_category_row.html +++ /dev/null @@ -1,4 +0,0 @@ - - \ No newline at end of file diff --git a/frappe/website/doctype/blog_category/test_blog_category.py b/frappe/website/doctype/blog_category/test_blog_category.py deleted file mode 100644 index 3d216c9324..0000000000 --- a/frappe/website/doctype/blog_category/test_blog_category.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE -import frappe -from frappe.tests import IntegrationTestCase - - -class TestBlogCategory(IntegrationTestCase): - pass diff --git a/frappe/website/doctype/blog_category/test_records.json b/frappe/website/doctype/blog_category/test_records.json deleted file mode 100644 index 4bd4ac35b7..0000000000 --- a/frappe/website/doctype/blog_category/test_records.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "doctype": "Blog Category", - "parent_website_route": "blog", - "title": "_Test Blog Category" - }, - { - "doctype": "Blog Category", - "parent_website_route": "blog", - "title": "_Test Blog Category 1" - }, - { - "doctype": "Blog Category", - "parent_website_route": "blog", - "title": "_Test Blog Category 2" - } -] \ No newline at end of file diff --git a/frappe/website/doctype/blog_post/README.md b/frappe/website/doctype/blog_post/README.md deleted file mode 100644 index 63d3c0f31e..0000000000 --- a/frappe/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/frappe/website/doctype/blog_post/__init__.py b/frappe/website/doctype/blog_post/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js deleted file mode 100644 index 5f7268d074..0000000000 --- a/frappe/website/doctype/blog_post/blog_post.js +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt - -frappe.ui.form.on("Blog Post", { - refresh: function (frm) { - frappe.db.get_single_value("Blog Settings", "show_cta_in_blog").then((value) => { - frm.set_df_property("hide_cta", "hidden", !value); - }); - - frm.trigger("add_publish_button"); - - generate_google_search_preview(frm); - }, - title: function (frm) { - generate_google_search_preview(frm); - frm.trigger("set_route"); - }, - meta_description: function (frm) { - generate_google_search_preview(frm); - }, - blog_intro: function (frm) { - generate_google_search_preview(frm); - }, - blog_category(frm) { - frm.trigger("set_route"); - }, - set_route(frm) { - if (frm.doc.route) return; - if (frm.doc.title && frm.doc.blog_category) { - frm.call("make_route").then((r) => { - frm.set_value("route", r.message); - }); - } - }, - add_publish_button(frm) { - frm.add_custom_button(frm.doc.published ? __("Unpublish") : __("Publish"), () => { - frm.set_value("published", !frm.doc.published); - frm.save(); - }); - }, -}); - -function generate_google_search_preview(frm) { - if (!(frm.doc.meta_title || frm.doc.title)) return; - let google_preview = frm.get_field("google_preview"); - let seo_title = (frm.doc.meta_title || frm.doc.title).slice(0, 60); - let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); - let date = frm.doc.published_on ? moment(frm.doc.published_on).format("ll") + "-" : ""; - let route_array = frm.doc.route ? frm.doc.route.split("/") : []; - route_array.pop(); - - google_preview.html(` - -
- - ${frappe.boot.sitename} - › ${route_array.join(" › ")} - -
- ${seo_title} -
-

- ${date} ${seo_description} -

-
- `); -} diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json deleted file mode 100644 index 9de699e522..0000000000 --- a/frappe/website/doctype/blog_post/blog_post.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "actions": [], - "allow_guest_to_view": 1, - "allow_import": 1, - "creation": "2023-08-03 19:53:03.782490", - "doctype": "DocType", - "document_type": "Setup", - "engine": "InnoDB", - "field_order": [ - "title", - "blog_category", - "blogger", - "route", - "read_time", - "column_break_3", - "published_on", - "published", - "featured", - "hide_cta", - "enable_email_notification", - "disable_comments", - "disable_likes", - "section_break_5", - "blog_intro", - "content_type", - "content", - "content_md", - "content_html", - "email_sent", - "meta_tags", - "meta_title", - "meta_description", - "column_break_18", - "meta_image", - "section_break_20", - "google_preview" - ], - "fields": [ - { - "fieldname": "title", - "fieldtype": "Data", - "in_global_search": 1, - "label": "Title", - "no_copy": 1, - "reqd": 1 - }, - { - "fieldname": "published_on", - "fieldtype": "Date", - "label": "Published On" - }, - { - "default": "0", - "fieldname": "published", - "fieldtype": "Check", - "hidden": 1, - "label": "Published" - }, - { - "fieldname": "column_break_3", - "fieldtype": "Column Break" - }, - { - "fieldname": "blog_category", - "fieldtype": "Link", - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Blog Category", - "options": "Blog Category", - "reqd": 1 - }, - { - "fieldname": "blogger", - "fieldtype": "Link", - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Blogger", - "options": "Blogger", - "reqd": 1 - }, - { - "fieldname": "route", - "fieldtype": "Data", - "label": "Route", - "unique": 1 - }, - { - "fieldname": "section_break_5", - "fieldtype": "Section Break" - }, - { - "description": "Description for listing page, in plain text, only a couple of lines. (max 200 characters)", - "fieldname": "blog_intro", - "fieldtype": "Small Text", - "label": "Blog Intro" - }, - { - "default": "Markdown", - "fieldname": "content_type", - "fieldtype": "Select", - "label": "Content Type", - "options": "Markdown\nRich Text\nHTML", - "reqd": 1 - }, - { - "depends_on": "eval:doc.content_type === 'Rich Text'", - "fieldname": "content", - "fieldtype": "Text Editor", - "ignore_xss_filter": 1, - "in_global_search": 1, - "label": "Content" - }, - { - "depends_on": "eval:doc.content_type === 'Markdown'", - "fieldname": "content_md", - "fieldtype": "Markdown Editor", - "ignore_xss_filter": 1, - "label": "Content (Markdown)" - }, - { - "depends_on": "eval:doc.content_type === 'HTML'", - "fieldname": "content_html", - "fieldtype": "HTML Editor", - "ignore_xss_filter": 1, - "label": "Content (HTML)" - }, - { - "default": "0", - "fieldname": "email_sent", - "fieldtype": "Check", - "hidden": 1, - "label": "Email Sent" - }, - { - "default": "0", - "fieldname": "disable_comments", - "fieldtype": "Check", - "label": "Disable Comments" - }, - { - "fieldname": "meta_description", - "fieldtype": "Small Text", - "label": "Meta Description" - }, - { - "fieldname": "column_break_18", - "fieldtype": "Column Break" - }, - { - "fieldname": "meta_image", - "fieldtype": "Attach Image", - "label": "Meta Image", - "mandatory_depends_on": "eval:doc.featured" - }, - { - "fieldname": "section_break_20", - "fieldtype": "Section Break" - }, - { - "description": "This is an example Google SERP Preview.", - "fieldname": "google_preview", - "fieldtype": "HTML", - "label": "Google Snippet Preview", - "read_only": 1 - }, - { - "fieldname": "meta_tags", - "fieldtype": "Section Break", - "label": "Meta Tags" - }, - { - "description": "in minutes", - "fieldname": "read_time", - "fieldtype": "Int", - "hidden": 1, - "label": "Read Time", - "read_only": 1 - }, - { - "default": "0", - "fieldname": "featured", - "fieldtype": "Check", - "label": "Featured" - }, - { - "default": "0", - "fieldname": "hide_cta", - "fieldtype": "Check", - "hidden": 1, - "label": "Hide CTA" - }, - { - "fieldname": "meta_title", - "fieldtype": "Data", - "label": "Meta Title", - "length": 60 - }, - { - "default": "1", - "description": "Enable email notification for any comment or likes received on your Blog Post.", - "fieldname": "enable_email_notification", - "fieldtype": "Check", - "label": "Enable Email Notification" - }, - { - "default": "0", - "fieldname": "disable_likes", - "fieldtype": "Check", - "label": "Disable Likes" - } - ], - "has_web_view": 1, - "icon": "fa fa-quote-left", - "idx": 1, - "index_web_pages_for_search": 1, - "is_published_field": "published", - "links": [], - "make_attachments_public": 1, - "modified": "2024-03-23 16:01:29.148911", - "modified_by": "Administrator", - "module": "Website", - "name": "Blog Post", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "Website Manager", - "share": 1, - "write": 1 - }, - { - "create": 1, - "email": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "Blogger", - "share": 1, - "write": 1 - } - ], - "route": "blog", - "sort_field": "creation", - "sort_order": "ASC", - "states": [], - "title_field": "title", - "track_changes": 1 -} \ No newline at end of file diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py deleted file mode 100644 index cc3b66ee8e..0000000000 --- a/frappe/website/doctype/blog_post/blog_post.py +++ /dev/null @@ -1,396 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -from math import ceil - -import frappe -from frappe import _ -from frappe.utils import ( - cint, - get_fullname, - global_date_format, - markdown, - sanitize_html, - strip_html_tags, - today, -) -from frappe.website.utils import ( - clear_cache, - find_first_image, - get_comment_list, - get_html_content_based_on_type, -) -from frappe.website.website_generator import WebsiteGenerator - - -class BlogPost(WebsiteGenerator): - # begin: auto-generated types - # This code is auto-generated. Do not modify anything in this block. - - from typing import TYPE_CHECKING - - if TYPE_CHECKING: - from frappe.types import DF - - blog_category: DF.Link - blog_intro: DF.SmallText | None - blogger: DF.Link - content: DF.TextEditor | None - content_html: DF.HTMLEditor | None - content_md: DF.MarkdownEditor | None - content_type: DF.Literal["Markdown", "Rich Text", "HTML"] - disable_comments: DF.Check - disable_likes: DF.Check - email_sent: DF.Check - enable_email_notification: DF.Check - featured: DF.Check - hide_cta: DF.Check - meta_description: DF.SmallText | None - meta_image: DF.AttachImage | None - meta_title: DF.Data | None - published: DF.Check - published_on: DF.Date | None - read_time: DF.Int - route: DF.Data | None - title: DF.Data - # end: auto-generated types - - @frappe.whitelist() - def make_route(self): - if not self.route: - return ( - frappe.db.get_value("Blog Category", self.blog_category, "route") - + "/" - + self.scrub(self.title) - ) - - def validate(self): - super().validate() - - if not self.blog_intro: - content = get_html_content_based_on_type(self, "content", self.content_type) - self.blog_intro = strip_html_tags(content)[:200] - - if self.blog_intro: - self.blog_intro = self.blog_intro[:200] - - if not self.meta_title: - self.meta_title = self.title[:60] - else: - self.meta_title = self.meta_title[:60] - - if not self.meta_description: - self.meta_description = self.blog_intro[:140] - else: - self.meta_description = self.meta_description[:140] - - if self.published and not self.published_on: - self.published_on = today() - - if self.featured: - if not self.meta_image: - frappe.throw(_("A featured post must have a cover image")) - self.reset_featured_for_other_blogs() - - self.set_read_time() - - if self.is_website_published(): - from frappe.core.doctype.file.utils import extract_images_from_doc - - # Extract images first before the standard image extraction to ensure they are public. - extract_images_from_doc(self, "content", is_private=False) - extract_images_from_doc(self, "content_md", is_private=False) - - def reset_featured_for_other_blogs(self): - all_posts = frappe.get_all("Blog Post", {"featured": 1}) - for post in all_posts: - frappe.db.set_value("Blog Post", post.name, "featured", 0) - - def on_update(self): - super().on_update() - clear_cache("writers") - - def on_trash(self): - super().on_trash() - - def get_context(self, context): - # this is for double precaution. usually it wont reach this code if not published - if not cint(self.published): - raise Exception("This blog has not been published yet!") - - context.no_breadcrumbs = True - - # temp fields - context.full_name = get_fullname(self.owner) - context.updated = global_date_format(self.published_on) - context.social_links = self.fetch_social_links_info() - context.cta = self.fetch_cta() - context.enable_cta = not self.hide_cta and frappe.db.get_single_value( - "Blog Settings", "show_cta_in_blog", cache=True - ) - - if self.blogger: - context.blogger_info = frappe.get_doc("Blogger", self.blogger).as_dict() - context.author = self.blogger - - context.content = get_html_content_based_on_type(self, "content", self.content_type) - - # if meta description is not present, then blog intro or first 140 characters of the blog will be set as description - context.description = ( - self.meta_description or self.blog_intro or strip_html_tags(context.content[:140]) - ) - - context.metatags = { - "name": self.meta_title, - "description": context.description, - } - - # if meta image is not present, then first image inside the blog will be set as the meta image - image = find_first_image(context.content) - context.metatags["image"] = self.meta_image or image or None - - self.load_comments(context) - self.load_likes(context) - - context.category = frappe.db.get_value( - "Blog Category", context.doc.blog_category, ["title", "route"], as_dict=1 - ) - context.parents = [ - {"name": _("Home"), "route": "/"}, - {"name": "Blog", "route": "/blog"}, - {"label": context.category.title, "route": context.category.route}, - ] - context.guest_allowed = frappe.db.get_single_value("Blog Settings", "allow_guest_to_comment") - - def fetch_cta(self): - if frappe.db.get_single_value("Blog Settings", "show_cta_in_blog", cache=True): - blog_settings = frappe.get_cached_doc("Blog Settings") - - return { - "show_cta_in_blog": 1, - "title": blog_settings.title, - "subtitle": blog_settings.subtitle, - "cta_label": blog_settings.cta_label, - "cta_url": blog_settings.cta_url, - } - - return {} - - def fetch_social_links_info(self): - if not frappe.db.get_single_value("Blog Settings", "enable_social_sharing", cache=True): - return [] - - url = frappe.local.site + "/" + self.route - - return [ - { - "icon": "twitter", - "link": "https://twitter.com/intent/tweet?text=" + self.title + "&url=" + url, - }, - { - "icon": "facebook", - "link": "https://www.facebook.com/sharer.php?u=" + url, - }, - { - "icon": "linkedin", - "link": "https://www.linkedin.com/sharing/share-offsite/?url=" + url, - }, - { - "icon": "envelope", - "link": "mailto:?subject=" + self.title + "&body=" + url, - }, - ] - - def load_comments(self, context): - context.comment_list = get_comment_list(self.doctype, self.name) - - if not context.comment_list: - context.comment_count = 0 - else: - context.comment_count = len(context.comment_list) - - def load_likes(self, context): - user = frappe.session.user - - filters = { - "comment_type": "Like", - "reference_doctype": self.doctype, - "reference_name": self.name, - } - - context.like_count = frappe.db.count("Comment", filters) - - filters["comment_email"] = user - - if user == "Guest": - filters["ip_address"] = frappe.local.request_ip - - context.like = frappe.db.count("Comment", filters) - - def set_read_time(self): - content = self.content or self.content_html or "" - if self.content_type == "Markdown": - content = markdown(self.content_md) - - total_words = len(strip_html_tags(content).split()) - self.read_time = ceil(total_words / 250) - - -def get_list_context(context=None): - list_context = frappe._dict( - get_list=get_blog_list, - no_breadcrumbs=True, - hide_filters=True, - # show_search = True, - title=_("Blog"), - ) - - blog_settings = frappe.get_doc("Blog Settings").as_dict(no_default_fields=True) - list_context.update(blog_settings) - - category_name = frappe.utils.escape_html( - frappe.local.form_dict.blog_category or frappe.local.form_dict.category - ) - if category_name: - category = frappe.get_doc("Blog Category", category_name) - list_context.blog_introduction = category.description or _("Posts filed under {0}").format( - category.title - ) - list_context.blog_title = category.title - list_context.preview_image = category.preview_image - - elif frappe.local.form_dict.blogger: - blogger = frappe.db.get_value("Blogger", {"name": frappe.local.form_dict.blogger}, "full_name") - list_context.sub_title = _("Posts by {0}").format(blogger) - list_context.title = blogger - - elif frappe.local.form_dict.txt: - list_context.sub_title = _('Filtered by "{0}"').format(sanitize_html(frappe.local.form_dict.txt)) - - if list_context.sub_title: - list_context.parents = [{"name": _("Home"), "route": "/"}, {"name": "Blog", "route": "/blog"}] - else: - list_context.parents = [{"name": _("Home"), "route": "/"}] - - if blog_settings.browse_by_category: - list_context.blog_categories = get_blog_categories() - - list_context.metatags = { - "name": list_context.blog_title, - "title": list_context.blog_title, - "description": list_context.blog_introduction, - "image": list_context.preview_image, - } - - return list_context - - -def get_blog_categories(): - from pypika import Order - from pypika.terms import ExistsCriterion - - post, category = frappe.qb.DocType("Blog Post"), frappe.qb.DocType("Blog Category") - return ( - frappe.qb.from_(category) - .select(category.name, category.route, category.title) - .where( - (category.published == 1) - & ExistsCriterion( - frappe.qb.from_(post) - .select("name") - .where((post.published == 1) & (post.blog_category == category.name)) - ) - ) - .orderby(category.title, order=Order.asc) - .run(as_dict=1) - ) - - -def clear_blog_cache(): - for blog in frappe.db.get_list("Blog Post", fields=["route"], pluck="route", filters={"published": True}): - clear_cache(blog) - - clear_cache("writers") - - -def get_blog_list(doctype, txt=None, filters=None, limit_start=0, limit_page_length=20, order_by=None): - conditions = [] - if filters and filters.get("blog_category"): - category = filters.get("blog_category") - else: - category = frappe.utils.escape_html( - frappe.local.form_dict.blog_category or frappe.local.form_dict.category - ) - - if filters and filters.get("blogger"): - conditions.append("t1.blogger={}".format(frappe.db.escape(filters.get("blogger")))) - - if category: - conditions.append("t1.blog_category={}".format(frappe.db.escape(category))) - - if txt: - conditions.append( - "(t1.content like {0} or t1.title like {0})".format(frappe.db.escape("%" + txt + "%")) - ) - - if conditions: - frappe.local.no_cache = 1 - - query = """\ - select - t1.title, t1.name, t1.blog_category, t1.route, t1.published_on, t1.read_time, - t1.published_on as creation, - t1.read_time as read_time, - t1.featured as featured, - t1.meta_image as cover_image, - t1.content as content, - t1.content_type as content_type, - t1.content_html as content_html, - t1.content_md as content_md, - ifnull(t1.blog_intro, t1.content) as intro, - t2.full_name, t2.avatar, t1.blogger, - (select count(name) from `tabComment` - where - comment_type='Comment' - and reference_doctype='Blog Post' - and reference_name=t1.name) as comments - from `tabBlog Post` t1, `tabBlogger` t2 - where t1.published = 1 - and t1.blogger = t2.name - {condition} - order by featured desc, published_on desc, name asc - limit {page_len} OFFSET {start}""".format( - start=limit_start, - page_len=limit_page_length, - condition=(" and " + " and ".join(conditions)) if conditions else "", - ) - - posts = frappe.db.sql(query, as_dict=1) - - for post in posts: - post.content = get_html_content_based_on_type(post, "content", post.content_type) - if not post.cover_image: - post.cover_image = find_first_image(post.content) - post.published = global_date_format(post.creation) - post.content = strip_html_tags(post.content) - - if not post.comments: - post.comment_text = _("No comments yet") - elif post.comments == 1: - post.comment_text = _("1 comment") - else: - post.comment_text = _("{0} comments").format(str(post.comments)) - - post.avatar = post.avatar or "" - post.category = frappe.db.get_value( - "Blog Category", post.blog_category, ["name", "route", "title"], as_dict=True - ) - - if ( - post.avatar - and ("http:" not in post.avatar and "https:" not in post.avatar) - and not post.avatar.startswith("/") - ): - post.avatar = "/" + post.avatar - - return posts diff --git a/frappe/website/doctype/blog_post/blog_post_list.js b/frappe/website/doctype/blog_post/blog_post_list.js deleted file mode 100644 index 0d617654ca..0000000000 --- a/frappe/website/doctype/blog_post/blog_post_list.js +++ /dev/null @@ -1,10 +0,0 @@ -frappe.listview_settings["Blog Post"] = { - add_fields: ["title", "published", "blogger", "blog_category"], - get_indicator: function (doc) { - if (doc.published) { - return [__("Published"), "green", "published,=,1"]; - } else { - return [__("Not Published"), "gray", "published,=,0"]; - } - }, -}; diff --git a/frappe/website/doctype/blog_post/templates/blog_post.html b/frappe/website/doctype/blog_post/templates/blog_post.html deleted file mode 100644 index b5e2f8d4f8..0000000000 --- a/frappe/website/doctype/blog_post/templates/blog_post.html +++ /dev/null @@ -1,91 +0,0 @@ -{% extends "templates/web.html" %} - -{% block meta_block %} - {% include "templates/includes/meta_block.html" %} -{% endblock %} - -{% block page_content %} -
-
- -
- -

{{ title }}

-

- {{ blog_intro }} -

-
- - {%- if read_time -%} -  · - {{ read_time }} {{ _('min read') }} - {%- endif -%} -
-
-
-
- {{ content }} -
- -
- {%- if enable_cta -%} - {{ web_block( - "Section With Small CTA", - values=cta, - add_container=0, - add_top_padding=0, - add_bottom_padding=0, - css_class="my-5" - ) }} - {%- endif -%} - - - {% if blogger_info %} -
- {% include "templates/includes/blog/blogger.html" %} - {% endif %} - - {% if not disable_comments %} -
- {% include 'templates/includes/comments/comments.html' %} -
- {% endif %} - -
- -{% endblock %} diff --git a/frappe/website/doctype/blog_post/templates/blog_post_list.html b/frappe/website/doctype/blog_post/templates/blog_post_list.html deleted file mode 100644 index 0dc8f95ea8..0000000000 --- a/frappe/website/doctype/blog_post/templates/blog_post_list.html +++ /dev/null @@ -1,91 +0,0 @@ -{% extends "templates/web.html" %} -{% block title %}{{ blog_title or _("Blog") }}{% endblock %} -{% block hero %}{% endblock %} - -{% block page_content %} - -
-
-
-
-

{{ blog_title or _('Blog') }}

-

{{ blog_introduction or '' }}

-
-
- - {%- if browse_by_category -%} -
- - -
- {%- endif -%} -
-
- -
-
- {% if not result -%} -
- {{ no_result_message or _("Nothing to show") }} -
- {% else %} -
- {% for item in result %} - {{ item }} - {% endfor %} -
- {% endif %} - -
-
-{% endblock %} - -{% block script %} - -{% endblock %} diff --git a/frappe/website/doctype/blog_post/templates/blog_post_row.html b/frappe/website/doctype/blog_post/templates/blog_post_row.html deleted file mode 100644 index 91beeb12e9..0000000000 --- a/frappe/website/doctype/blog_post/templates/blog_post_row.html +++ /dev/null @@ -1,43 +0,0 @@ -{% from "frappe/templates/includes/avatar_macro.html" import avatar %} - -{%- set post = doc -%} -
-
-
- {% if post.cover_image %} - {{post.title}} - Cover Image - {% else %} -
- {{ post.title }} -
- {% endif %} -
-
-
-
- {%- if post.featured -%} - {{ _('Featured') }} · - {%- endif -%} - {{ post.category.title }} -
- {%- if post.featured -%} -
{{ post.title }}
- {%- else -%} -
{{ post.title }}
- {%- endif -%} -

{{ post.intro }}

-
- -
- -
-
diff --git a/frappe/website/doctype/blog_post/test_blog_post.py b/frappe/website/doctype/blog_post/test_blog_post.py deleted file mode 100644 index 4d66938159..0000000000 --- a/frappe/website/doctype/blog_post/test_blog_post.py +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE -import re - -from bs4 import BeautifulSoup - -import frappe -from frappe.custom.doctype.customize_form.customize_form import reset_customization -from frappe.tests import IntegrationTestCase -from frappe.utils import random_string, set_request -from frappe.website.doctype.blog_post.blog_post import get_blog_list -from frappe.website.serve import get_response -from frappe.website.utils import clear_website_cache -from frappe.website.website_generator import WebsiteGenerator - -EXTRA_TEST_RECORD_DEPENDENCIES = ["Blog Post"] - - -class TestBlogPost(IntegrationTestCase): - def setUp(self): - reset_customization("Blog Post") - - def tearDown(self): - if hasattr(frappe.local, "request"): - delattr(frappe.local, "request") - - def test_generator_view(self): - pages = frappe.get_all( - "Blog Post", fields=["name", "route"], filters={"published": 1, "route": ("!=", "")}, limit=1 - ) - - set_request(path=pages[0].route) - response = get_response() - - self.assertTrue(response.status_code, 200) - - html = response.get_data().decode() - self.assertTrue( - '
' in html - ) - - def test_generator_not_found(self): - pages = frappe.get_all("Blog Post", fields=["name", "route"], filters={"published": 0}, limit=1) - - route = f"test-route-{frappe.generate_hash(length=5)}" - - frappe.db.set_value("Blog Post", pages[0].name, "route", route) - - set_request(path=route) - response = get_response() - - self.assertTrue(response.status_code, 404) - - def test_category_link(self): - # Make a temporary Blog Post (and a Blog Category) - blog = make_test_blog("Test Category Link") - - # Visit the blog post page - set_request(path=blog.route) - blog_page_response = get_response() - blog_page_html = frappe.safe_decode(blog_page_response.get_data()) - - # On blog post page find link to the category page - soup = BeautifulSoup(blog_page_html, "html.parser") - category_page_link = next(iter(soup.find_all("a", href=re.compile(blog.blog_category)))) - category_page_url = category_page_link["href"] - - # Visit the category page (by following the link found in above stage) - set_request(path=category_page_url) - category_page_response = get_response() - category_page_html = frappe.safe_decode(category_page_response.get_data()) - # Category page should contain the blog post title - self.assertIn(blog.title, category_page_html) - - # Cleanup - frappe.delete_doc("Blog Post", blog.name) - frappe.delete_doc("Blog Category", blog.blog_category) - - def test_blog_pagination(self): - # Create some Blog Posts for a Blog Category - category_title, blogs, BLOG_COUNT = "List Category", [], 4 - - for _ in range(BLOG_COUNT): - blog = make_test_blog(category_title) - blogs.append(blog) - - filters = frappe._dict({"blog_category": scrub(category_title)}) - # Assert that get_blog_list returns results as expected - - self.assertEqual(len(get_blog_list(None, None, filters, 0, 3)), 3) - self.assertEqual(len(get_blog_list(None, None, filters, 0, BLOG_COUNT)), BLOG_COUNT) - self.assertEqual(len(get_blog_list(None, None, filters, 0, 2)), 2) - self.assertEqual(len(get_blog_list(None, None, filters, 2, BLOG_COUNT)), 2) - - # Cleanup Blog Post and linked Blog Category - for blog in blogs: - frappe.delete_doc(blog.doctype, blog.name) - frappe.delete_doc("Blog Category", blogs[0].blog_category) - - def test_caching(self): - # to enable caching - frappe.flags.force_website_cache = True - print(frappe.session.user) - - clear_website_cache() - # first response no-cache - pages = frappe.get_all( - "Blog Post", - fields=["name", "route"], - filters={"published": 1, "title": "_Test Blog Post"}, - limit=1, - ) - - route = pages[0].route - set_request(path=route) - # response = get_response() - response = get_response() - # TODO: enable this assert - # self.assertIn(('X-From-Cache', 'False'), list(response.headers)) - - set_request(path=route) - response = get_response() - self.assertIn(("X-From-Cache", "True"), list(response.headers)) - - frappe.flags.force_website_cache = True - - def test_spam_comments(self): - # Make a temporary Blog Post (and a Blog Category) - blog = make_test_blog("Test Spam Comment") - - # Create a spam comment - frappe.get_doc( - doctype="Comment", - comment_type="Comment", - reference_doctype="Blog Post", - reference_name=blog.name, - comment_email='spam', - comment_by='spam', - published=1, - content='More spam content. spam with link.', - ).insert() - - # Visit the blog post page - set_request(path=blog.route) - blog_page_response = get_response() - blog_page_html = frappe.safe_decode(blog_page_response.get_data()) - - self.assertNotIn('spam', blog_page_html) - self.assertIn("More spam content. spam with link.", blog_page_html) - - # Cleanup - frappe.delete_doc("Blog Post", blog.name) - frappe.delete_doc("Blog Category", blog.blog_category) - - def test_like_dislike(self): - test_blog = make_test_blog() - - frappe.db.delete("Comment", {"comment_type": "Like", "reference_doctype": "Blog Post"}) - - from frappe.templates.includes.likes.likes import like - - liked = like("Blog Post", test_blog.name, True) - self.assertEqual(liked, True) - - disliked = like("Blog Post", test_blog.name, False) - self.assertEqual(disliked, False) - - frappe.db.delete("Comment", {"comment_type": "Like", "reference_doctype": "Blog Post"}) - test_blog.delete() - - -def scrub(text): - return WebsiteGenerator.scrub(None, text) - - -def make_test_blog(category_title="Test Blog Category"): - category_name = scrub(category_title) - if not frappe.db.exists("Blog Category", category_name): - frappe.get_doc(doctype="Blog Category", title=category_title).insert() - if not frappe.db.exists("Blogger", "test-blogger"): - frappe.get_doc(doctype="Blogger", short_name="test-blogger", full_name="Test Blogger").insert() - - return frappe.get_doc( - doctype="Blog Post", - blog_category=category_name, - blogger="test-blogger", - title=random_string(20), - route=random_string(20), - content=random_string(20), - published=1, - ).insert() diff --git a/frappe/website/doctype/blog_post/test_records.json b/frappe/website/doctype/blog_post/test_records.json deleted file mode 100644 index 4b29eadfa4..0000000000 --- a/frappe/website/doctype/blog_post/test_records.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "blog_category": "-test-blog-category", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post", - "published": 1 - }, - { - "blog_category": "-test-blog-category-1", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post 1", - "published": 1 - }, - { - "blog_category": "-test-blog-category-1", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger 1", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post 2", - "published": 0 - }, - { - "blog_category": "-test-blog-category-1", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger 2", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post 3", - "published": 0 - } -] diff --git a/frappe/website/doctype/blog_settings/README.md b/frappe/website/doctype/blog_settings/README.md deleted file mode 100644 index 0a76d4e261..0000000000 --- a/frappe/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/frappe/website/doctype/blog_settings/__init__.py b/frappe/website/doctype/blog_settings/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/blog_settings/blog_settings.js b/frappe/website/doctype/blog_settings/blog_settings.js deleted file mode 100644 index 7be9b2c28b..0000000000 --- a/frappe/website/doctype/blog_settings/blog_settings.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) 2016, Frappe Technologies and contributors -// For license information, please see license.txt - -frappe.ui.form.on("Blog Settings", { - refresh: function (frm) {}, -}); diff --git a/frappe/website/doctype/blog_settings/blog_settings.json b/frappe/website/doctype/blog_settings/blog_settings.json deleted file mode 100644 index be0dd749ed..0000000000 --- a/frappe/website/doctype/blog_settings/blog_settings.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "actions": [], - "creation": "2013-03-11 17:48:16", - "description": "Settings to control blog categories and interactions like comments and likes", - "doctype": "DocType", - "engine": "InnoDB", - "field_order": [ - "blog_title", - "blog_introduction", - "preview_image", - "column_break", - "enable_social_sharing", - "allow_guest_to_comment", - "browse_by_category", - "show_cta_in_blog", - "cta_section", - "title", - "subtitle", - "column_break_11", - "cta_label", - "cta_url", - "section_break_12", - "like_limit", - "column_break_14", - "comment_limit" - ], - "fields": [ - { - "fieldname": "blog_title", - "fieldtype": "Data", - "label": "Blog Title" - }, - { - "fieldname": "blog_introduction", - "fieldtype": "Small Text", - "label": "Blog Introduction" - }, - { - "default": "0", - "fieldname": "enable_social_sharing", - "fieldtype": "Check", - "label": "Enable Social Sharing" - }, - { - "collapsible": 1, - "fieldname": "column_break", - "fieldtype": "Column Break" - }, - { - "default": "0", - "fieldname": "show_cta_in_blog", - "fieldtype": "Check", - "label": "Show \"Call to Action\" in Blog" - }, - { - "depends_on": "eval:doc.show_cta_in_blog", - "fieldname": "cta_section", - "fieldtype": "Section Break", - "label": "Call to Action" - }, - { - "fieldname": "title", - "fieldtype": "Data", - "label": "Title", - "mandatory_depends_on": "eval:doc.show_cta_in_blog" - }, - { - "fieldname": "subtitle", - "fieldtype": "Data", - "label": "Subtitle", - "mandatory_depends_on": "eval:doc.show_cta_in_blog" - }, - { - "fieldname": "cta_label", - "fieldtype": "Data", - "label": "CTA Label", - "mandatory_depends_on": "eval:doc.show_cta_in_blog" - }, - { - "fieldname": "cta_url", - "fieldtype": "Data", - "label": "CTA URL", - "mandatory_depends_on": "eval:doc.show_cta_in_blog" - }, - { - "fieldname": "column_break_11", - "fieldtype": "Column Break" - }, - { - "fieldname": "section_break_12", - "fieldtype": "Section Break", - "label": "Rate Limits" - }, - { - "default": "5", - "description": "Comment limit per hour", - "fieldname": "comment_limit", - "fieldtype": "Int", - "label": "Comment limit" - }, - { - "fieldname": "column_break_14", - "fieldtype": "Column Break" - }, - { - "default": "1", - "fieldname": "allow_guest_to_comment", - "fieldtype": "Check", - "label": "Allow Guest to comment" - }, - { - "default": "0", - "fieldname": "browse_by_category", - "fieldtype": "Check", - "label": "Browse by category" - }, - { - "default": "5", - "description": "Like limit per hour", - "fieldname": "like_limit", - "fieldtype": "Int", - "label": "Like limit" - }, - { - "fieldname": "preview_image", - "fieldtype": "Attach Image", - "label": "Preview Image" - } - ], - "icon": "fa fa-cog", - "idx": 1, - "issingle": 1, - "links": [], - "modified": "2024-03-23 16:01:29.318488", - "modified_by": "Administrator", - "module": "Website", - "name": "Blog Settings", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "email": 1, - "print": 1, - "read": 1, - "role": "Website Manager", - "share": 1, - "write": 1 - }, - { - "email": 1, - "print": 1, - "read": 1, - "role": "Blogger", - "share": 1 - } - ], - "sort_field": "creation", - "sort_order": "DESC", - "states": [], - "track_changes": 1 -} \ No newline at end of file diff --git a/frappe/website/doctype/blog_settings/blog_settings.py b/frappe/website/doctype/blog_settings/blog_settings.py deleted file mode 100644 index 2864eebc2c..0000000000 --- a/frappe/website/doctype/blog_settings/blog_settings.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -# License: MIT. See LICENSE - -import frappe -from frappe.model.document import Document - - -class BlogSettings(Document): - # begin: auto-generated types - # This code is auto-generated. Do not modify anything in this block. - - from typing import TYPE_CHECKING - - if TYPE_CHECKING: - from frappe.types import DF - - allow_guest_to_comment: DF.Check - blog_introduction: DF.SmallText | None - blog_title: DF.Data | None - browse_by_category: DF.Check - comment_limit: DF.Int - cta_label: DF.Data | None - cta_url: DF.Data | None - enable_social_sharing: DF.Check - like_limit: DF.Int - preview_image: DF.AttachImage | None - show_cta_in_blog: DF.Check - subtitle: DF.Data | None - title: DF.Data | None - # end: auto-generated types - - def on_update(self): - from frappe.website.utils import clear_cache - - clear_cache("blog") - clear_cache("writers") - - -def get_like_limit(): - return frappe.get_single_value("Blog Settings", "like_limit") or 5 - - -def get_comment_limit(): - return frappe.get_single_value("Blog Settings", "comment_limit") or 5 diff --git a/frappe/website/doctype/blog_settings/test_blog_settings.py b/frappe/website/doctype/blog_settings/test_blog_settings.py deleted file mode 100644 index 653f68c1bb..0000000000 --- a/frappe/website/doctype/blog_settings/test_blog_settings.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2020, Frappe Technologies and Contributors -# License: MIT. See LICENSE -# import frappe -from frappe.tests import IntegrationTestCase - - -class TestBlogSettings(IntegrationTestCase): - pass diff --git a/frappe/website/doctype/blogger/README.md b/frappe/website/doctype/blogger/README.md deleted file mode 100644 index 994e686ad2..0000000000 --- a/frappe/website/doctype/blogger/README.md +++ /dev/null @@ -1 +0,0 @@ -User of blog writer in "Blog" section. \ No newline at end of file diff --git a/frappe/website/doctype/blogger/__init__.py b/frappe/website/doctype/blogger/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/website/doctype/blogger/blogger.js b/frappe/website/doctype/blogger/blogger.js deleted file mode 100644 index 29afdb6298..0000000000 --- a/frappe/website/doctype/blogger/blogger.js +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) 2016, Frappe Technologies and contributors -// For license information, please see license.txt - -frappe.ui.form.on("Blogger", { - refresh: function (frm) {}, -}); diff --git a/frappe/website/doctype/blogger/blogger.json b/frappe/website/doctype/blogger/blogger.json deleted file mode 100644 index cbc1dfe467..0000000000 --- a/frappe/website/doctype/blogger/blogger.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "actions": [], - "allow_import": 1, - "autoname": "field:short_name", - "creation": "2013-03-25 16:00:51", - "description": "User ID of a Blogger", - "doctype": "DocType", - "document_type": "Setup", - "engine": "InnoDB", - "field_order": [ - "disabled", - "short_name", - "full_name", - "user", - "bio", - "avatar" - ], - "fields": [ - { - "default": "0", - "fieldname": "disabled", - "fieldtype": "Check", - "label": "Disabled" - }, - { - "description": "Will be used in url (usually first name).", - "fieldname": "short_name", - "fieldtype": "Data", - "label": "Short Name", - "reqd": 1, - "unique": 1 - }, - { - "fieldname": "full_name", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Full Name", - "reqd": 1 - }, - { - "fieldname": "user", - "fieldtype": "Link", - "label": "User", - "options": "User" - }, - { - "fieldname": "bio", - "fieldtype": "Small Text", - "label": "Bio" - }, - { - "fieldname": "avatar", - "fieldtype": "Attach Image", - "label": "Avatar" - } - ], - "icon": "fa fa-user", - "idx": 1, - "image_field": "avatar", - "links": [ - { - "link_doctype": "Blog Post", - "link_fieldname": "blogger" - } - ], - "make_attachments_public": 1, - "max_attachments": 1, - "modified": "2024-03-23 16:01:29.432477", - "modified_by": "Administrator", - "module": "Website", - "name": "Blogger", - "naming_rule": "By fieldname", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "import": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "Website Manager", - "share": 1, - "write": 1 - }, - { - "email": 1, - "print": 1, - "read": 1, - "role": "Blogger", - "share": 1, - "write": 1 - } - ], - "sort_field": "creation", - "sort_order": "DESC", - "states": [], - "title_field": "full_name", - "track_changes": 1 -} \ No newline at end of file diff --git a/frappe/website/doctype/blogger/blogger.py b/frappe/website/doctype/blogger/blogger.py deleted file mode 100644 index 2bd7b75fe8..0000000000 --- a/frappe/website/doctype/blogger/blogger.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -# License: MIT. See LICENSE - -import frappe -from frappe import _ -from frappe.model.document import Document - - -class Blogger(Document): - # begin: auto-generated types - # This code is auto-generated. Do not modify anything in this block. - - from typing import TYPE_CHECKING - - if TYPE_CHECKING: - from frappe.types import DF - - avatar: DF.AttachImage | None - bio: DF.SmallText | None - disabled: DF.Check - full_name: DF.Data - short_name: DF.Data - user: DF.Link | None - # end: auto-generated types - - def validate(self): - if self.user and not frappe.db.exists("User", self.user): - # for data import - frappe.get_doc( - {"doctype": "User", "email": self.user, "first_name": self.user.split("@", 1)[0]} - ).insert() - - def on_update(self): - "if user is set, then update all older blogs" - - from frappe.website.doctype.blog_post.blog_post import clear_blog_cache - - clear_blog_cache() - - if self.user: - for blog in frappe.db.sql_list( - """select name from `tabBlog Post` where owner=%s - and ifnull(blogger,'')=''""", - self.user, - ): - b = frappe.get_doc("Blog Post", blog) - b.blogger = self.name - b.save() - - frappe.permissions.add_user_permission("Blogger", self.name, self.user) diff --git a/frappe/website/doctype/blogger/test_blogger.py b/frappe/website/doctype/blogger/test_blogger.py deleted file mode 100644 index c694c81314..0000000000 --- a/frappe/website/doctype/blogger/test_blogger.py +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -import frappe diff --git a/frappe/website/doctype/blogger/test_records.json b/frappe/website/doctype/blogger/test_records.json deleted file mode 100644 index 4ccb7fed32..0000000000 --- a/frappe/website/doctype/blogger/test_records.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "doctype": "Blogger", - "full_name": "_Test Blogger", - "short_name": "_Test Blogger" - }, - { - "doctype": "Blogger", - "full_name": "_Test Blogger 1", - "short_name": "_Test Blogger 1" - }, - { - "doctype": "Blogger", - "full_name": "_Test Blogger 2", - "short_name": "_Test Blogger 2" - } -] \ No newline at end of file diff --git a/frappe/website/doctype/website_route_meta/test_website_route_meta.py b/frappe/website/doctype/website_route_meta/test_website_route_meta.py index 9008532075..18fabbff26 100644 --- a/frappe/website/doctype/website_route_meta/test_website_route_meta.py +++ b/frappe/website/doctype/website_route_meta/test_website_route_meta.py @@ -5,21 +5,21 @@ from frappe.tests import IntegrationTestCase from frappe.utils import set_request from frappe.website.serve import get_response -EXTRA_TEST_RECORD_DEPENDENCIES = ["Blog Post"] +EXTRA_TEST_RECORD_DEPENDENCIES = ["Web Page"] class TestWebsiteRouteMeta(IntegrationTestCase): def test_meta_tag_generation(self): blogs = frappe.get_all( - "Blog Post", fields=["name", "route"], filters={"published": 1, "route": ("!=", "")}, limit=1 + "Web Page", fields=["name", "route"], filters={"published": 1, "route": ("!=", "")}, limit=1 ) blog = blogs[0] # create meta tags for this route doc = frappe.new_doc("Website Route Meta") - doc.append("meta_tags", {"key": "type", "value": "blog_post"}) - doc.append("meta_tags", {"key": "og:title", "value": "My Blog"}) + doc.append("meta_tags", {"key": "type", "value": "web_page"}) + doc.append("meta_tags", {"key": "og:title", "value": "My Web Page"}) doc.name = blog.route doc.insert() @@ -31,8 +31,8 @@ class TestWebsiteRouteMeta(IntegrationTestCase): html = self.normalize_html(response.get_data().decode()) - self.assertIn(self.normalize_html(""""""), html) - self.assertIn(self.normalize_html(""""""), html) + self.assertIn(self.normalize_html(""""""), html) + self.assertIn(self.normalize_html(""""""), html) def tearDown(self): frappe.db.rollback() diff --git a/frappe/website/workspace/website/website.json b/frappe/website/workspace/website/website.json index bcbbcb74ad..d3eb13496c 100644 --- a/frappe/website/workspace/website/website.json +++ b/frappe/website/workspace/website/website.json @@ -1,6 +1,6 @@ { "charts": [], - "content": "[{\"id\":\"yq1JKyNTFg\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Web Page\",\"col\":3}},{\"id\":\"5GuZo0uP_K\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Web Form\",\"col\":3}},{\"id\":\"292vrD2W3o\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Blog Post\",\"col\":3}},{\"id\":\"xAkA6ItB7O\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"k8RquSngSk\",\"type\":\"card\",\"data\":{\"card_name\":\"Blog\",\"col\":4}},{\"id\":\"qEHBG-BEBI\",\"type\":\"card\",\"data\":{\"card_name\":\"Web Site\",\"col\":4}},{\"id\":\"oUox7d-8lQ\",\"type\":\"card\",\"data\":{\"card_name\":\"Knowledge Base\",\"col\":4}},{\"id\":\"96xAe0QVaV\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"ZvrzvEoYtc\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}},{\"id\":\"FVMFcgsiyK\",\"type\":\"card\",\"data\":{\"card_name\":\"Tracking\",\"col\":4}}]", + "content": "[{\"id\":\"yq1JKyNTFg\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Web Page\",\"col\":3}},{\"id\":\"5GuZo0uP_K\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Web Form\",\"col\":3}},{\"id\":\"xAkA6ItB7O\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"qEHBG-BEBI\",\"type\":\"card\",\"data\":{\"card_name\":\"Web Site\",\"col\":4}},{\"id\":\"oUox7d-8lQ\",\"type\":\"card\",\"data\":{\"card_name\":\"Knowledge Base\",\"col\":4}},{\"id\":\"96xAe0QVaV\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"ZvrzvEoYtc\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}},{\"id\":\"FVMFcgsiyK\",\"type\":\"card\",\"data\":{\"card_name\":\"Tracking\",\"col\":4}}]", "creation": "2020-03-02 14:13:51.089373", "custom_blocks": [], "docstatus": 0, @@ -67,48 +67,6 @@ "onboard": 0, "type": "Link" }, - { - "hidden": 0, - "icon": "", - "is_query_report": 0, - "label": "Blog", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Blog Post", - "link_count": 0, - "link_to": "Blog Post", - "link_type": "DocType", - "onboard": 1, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Blogger", - "link_count": 0, - "link_to": "Blogger", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Blog Category", - "link_count": 0, - "link_to": "Blog Category", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, { "hidden": 0, "icon": "project", @@ -279,14 +237,6 @@ "roles": [], "sequence_id": 14.0, "shortcuts": [ - { - "color": "Green", - "format": "{} Published", - "label": "Blog Post", - "link_to": "Blog Post", - "stats_filter": "{\"published\":\"1\"}", - "type": "DocType" - }, { "color": "Green", "format": "{} Published", diff --git a/frappe/www/rss.py b/frappe/www/rss.py deleted file mode 100644 index e275893204..0000000000 --- a/frappe/www/rss.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: MIT. See LICENSE - -from urllib.parse import quote, urljoin - -import frappe -from frappe.utils import cstr, escape_html, get_request_site_address, now - -no_cache = 1 -base_template_path = "www/rss.xml" - - -def get_context(context): - """generate rss feed""" - - host = get_request_site_address() - - blog_list = frappe.get_all( - "Blog Post", - fields=["name", "published_on", "modified", "title", "blog_intro", "route"], - filters={"published": 1}, - order_by="published_on desc", - limit=20, - ) - - for blog in blog_list: - blog.link = urljoin(host, blog.route) - blog.blog_intro = escape_html(blog.blog_intro or "") - blog.title = escape_html(blog.title or "") - - if blog_list: - modified = max(blog["modified"] for blog in blog_list) - else: - modified = now() - - blog_settings = frappe.get_doc("Blog Settings", "Blog Settings") - - context = { - "title": blog_settings.blog_title or "Blog", - "description": blog_settings.blog_introduction or "", - "modified": modified, - "items": blog_list, - "link": host + "/blog", - } - - # print context - return context diff --git a/frappe/www/rss.xml b/frappe/www/rss.xml deleted file mode 100644 index 8752896370..0000000000 --- a/frappe/www/rss.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - {{ title }} - {{ description }} - {{ link }} - {{ modified }} - {{ modified }} - 1800 - {% for i in items %} - {{ i.title }} - {{ i.blog_intro }} - {{ i.link }} - {{ i.name }} - {{ i.published_on }} - {% endfor %} - - From 6d1008933f9ba3d2a9801615ec3bade92bc1aaff Mon Sep 17 00:00:00 2001 From: Elton Lobo <62232730+EltonLobo07@users.noreply.github.com> Date: Mon, 28 Jul 2025 16:25:53 +0530 Subject: [PATCH 21/25] feat: add user invitation doctype & related public methods (#33308) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add user invitation doctype & related public methods * style(user-invitation): execute formatters & add semgrep comments * refactor(user-invitation): use `is` to compare `None` values * fix(user-invitation): skip fetching `after_accept` for default app * fix(user-invitation): translate email templates * fix(user-invitaton): return pending invites from invite by email api * refactor(user-invitation): improve code quality * fix(user-invitation): translate all error messages * refactor(user-invitation): improve security & readability Improvements: - move invite expiration check to `daily_maintenance` - explicitly import all of the used packages - specify methods for all security-critical endpoints - improve error messages and give them suitable titles - remove unnecessary utility functions - make invitation key management secure - translate all of the subjects of the sent emails - use the `app_title` hook to create email titles - commit the work done after each iteration of the background invitation expiry checker - restructure code to improve readability - use `user.reset_password` to generate the target link - use clear long names to name identifiers - add document states with relevant colors (User Invitation doctype) - differ `sendmail` emails whenever possible - send an email to the invitation creator instead of the invitee after the invite has expired - remove `User Invitation Manager` role * fix(user-invitation): use valid emails to test doctype & related code * feat(user-invitation): support adding multiple roles * refactor(user-invitation): mark relevant fields `set only once` * feat(user-invitation): add `Cancelled` status * test(user-invitation): correct broken tests * test(user-invitation): form valid f-strings & run code formatter * feat(user-invitation): make doctype usable from desk * fix(user-invitation): remove delete permission from invitation doctype * feat(user-invitation): pass user inserted info to `after_accept` hook * refactor(user-invitation): improve custom action methods & errors Improvements: - trigger actions only when the invitation is in the `Pending` state - use lowercase letters to start error messages - handle cases where `user_invitation_hook` is not defined * refactor(user-invitation): remove site name from email templates * docs(user-invitation): add internal documentation * feat(user-invitation): add 'get pending' & cancel invites apis * fix(user-invitation): make invitation app specific * refactor(user-invitation): avoid mixing function programming * fix(user-invitation): make apis usable for app specific valid users * fix(user-invitation): allow app specific invites * feat(user-invitation): make list view & permission checks app specific * refactor(user-invitation): convert class methods to static when possible * feat(user-invitation): add `app_only_for` method to the doc * fix(user-invitation): f-string syntax error in `get_permission_query_conditions` * docs(user-invitation): add examples & improve the internal doc * refactor: rename method name static_ is unnecessary only_for doesn't make sense in this context when arguments are not roles * fix: Support POST request too We dont follow REST semantics 100%, anything that modifies something should ideally be doable with POST too. * chore: cap * fix: Avoid ignore_permissions as user arg --------- Co-authored-by: Ankush Menat --- frappe/core/api/user_invitation.py | 126 +++++++++ .../core/doctype/user_invitation/__init__.py | 0 .../cancel_invitation_api_example.png | Bin 0 -> 194914 bytes .../get_pending_invitations_api_example.png | Bin 0 -> 222530 bytes .../user_invitation/internal_doc/index.md | 106 ++++++++ .../invite_by_email_api_example.png | Bin 0 -> 288575 bytes .../role_doc_role_permissions_manager.png | Bin 0 -> 120632 bytes ...nvitation_doc_role_permissions_manager.png | Bin 0 -> 123424 bytes .../user_invitation_hooks_example.png | Bin 0 -> 104928 bytes .../user_invitation/test_user_invitation.py | 254 ++++++++++++++++++ .../user_invitation/user_invitation.js | 23 ++ .../user_invitation/user_invitation.json | 143 ++++++++++ .../user_invitation/user_invitation.py | 241 +++++++++++++++++ frappe/core/doctype/user_role/__init__.py | 0 frappe/core/doctype/user_role/user_role.json | 35 +++ frappe/core/doctype/user_role/user_role.py | 23 ++ frappe/hooks.py | 7 + frappe/templates/emails/user_invitation.html | 20 ++ .../emails/user_invitation_cancelled.html | 9 + .../emails/user_invitation_expired.html | 9 + 20 files changed, 996 insertions(+) create mode 100644 frappe/core/api/user_invitation.py create mode 100644 frappe/core/doctype/user_invitation/__init__.py create mode 100644 frappe/core/doctype/user_invitation/internal_doc/cancel_invitation_api_example.png create mode 100644 frappe/core/doctype/user_invitation/internal_doc/get_pending_invitations_api_example.png create mode 100644 frappe/core/doctype/user_invitation/internal_doc/index.md create mode 100644 frappe/core/doctype/user_invitation/internal_doc/invite_by_email_api_example.png create mode 100644 frappe/core/doctype/user_invitation/internal_doc/role_doc_role_permissions_manager.png create mode 100644 frappe/core/doctype/user_invitation/internal_doc/user_invitation_doc_role_permissions_manager.png create mode 100644 frappe/core/doctype/user_invitation/internal_doc/user_invitation_hooks_example.png create mode 100644 frappe/core/doctype/user_invitation/test_user_invitation.py create mode 100644 frappe/core/doctype/user_invitation/user_invitation.js create mode 100644 frappe/core/doctype/user_invitation/user_invitation.json create mode 100644 frappe/core/doctype/user_invitation/user_invitation.py create mode 100644 frappe/core/doctype/user_role/__init__.py create mode 100644 frappe/core/doctype/user_role/user_role.json create mode 100644 frappe/core/doctype/user_role/user_role.py create mode 100644 frappe/templates/emails/user_invitation.html create mode 100644 frappe/templates/emails/user_invitation_cancelled.html create mode 100644 frappe/templates/emails/user_invitation_expired.html diff --git a/frappe/core/api/user_invitation.py b/frappe/core/api/user_invitation.py new file mode 100644 index 0000000000..09811a9ace --- /dev/null +++ b/frappe/core/api/user_invitation.py @@ -0,0 +1,126 @@ +import frappe +import frappe.utils +from frappe import _ +from frappe.core.doctype.user_invitation.user_invitation import UserInvitation + + +@frappe.whitelist(methods=["POST"]) +def invite_by_email( + emails: str, roles: list[str], redirect_to_path: str, app_name: str = "frappe" +) -> dict[str, list[str]]: + UserInvitation.validate_role(app_name) + + # validate emails + frappe.utils.validate_email_address(emails, throw=True) + email_list = frappe.utils.split_emails(emails) + if not email_list: + frappe.throw(title=_("Invalid input"), msg=_("No email addresses to invite")) + + # get relevant data from the database + accepted_invite_emails = frappe.db.get_all( + "User Invitation", + filters={"email": ["in", email_list], "status": "Accepted", "app_name": app_name}, + pluck="email", + ) + pending_invite_emails = frappe.db.get_all( + "User Invitation", + filters={"email": ["in", email_list], "status": "Pending", "app_name": app_name}, + pluck="email", + ) + + # create invitation documents + to_invite = list(set(email_list) - set(accepted_invite_emails) - set(pending_invite_emails)) + for email in to_invite: + frappe.get_doc( + doctype="User Invitation", + email=email, + roles=[dict(role=role) for role in roles], + app_name=app_name, + redirect_to_path=redirect_to_path, + ).insert(ignore_permissions=True) + + return { + "accepted_invite_emails": accepted_invite_emails, + "pending_invite_emails": pending_invite_emails, + "invited_emails": to_invite, + } + + +@frappe.whitelist(allow_guest=True, methods=["GET"]) +def accept_invitation(key: str) -> None: + _accept_invitation(key, False) + + +# `app_name` is required for security +@frappe.whitelist(methods=["PATCH", "POST"]) +def cancel_invitation(name: str, app_name: str): + UserInvitation.validate_role(app_name) + + if not frappe.db.exists("User Invitation", name): + frappe.throw(title=_("Error"), msg=_("Invitation not found")) + + invitation = frappe.get_doc("User Invitation", name) + if invitation.app_name != app_name: + # message is not specific enough for security + frappe.throw(title=_("Error"), msg=_("Invitation not found")) + + if invitation.status == "Cancelled": + return {"cancelled_now": False} + + if invitation.status != "Pending": + frappe.throw(title=_("Error"), msg=_("Invitation cannot be cancelled")) + + invitation.flags.ignore_permissions = True + return {"cancelled_now": invitation.cancel_invite()} + + +@frappe.whitelist(methods=["GET"]) +def get_pending_invitations(app_name: str): + UserInvitation.validate_role(app_name) + + pending_invitations = frappe.db.get_all( + "User Invitation", fields=["name", "email"], filters={"status": "Pending", "app_name": app_name} + ) + res = [] + for pending_invitation in pending_invitations: + roles = frappe.db.get_all("User Role", fields=["role"], filters={"parent": pending_invitation.name}) + res.append( + { + "name": pending_invitation.name, + "email": pending_invitation.email, + "roles": [r.role for r in roles], + } + ) + return res + + +def _accept_invitation(key: str, in_test: bool) -> None: + # get invitation + hashed_key = frappe.utils.sha256_hash(key) + invitation_name = frappe.db.get_value("User Invitation", filters={"key": hashed_key}) + if not invitation_name: + frappe.throw(title=_("Error"), msg=_("Invalid key")) + invitation = frappe.get_doc("User Invitation", invitation_name) + + # accept invitation + invitation.accept(ignore_permissions=True) + + user = frappe.get_doc("User", invitation.email) + should_update_password = not user.last_password_reset_date and not bool( + frappe.get_system_settings("disable_user_pass_login") + ) + + # set redirect_to + redirect_to = frappe.utils.get_url(invitation.get_redirect_to_path()) + if should_update_password: + redirect_to = f"{user.reset_password()}&redirect_to=/{invitation.get_redirect_to_path()}" + + # GET requests do not cause an implicit commit + frappe.db.commit() # nosemgrep + + if not in_test and not should_update_password: + frappe.local.login_manager.login_as(invitation.email) + + # set response + frappe.local.response["type"] = "redirect" + frappe.local.response["location"] = redirect_to diff --git a/frappe/core/doctype/user_invitation/__init__.py b/frappe/core/doctype/user_invitation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/core/doctype/user_invitation/internal_doc/cancel_invitation_api_example.png b/frappe/core/doctype/user_invitation/internal_doc/cancel_invitation_api_example.png new file mode 100644 index 0000000000000000000000000000000000000000..b1cdc73a692337494947f8914dd1a9a6e78c3058 GIT binary patch literal 194914 zcmbTebyyrr(>{y^2@U~5a0?LJ-5mmiAi>?;eR0=7aEAm-aCevB?(V+0+iy6}^S1Ox=Kl%(iq2nYmy2ngsNcv#?!L8KiR z0^)U z@bvg<4cljP!wIi`y7l>4M>eu|WDN>Jj5MudV9l7s6aN%dvz#0UVv>a1x{31(?T&T; z8@Z$}yg-b@Jh^wQLqE)SDNHUV1=;{Jh*c^4C~{COExQRcf>=*vXVMJ809(io zZ8fzy-T)pnb_x3~_<>7YYVR?r`&8pF;cuN%iYJ@u?~#rvf1@LE$vlr7-K-=~#K{c_ zNux`av3i8L;kTj%Mltd_ zhAF;+48s?q=P?eu<$4-Zr0t9PJec}Hk10QiEV)D|1@~7-{`uVN$A^og8|q=qu0R^| zfe4i3VLj?~46`_WI!}eH89&F2;J|)Z=W-hhvv7z>b-0_C>?Sm}^&`uFTPDbkMoJIKiWc^8 z22GsUO8%t%g2WQ7T+%f6=dRKKM)v zQ+%RUf;TRy+(BZC#7iXSkJEl@ zOVWf+A8fHIVvFdB-ST=R!01HA_06kK(o`S%(Tx1{vs4SD;`Ifr$zDKeB8?ZNE2$KZgwO{#@=@M8giB8Zy*I-)Y?j?qJs&(Y-J8 zpH;v|$&ak;a9by}#n+@Sfv?4Mfp>W~6OGpa>Y!OeK0&#G@Wjv#(D7&JBxKUbqv*#&;@3t-OJPZRNLhthf*u5KAj(FXzAF_$VvP0$b09Rb3$Y8X%SBpRT3p&% z+93```d3_kd=!<|=Xam(K7OWDi&g#MMow);Rv6_NM<< zE&A;@X0bVyXOPpiYKQ>v`ZL1TGl_ZBARHe=RPUIqTs<&(+ZD^*QuhhL?C zVPP|NAKVfU<|5tsKJ~+s%^9>wI;G`?P*zhD)!HXp2;3x3nH6i zYO~8VNZr7rq@iq?u+HZhezU{4<20N;yrQY8MNS_{-&yj$q_0G|q!#yGgk%qF4+Td= zYUzS>ElTYOm>ygYmRNeeC_DXq!MS_t$qr)ozIvMT&k)bRA8F2DW=Q!`F+<3ZT$|0& z+t_no9$k()l0UtJJK>ky&fDdAWU)hYYIXJa+unrEB>hz6_SGHM{pHQC``)`RHv+F2 zUrQpI!oNjuMA5`{eGiZM2BV5%mt7-z$Y`cg!cWUT5iS#zBv3S1DS#KH8Yw=YCb(U% zT~DKvFd#K3yhDRb5QazJqN`KVeKY5`&W`Sm=x|}$Icq=vPvW06DHzR+ce)qBZ J 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

F>QNGJN*%?c?N9+vCnTvL*|Aj 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

    X{}{;>rI6~L`+4Ifnh-8Tcg8av7) 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
    sdY{S{&n$5`@2+ZVTD8T})AQ3w*! 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
    OEh?+8Nxhe+ z{yD*Kr>K)B%}@KWy0#%~14xRp_d2*Hc2ZUOmyBf_z${dPAjiiWg z{h(?##?ssDm*N1o)e00XEMNF-72c#2i*>z1r7zy=CsY_LbX47;VZo4VG|#33pN`|>8%oY8%$ad3v((!IW=i0!w#R;}49c0+UKQTVpD^QKcd zb)dlBE%7HPu@76pN6Wp`7feB(HDi$WQ<$pX)1lj@ul`ZG1X|LQ@#M=cEo-JZXV@Ke z*K28S@Wz@4Q{B#}5FfQ;h}~KJF|iSK>FU&PYQ?llRE|1H;t9!Lf-GoSDUZ!3fa>={;e@2msXC^o6jwQ@rgreem{&x8FdfIaxNv zQhK;Fk7}N)(G3c-PU^$j0h*T4D*Oj=J1DJCYo2#SpK-|0c7zsx&3Lq7TY_GOzg5$!AT~3U z3kxdhWDp^E9jN{NHGRb^uYzMW$EwS8KsJm))I}S_e|zhXlI!lNRTacD$LtCI%`sRu zXz6-jS)X1#p8j)8e36kQw|@FMqW{HB8yjRDBHrpkw#=VzANMpR@9ei%Mfq6ZyB5VIDQUlJQt93aj0p-=K&ZD;X8ay8PcA zp8$J8emi`JhCvKKp+Tij%&zP9vShq)_okx=&5|^`1kgnX9KaP`G50`uArq_4N9@uJ zlm{G2UW>}TPD;s{OSkN;2cU$SscCGKni(JV_xDj!e!hNB8D}j0HP5#KM_DJ$o{fNn zLh$Iy-T_`prdn(+K&CCcu70`hJm8soFq2aM+*u&CzO1k3(-~aGz@1zPu*(_2QO1Cx z#m6~IJ#VA&@)?3roD3~`z-NNe@pjrKTzR3Vi$APAoGBo^ZS+XG6R&p^C&3rz-qv0t zUZ2zKP(8o#Cfz%Ilj|W_$4Wya$--6GGV-*9`Ur>95q>YP=NC7by}mBhk0})1ctO`@ zjgtX|_cz@~zGzvoZpmlA`IgT-;FH9p-umrglj#F( z-xqshk|)=8Z>OXbbR|XT&Qa7q>XWefU1Y?a;BSya>6(!mQ?!D11C2PF0b~J4-VYz1 z%p;TY$v6)rNF2efE~+X29LUh0)?x>#h$Ax_8_O(kbinkSWt~xu&!RC=dgR_=4FXC! zu^7V6+Wo4ne=mLOzLi=^Z=4qUyYcq1rl!XGaZl1Y{rE0_bir6D;ESfvN-+rJ9J{fY zW;f_EH>+xDnZv#7sFT0g$>$o(>6(prxwGzlFixx5Nv|kO?l)}-+}xY|$E*&eMCzDk z;rf;z9lkaQ-!_%;Co`@zVNatVq|(JUqjVjMSzZf19k}c;mQsGi^hEcfo#x5_>4jg| zxXN|>_TsJpm+6nD`)Cp9llbA@v%ewCzt`~zh3Ti=cb3Fk+aaD+Kzk1WFfIGmO_2sW#Jhe7m^0Y?pl|h0$Kpj&Y8VKmzW$%_7cKD7U_J z(LFjw$TC=WxaVvBHjdvhzfHRe0&;T;BX6A8(V+}fH0RW-XoXn`4i>;K2znmU+9{dV zZ^s|*bldCpm9)8x!1ZPw?Pfg|V@0(#J9j2?>tgktC$tI-jyHm6z=q@8tf~VLxoLUW ziM%2;Y2bbz_IwhB*^Who3QTp*A>HBTWE1|iZ!R@*JYHHW_uJ%&-?wGY_FroYuQ*lo zO47Z8S^|C%U-eHGX}A>pG&ely}Z8lR3tC1+$FN$ir+% zIha≀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 Z1NxBvwJRU*Ug2N>0#8>zmvv4FO#nnwQNjQK literal 0 HcmV?d00001 diff --git a/frappe/core/doctype/user_invitation/internal_doc/get_pending_invitations_api_example.png b/frappe/core/doctype/user_invitation/internal_doc/get_pending_invitations_api_example.png new file mode 100644 index 0000000000000000000000000000000000000000..f5994fa6dff1dd7a22c9c5fe7eb286f4cb85b912 GIT binary patch literal 222530 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 z

    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 z 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 literal 0 HcmV?d00001 diff --git a/frappe/core/doctype/user_invitation/internal_doc/index.md b/frappe/core/doctype/user_invitation/internal_doc/index.md new file mode 100644 index 0000000000..2e3fa127bf --- /dev/null +++ b/frappe/core/doctype/user_invitation/internal_doc/index.md @@ -0,0 +1,106 @@ +# User Invitation + +## Index + +- [Motivation](#motivation) +- [How to use it?](#how-to-use-it) +- [Whitelisted functions](#whitelisted-functions) + - [`invite_by_email`](#invite_by_email) + - [`accept_invitation`](#accept_invitation) + - [`get_pending_invitations`](#get_pending_invitations) + - [`cancel_invitation`](#cancel_invitation) +- [Normal flow](#normal-flow) +- [Important points](#important-points) + +## Motivation + +- Until now, there was no way to invite and create a new user based on a sent invitation that can be accepted or rejected by the invitee. +- Due to this, custom Framework applications have to implement a user invitation flow. But most of the rules around this flow are generic enough to let Framework store all of the common logic associated with a typical user invitation flow. +- This will help ensure consistency and prevent code duplication for custom Framework applications that need this type of feature. + +## How to use it? + +Define user invitation hooks in your app's `hooks.py` file. An example is shown below. + +![user invitation hooks example](./user_invitation_hooks_example.png) + +- `only_for` + + Roles that are allowed to invite users to your app. + +- `allowed_roles` + + Roles that are allowed to be invited to your app. + +- `after_accept` + + Dot path of the function to execute after the user accepts the invitation. + + ```python + from frappe.model.document import Document + + def after_accept( + invitation: Document, + user: Document, + user_inserted: bool + ) -> None: + # your business logic here + ``` + +> `after_accept` is optional and should be used only if required. + +At this point, you can start using the whitelisted functions under the `apis` section (`frappe/core/api/user_invitation.py`). For more information, read [whitelisted functions](#whitelisted-functions). + +By default, only `System Manager`s can create a new invitation, view the list of invitations, or view more details associated with a single invitation **using the desk**. To enable users with specific roles to perform the mentioned actions, you might want to provide `create`, `read`, and `write` access to the relevant roles. + +Example - If a user having the `Agent Manager` role should be able to use all of the user invitation features using the desk, these should be enabled: + +- User Invitation doctype + ![user invitation doctype's role permissions manager entry](./user_invitation_doc_role_permissions_manager.png) + +- Role doctype + ![role doctype's role permissions manager entry](./role_doc_role_permissions_manager.png) + +## Whitelisted functions + +There are a few whitelisted functions that can be used to manage invitations. All of the whitelisted functions are in `frappe/core/api/user_invitation.py`. + +### `invite_by_email` + +Invite new emails to your application. + +![invite by email api example](./invite_by_email_api_example.png) + +> The invited email will receive an email with a link to accept the invitation. + +### `accept_invitation` + +Enables invitees to accept the sent invitations. + +> This function should not be used directly. The only reason this function is whitelisted is because the sent invitations contain a link that the invitees use to accept the invitations. + +### `get_pending_invitations` + +Get all of the pending invitations associated with an installed Framework application. + +![get pending invitations api example](./get_pending_invitations_api_example.png) + +### `cancel_invitation` + +Cancels a specific pending invitation associated with an installed Framework application. + +![cancel invitation api example](./cancel_invitation_api_example.png) + +## Normal flow + +1. Invitations are created from the desk or by using the [`invite_by_email`](#invite_by_email) whitelisted function. An email is sent to the invited email with a link to accept the invitation. +2. The app administrator or anyone able to use the desk can cancel invitations. Once an invitation is cancelled, an email is sent to the creator of the invitation. +3. Once the invitation is accepted, a new user is created (if required) with the roles specified in the invitation and is redirected to the specified path. +4. If the invitee doesn't accept the invitation within three days, the invitation is marked as expired by a background job that executes every day. Currently, there is no way to customize the expiration time. + +## Important points: + +- There can't be multiple pending invitations for the same app. +- Once an invitation document is created from Desk, all of the fields are immutable except the `Redirect To Path` field which is mutable only when the invitation status is `Pending`. +- To manually mark an invitation as expired, you can use the `expire` method on the invitation document. +- To manually cancel an invitation, you can use the `cancel_invite` method on the invitation document. diff --git a/frappe/core/doctype/user_invitation/internal_doc/invite_by_email_api_example.png b/frappe/core/doctype/user_invitation/internal_doc/invite_by_email_api_example.png new file mode 100644 index 0000000000000000000000000000000000000000..47856f1c5e2b73f89f411735df2af4144f1d4bb8 GIT binary patch literal 288575 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 Vq(u8{<>>f=Qq1!Wr4)m~l7R->UCP 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