fix: ensure 2FA patch sets parent only for 2FA keys (#17575)

* fix: ensure 2FA patch sets parent only for 2FA keys

* fix: try to rebuild defaults

* fix: set other app defaults as well

* fix: set POS profile defaults

* fix: exists params

* chore: remove unnecessary change

* fix: handle case where POS Profile doesnt exist

* chore: move erpnext code to erpnext
This commit is contained in:
Sagar Vora 2022-07-21 07:34:47 +00:00 committed by GitHub
parent b42e3b7a6b
commit 85a3837b14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 6 deletions

View file

@ -44,12 +44,7 @@ class SystemSettings(Document):
frappe.flags.update_last_reset_password_date = True
def on_update(self):
for df in self.meta.get("fields"):
if df.fieldtype not in no_value_fields and self.has_value_changed(df.fieldname):
frappe.db.set_default(df.fieldname, self.get(df.fieldname))
if self.language:
set_default_language(self.language)
self.set_defaults()
frappe.cache().delete_value("system_settings")
frappe.cache().delete_value("time_zone")
@ -57,6 +52,14 @@ class SystemSettings(Document):
if frappe.flags.update_last_reset_password_date:
update_last_reset_password_date()
def set_defaults(self):
for df in self.meta.get("fields"):
if df.fieldtype not in no_value_fields and self.has_value_changed(df.fieldname):
frappe.db.set_default(df.fieldname, self.get(df.fieldname))
if self.language:
set_default_language(self.language)
def update_last_reset_password_date():
frappe.db.sql(

View file

@ -184,6 +184,7 @@ frappe.patches.v13_0.jinja_hook
frappe.patches.v13_0.update_notification_channel_if_empty
frappe.patches.v13_0.set_first_day_of_the_week
frappe.patches.v13_0.encrypt_2fa_secrets
frappe.patches.v13_0.reset_corrupt_defaults
execute:frappe.reload_doc('custom', 'doctype', 'custom_field')
frappe.patches.v14_0.update_workspace2 # 20.09.2021
frappe.patches.v14_0.save_ratings_in_fraction #23-12-2021

View file

@ -39,6 +39,7 @@ def execute():
.set(table.parent, PARENT_FOR_DEFAULTS)
.set(table.defvalue, defvalue_cases)
.where(table.parent == OLD_PARENT)
.where(table.defkey.like("%_otpsecret"))
).run()
clear_defaults_cache()

View file

@ -0,0 +1,33 @@
import frappe
from frappe.patches.v13_0.encrypt_2fa_secrets import DOCTYPE
from frappe.patches.v13_0.encrypt_2fa_secrets import PARENT_FOR_DEFAULTS as TWOFACTOR_PARENT
from frappe.utils import cint
def execute():
"""
This patch is needed to fix parent incorrectly set as `__2fa` because of
https://github.com/frappe/frappe/commit/a822092211533ff17ff9b92dd86f6f868ed63e2e
"""
if not frappe.db.get_value(
DOCTYPE, {"parent": TWOFACTOR_PARENT, "defkey": ("not like", "%_otp%")}, "defkey"
):
return
# system settings
system_settings = frappe.get_single("System Settings")
system_settings.set_defaults()
# home page
frappe.db.set_default(
"desktop:home_page", "workspace" if cint(system_settings.setup_complete) else "setup-wizard"
)
# letter head
try:
letter_head = frappe.get_doc("Letter Head", {"is_default": 1})
letter_head.set_as_default()
except frappe.DoesNotExistError:
pass