Merge branch 'frappe:develop' into fix-calendar-end-date-issue

This commit is contained in:
Krishna Pramod Shirsath 2026-04-07 12:21:41 +05:30 committed by GitHub
commit a2f2fb34b1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 61 additions and 51 deletions

View file

@ -13,6 +13,7 @@ from frappe.core.doctype.version.version import get_diff
from frappe.model import no_value_fields from frappe.model import no_value_fields
from frappe.utils import cint, cstr, duration_to_seconds, flt, update_progress_bar from frappe.utils import cint, cstr, duration_to_seconds, flt, update_progress_bar
from frappe.utils.csvutils import get_csv_content_from_google_sheets, read_csv_content from frappe.utils.csvutils import get_csv_content_from_google_sheets, read_csv_content
from frappe.utils.data import escape_html
from frappe.utils.xlsxutils import ( from frappe.utils.xlsxutils import (
read_xls_file_from_attached_file, read_xls_file_from_attached_file,
read_xlsx_file_from_attached_file, read_xlsx_file_from_attached_file,
@ -727,7 +728,9 @@ class Row:
elif df.fieldtype == "Link": elif df.fieldtype == "Link":
exists = self.link_exists(value, df) exists = self.link_exists(value, df)
if not exists: if not exists:
msg = _("Value {0} missing for {1}").format(frappe.bold(value), frappe.bold(df.options)) msg = _("Value {0} missing for {1}").format(
frappe.bold(escape_html(cstr(value))), frappe.bold(df.options)
)
self.warnings.append( self.warnings.append(
{ {
"row": self.row_number, "row": self.row_number,
@ -746,7 +749,8 @@ class Row:
"col": col.column_number, "col": col.column_number,
"field": df_as_json(df), "field": df_as_json(df),
"message": _("Value {0} must in {1} format").format( "message": _("Value {0} must in {1} format").format(
frappe.bold(value), frappe.bold(get_user_format(col.date_format)) frappe.bold(escape_html(cstr(value))),
frappe.bold(get_user_format(col.date_format)),
), ),
} }
) )
@ -761,7 +765,8 @@ class Row:
"col": col.column_number, "col": col.column_number,
"field": df_as_json(df), "field": df_as_json(df),
"message": _("Value {0} must in {1} format").format( "message": _("Value {0} must in {1} format").format(
frappe.bold(value), frappe.bold(get_user_format(col.date_format)) frappe.bold(escape_html(cstr(value))),
frappe.bold(get_user_format(col.date_format)),
), ),
} }
) )
@ -774,7 +779,7 @@ class Row:
"col": col.column_number, "col": col.column_number,
"field": df_as_json(df), "field": df_as_json(df),
"message": _("Value {0} must be in the valid duration format: d h m s").format( "message": _("Value {0} must be in the valid duration format: d h m s").format(
frappe.bold(value) frappe.bold(escape_html(cstr(value)))
), ),
} }
) )
@ -1045,7 +1050,7 @@ class Column:
] ]
not_exists = list(set(values) - set(exists)) not_exists = list(set(values) - set(exists))
if not_exists: if not_exists:
missing_values = ", ".join(not_exists) missing_values = ", ".join(escape_html(v) for v in not_exists)
message = _("The following values do not exist for {0}: {1}") message = _("The following values do not exist for {0}: {1}")
self.warnings.append( self.warnings.append(
{ {
@ -1088,7 +1093,7 @@ class Column:
invalid = values - set(options) invalid = values - set(options)
if invalid: if invalid:
valid_values = ", ".join(frappe.bold(o) for o in options) valid_values = ", ".join(frappe.bold(o) for o in options)
invalid_values = ", ".join(frappe.bold(i) for i in invalid) invalid_values = ", ".join(frappe.bold(escape_html(i)) for i in invalid)
message = _("The following values are invalid: {0}. Values must be one of {1}") message = _("The following values are invalid: {0}. Values must be one of {1}")
self.warnings.append( self.warnings.append(
{ {

View file

@ -199,6 +199,7 @@ def get_diff(old, new, for_child=False, compare_cancelled=False):
field_meta.options, field_meta.options,
{"name": ("in", (old_value, new_value))}, {"name": ("in", (old_value, new_value))},
["name", title_field], ["name", title_field],
ignore_ifnull=True,
) )
for r in result: for r in result:
if r[0] == old_value: if r[0] == old_value:

View file

@ -5,7 +5,7 @@ from frappe import _
from frappe.utils import cint, cstr, flt from frappe.utils import cint, cstr, flt
from frappe.utils.defaults import get_not_null_defaults from frappe.utils.defaults import get_not_null_defaults
# This matches anything that isn't [a-zA-Z0-9_] # This matches anything that isn't Unicode Word Characters, Numbers and Underscore.
SPECIAL_CHAR_PATTERN = re.compile(r"[\W]", flags=re.UNICODE) SPECIAL_CHAR_PATTERN = re.compile(r"[\W]", flags=re.UNICODE)
VARCHAR_CAST_PATTERN = re.compile(r"varchar\(([\d]+)\)") VARCHAR_CAST_PATTERN = re.compile(r"varchar\(([\d]+)\)")

View file

@ -188,16 +188,18 @@ class EmailQueue(Document):
if ctx.smtp_server.session.has_extn("SIZE"): if ctx.smtp_server.session.has_extn("SIZE"):
if max_size := ctx.smtp_server.session.esmtp_features.get("size"): if max_size := ctx.smtp_server.session.esmtp_features.get("size"):
max_size = int(max_size) max_size = int(max_size)
msg_size = len(msg)
if msg_size > max_size: if max_size > 0:
msg_size_mb = msg_size / (1024 * 1024) msg_size = len(msg)
max_size_mb = max_size / (1024 * 1024)
frappe.throw( if msg_size > max_size:
_( msg_size_mb = msg_size / (1024 * 1024)
"Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB" max_size_mb = max_size / (1024 * 1024)
).format(msg_size_mb, max_size_mb) frappe.throw(
) _(
"Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
).format(msg_size_mb, max_size_mb)
)
return msg return msg

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n" "Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-05 09:44+0000\n" "POT-Creation-Date: 2026-04-05 09:44+0000\n"
"PO-Revision-Date: 2026-04-05 14:45\n" "PO-Revision-Date: 2026-04-06 15:04\n"
"Last-Translator: developers@frappe.io\n" "Last-Translator: developers@frappe.io\n"
"Language-Team: Bosnian\n" "Language-Team: Bosnian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -9692,7 +9692,7 @@ msgstr "Ovdje unesi statičke parametre URL-a (npr. pošiljatelj=ERPNext, korisn
#: frappe/public/js/form_builder/components/FieldProperties.vue:66 #: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)." msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr "" msgstr "Unesite naziv polja za valutu ili keširanu vrijednost (npr. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS #. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings' #. Settings'
@ -23504,7 +23504,7 @@ msgstr "SQL"
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update' #. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
#: frappe/desk/doctype/bulk_update/bulk_update.json #: frappe/desk/doctype/bulk_update/bulk_update.json
msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}" msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}"
msgstr "" msgstr "SQL Uslovi. Primjer: {\"status\" : \"open\", \"priority\" : \"medium\"}"
#. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query' #. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query'
#: frappe/core/doctype/recorder/recorder.js:85 #: frappe/core/doctype/recorder/recorder.js:85
@ -27373,7 +27373,7 @@ msgstr "Automatsko Ponavljanje za ovaj dokument je onemogućeno."
#: frappe/desk/doctype/bulk_update/bulk_update.py:43 #: frappe/desk/doctype/bulk_update/bulk_update.py:43
msgid "The Bulk Update could not happen due to <b>{0}</b>" msgid "The Bulk Update could not happen due to <b>{0}</b>"
msgstr "" msgstr "Masovno ažuriranje nije moglo da se desi zbog <b>{0}</b>"
#: frappe/public/js/frappe/form/grid.js:1310 #: frappe/public/js/frappe/form/grid.js:1310
msgid "The CSV format is case sensitive" msgid "The CSV format is case sensitive"

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n" "Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-05 09:44+0000\n" "POT-Creation-Date: 2026-04-05 09:44+0000\n"
"PO-Revision-Date: 2026-04-05 14:45\n" "PO-Revision-Date: 2026-04-06 15:04\n"
"Last-Translator: developers@frappe.io\n" "Last-Translator: developers@frappe.io\n"
"Language-Team: Croatian\n" "Language-Team: Croatian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -9692,7 +9692,7 @@ msgstr "Ovdje unesi statičke parametre URL-a (npr. pošiljatelj=ERPNext, korisn
#: frappe/public/js/form_builder/components/FieldProperties.vue:66 #: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)." msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr "" msgstr "Unesite naziv polja za valutu ili predmemoriranu vrijednost (npr. Company:company:default_valute)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS #. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings' #. Settings'
@ -23504,7 +23504,7 @@ msgstr "SQL"
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update' #. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
#: frappe/desk/doctype/bulk_update/bulk_update.json #: frappe/desk/doctype/bulk_update/bulk_update.json
msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}" msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}"
msgstr "" msgstr "SQL Uvjeti. Primjer: {\"status\" : \"open\", \"priority\" : \"medium\"}"
#. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query' #. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query'
#: frappe/core/doctype/recorder/recorder.js:85 #: frappe/core/doctype/recorder/recorder.js:85
@ -27373,7 +27373,7 @@ msgstr "Automatsko Ponavljanje za ovaj dokument je onemogućeno."
#: frappe/desk/doctype/bulk_update/bulk_update.py:43 #: frappe/desk/doctype/bulk_update/bulk_update.py:43
msgid "The Bulk Update could not happen due to <b>{0}</b>" msgid "The Bulk Update could not happen due to <b>{0}</b>"
msgstr "" msgstr "Masovno ažuriranje nije se moglo dogoditi zbog <b>{0}</b>"
#: frappe/public/js/frappe/form/grid.js:1310 #: frappe/public/js/frappe/form/grid.js:1310
msgid "The CSV format is case sensitive" msgid "The CSV format is case sensitive"

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n" "Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-05 09:44+0000\n" "POT-Creation-Date: 2026-04-05 09:44+0000\n"
"PO-Revision-Date: 2026-04-05 14:45\n" "PO-Revision-Date: 2026-04-06 15:03\n"
"Last-Translator: developers@frappe.io\n" "Last-Translator: developers@frappe.io\n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -9694,7 +9694,7 @@ msgstr "Введите здесь статические параметры url
#: frappe/public/js/form_builder/components/FieldProperties.vue:66 #: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)." msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr "" msgstr "Введите имя поля валюты или кэшированное значение (например, Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS #. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings' #. Settings'
@ -23506,7 +23506,7 @@ msgstr "SQL"
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update' #. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
#: frappe/desk/doctype/bulk_update/bulk_update.json #: frappe/desk/doctype/bulk_update/bulk_update.json
msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}" msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}"
msgstr "" msgstr "Условия SQL. Пример: {\"status\" : \"open\", \"priority\" : \"medium\"}"
#. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query' #. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query'
#: frappe/core/doctype/recorder/recorder.js:85 #: frappe/core/doctype/recorder/recorder.js:85
@ -27375,7 +27375,7 @@ msgstr "Автоповтор для этого документа был отк
#: frappe/desk/doctype/bulk_update/bulk_update.py:43 #: frappe/desk/doctype/bulk_update/bulk_update.py:43
msgid "The Bulk Update could not happen due to <b>{0}</b>" msgid "The Bulk Update could not happen due to <b>{0}</b>"
msgstr "" msgstr "Массовое обновление не удалось выполнить из-за <b>{0}</b>"
#: frappe/public/js/frappe/form/grid.js:1310 #: frappe/public/js/frappe/form/grid.js:1310
msgid "The CSV format is case sensitive" msgid "The CSV format is case sensitive"

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n" "Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-05 09:44+0000\n" "POT-Creation-Date: 2026-04-05 09:44+0000\n"
"PO-Revision-Date: 2026-04-05 14:45\n" "PO-Revision-Date: 2026-04-06 15:03\n"
"Last-Translator: developers@frappe.io\n" "Last-Translator: developers@frappe.io\n"
"Language-Team: Serbian (Cyrillic)\n" "Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -9690,7 +9690,7 @@ msgstr "Унесите статичке URL параметре (нпр. sender=E
#: frappe/public/js/form_builder/components/FieldProperties.vue:66 #: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)." msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr "" msgstr "Унесите назив поља за валуту или кеширану вредност (нпр. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS #. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings' #. Settings'
@ -23502,7 +23502,7 @@ msgstr "SQL"
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update' #. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
#: frappe/desk/doctype/bulk_update/bulk_update.json #: frappe/desk/doctype/bulk_update/bulk_update.json
msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}" msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}"
msgstr "" msgstr "SQL услови. Пример: {\"status\" : \"open\", \"priority\" : \"medium\"}"
#. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query' #. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query'
#: frappe/core/doctype/recorder/recorder.js:85 #: frappe/core/doctype/recorder/recorder.js:85
@ -27371,7 +27371,7 @@ msgstr "Аутоматско понављање за овај документ
#: frappe/desk/doctype/bulk_update/bulk_update.py:43 #: frappe/desk/doctype/bulk_update/bulk_update.py:43
msgid "The Bulk Update could not happen due to <b>{0}</b>" msgid "The Bulk Update could not happen due to <b>{0}</b>"
msgstr "" msgstr "Масовно ажурирање није могло бити извршено због <b>{0}</b>"
#: frappe/public/js/frappe/form/grid.js:1310 #: frappe/public/js/frappe/form/grid.js:1310
msgid "The CSV format is case sensitive" msgid "The CSV format is case sensitive"

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n" "Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-05 09:44+0000\n" "POT-Creation-Date: 2026-04-05 09:44+0000\n"
"PO-Revision-Date: 2026-04-05 14:46\n" "PO-Revision-Date: 2026-04-06 15:04\n"
"Last-Translator: developers@frappe.io\n" "Last-Translator: developers@frappe.io\n"
"Language-Team: Serbian (Latin)\n" "Language-Team: Serbian (Latin)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -9691,7 +9691,7 @@ msgstr "Unesite statičke URL parametre (npr. sender=ERPNext, username=ERPNext,
#: frappe/public/js/form_builder/components/FieldProperties.vue:66 #: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)." msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr "" msgstr "Unesite naziv polja za valutu ili keširanu vrednost (npr. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS #. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings' #. Settings'
@ -23503,7 +23503,7 @@ msgstr "SQL"
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update' #. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
#: frappe/desk/doctype/bulk_update/bulk_update.json #: frappe/desk/doctype/bulk_update/bulk_update.json
msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}" msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}"
msgstr "" msgstr "SQL uslovi. Primer: {\"status\" : \"open\", \"priority\" : \"medium\"}"
#. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query' #. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query'
#: frappe/core/doctype/recorder/recorder.js:85 #: frappe/core/doctype/recorder/recorder.js:85
@ -27372,7 +27372,7 @@ msgstr "Automatsko ponavljanje za ovaj dokument je onemogućeno."
#: frappe/desk/doctype/bulk_update/bulk_update.py:43 #: frappe/desk/doctype/bulk_update/bulk_update.py:43
msgid "The Bulk Update could not happen due to <b>{0}</b>" msgid "The Bulk Update could not happen due to <b>{0}</b>"
msgstr "" msgstr "Masovno ažuriranje nije moglo biti izvršeno zbog <b>{0}</b>"
#: frappe/public/js/frappe/form/grid.js:1310 #: frappe/public/js/frappe/form/grid.js:1310
msgid "The CSV format is case sensitive" msgid "The CSV format is case sensitive"

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n" "Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n" "Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-05 09:44+0000\n" "POT-Creation-Date: 2026-04-05 09:44+0000\n"
"PO-Revision-Date: 2026-04-05 14:45\n" "PO-Revision-Date: 2026-04-06 15:03\n"
"Last-Translator: developers@frappe.io\n" "Last-Translator: developers@frappe.io\n"
"Language-Team: Swedish\n" "Language-Team: Swedish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -9691,7 +9691,7 @@ msgstr "Ange statiska url parametrar här (T.ex.. Avsändare = System, användar
#: frappe/public/js/form_builder/components/FieldProperties.vue:66 #: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)." msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr "" msgstr "Ange fältnamn för valutafält eller cachat värde (t.ex. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS #. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings' #. Settings'
@ -23503,7 +23503,7 @@ msgstr "SQL"
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update' #. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
#: frappe/desk/doctype/bulk_update/bulk_update.json #: frappe/desk/doctype/bulk_update/bulk_update.json
msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}" msgid "SQL Conditions. Example: {\"status\" : \"open\", \"priority\" : \"medium\"}"
msgstr "" msgstr "SQL Villkor. Exempel: {\"status\" : \"open\", \"priority\" : \"medium\"}"
#. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query' #. Label of the sql_explain_html (HTML) field in DocType 'Recorder Query'
#: frappe/core/doctype/recorder/recorder.js:85 #: frappe/core/doctype/recorder/recorder.js:85
@ -27372,7 +27372,7 @@ msgstr "Återkommande för detta dokument är inaktiverad."
#: frappe/desk/doctype/bulk_update/bulk_update.py:43 #: frappe/desk/doctype/bulk_update/bulk_update.py:43
msgid "The Bulk Update could not happen due to <b>{0}</b>" msgid "The Bulk Update could not happen due to <b>{0}</b>"
msgstr "" msgstr "Mass uppdatering kunde inte ske på grund av <b>{0}</b>"
#: frappe/public/js/frappe/form/grid.js:1310 #: frappe/public/js/frappe/form/grid.js:1310
msgid "The CSV format is case sensitive" msgid "The CSV format is case sensitive"

View file

@ -380,15 +380,17 @@ frappe.Application = class Application {
logout() { logout() {
var me = this; var me = this;
me.logged_out = true; me.logged_out = true;
return frappe.call({ frappe.confirm(__("Are you sure you want to log out?"), function () {
method: "logout", return frappe.call({
callback: function (r) { method: "logout",
if (r.exc) { callback: function (r) {
return; if (r.exc) {
} return;
}
me.redirect_to_login(); me.redirect_to_login();
}, },
});
}); });
} }
handle_session_expired() { handle_session_expired() {

View file

@ -242,7 +242,7 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat
) { ) {
html += html +=
'<br><span class="small">' + '<br><span class="small">' +
__(frappe.utils.escape_html(frappe.utils.html2text(d.description))) + __(frappe.utils.html2text(frappe.utils.escape_html(d.description))) +
"</span>"; "</span>";
} }
return $(`<div role="option">`) return $(`<div role="option">`)

View file

@ -341,7 +341,7 @@ frappe.ui.form.Toolbar = class Toolbar {
// Navigate // Navigate
if (!this.frm.is_new() && !this.frm.meta.issingle) { if (!this.frm.is_new() && !this.frm.meta.issingle) {
this.page.add_action_icon( this.page.add_action_icon(
"es-line-left-chevron", frappe.utils.is_rtl() ? "es-line-right-chevron" : "es-line-left-chevron",
() => { () => {
this.frm.navigate_records(1); this.frm.navigate_records(1);
}, },
@ -349,7 +349,7 @@ frappe.ui.form.Toolbar = class Toolbar {
__("Previous Document") __("Previous Document")
); );
this.page.add_action_icon( this.page.add_action_icon(
"es-line-right-chevron", frappe.utils.is_rtl() ? "es-line-left-chevron" : "es-line-right-chevron",
() => { () => {
this.frm.navigate_records(0); this.frm.navigate_records(0);
}, },