Merge branch 'frappe:develop' into fix-calendar-end-date-issue
This commit is contained in:
commit
a2f2fb34b1
13 changed files with 61 additions and 51 deletions
|
|
@ -13,6 +13,7 @@ from frappe.core.doctype.version.version import get_diff
|
|||
from frappe.model import no_value_fields
|
||||
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.data import escape_html
|
||||
from frappe.utils.xlsxutils import (
|
||||
read_xls_file_from_attached_file,
|
||||
read_xlsx_file_from_attached_file,
|
||||
|
|
@ -727,7 +728,9 @@ class Row:
|
|||
elif df.fieldtype == "Link":
|
||||
exists = self.link_exists(value, df)
|
||||
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(
|
||||
{
|
||||
"row": self.row_number,
|
||||
|
|
@ -746,7 +749,8 @@ class Row:
|
|||
"col": col.column_number,
|
||||
"field": df_as_json(df),
|
||||
"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,
|
||||
"field": df_as_json(df),
|
||||
"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,
|
||||
"field": df_as_json(df),
|
||||
"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))
|
||||
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}")
|
||||
self.warnings.append(
|
||||
{
|
||||
|
|
@ -1088,7 +1093,7 @@ class Column:
|
|||
invalid = values - set(options)
|
||||
if invalid:
|
||||
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}")
|
||||
self.warnings.append(
|
||||
{
|
||||
|
|
|
|||
|
|
@ -199,6 +199,7 @@ def get_diff(old, new, for_child=False, compare_cancelled=False):
|
|||
field_meta.options,
|
||||
{"name": ("in", (old_value, new_value))},
|
||||
["name", title_field],
|
||||
ignore_ifnull=True,
|
||||
)
|
||||
for r in result:
|
||||
if r[0] == old_value:
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from frappe import _
|
|||
from frappe.utils import cint, cstr, flt
|
||||
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)
|
||||
|
||||
VARCHAR_CAST_PATTERN = re.compile(r"varchar\(([\d]+)\)")
|
||||
|
|
|
|||
|
|
@ -188,16 +188,18 @@ class EmailQueue(Document):
|
|||
if ctx.smtp_server.session.has_extn("SIZE"):
|
||||
if max_size := ctx.smtp_server.session.esmtp_features.get("size"):
|
||||
max_size = int(max_size)
|
||||
msg_size = len(msg)
|
||||
|
||||
if msg_size > max_size:
|
||||
msg_size_mb = msg_size / (1024 * 1024)
|
||||
max_size_mb = max_size / (1024 * 1024)
|
||||
frappe.throw(
|
||||
_(
|
||||
"Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
|
||||
).format(msg_size_mb, max_size_mb)
|
||||
)
|
||||
if max_size > 0:
|
||||
msg_size = len(msg)
|
||||
|
||||
if msg_size > max_size:
|
||||
msg_size_mb = msg_size / (1024 * 1024)
|
||||
max_size_mb = max_size / (1024 * 1024)
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: frappe\n"
|
||||
"Report-Msgid-Bugs-To: developers@frappe.io\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"
|
||||
"Language-Team: Bosnian\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
|
||||
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
|
||||
#. Settings'
|
||||
|
|
@ -23504,7 +23504,7 @@ msgstr "SQL"
|
|||
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.json
|
||||
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'
|
||||
#: 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
|
||||
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
|
||||
msgid "The CSV format is case sensitive"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: frappe\n"
|
||||
"Report-Msgid-Bugs-To: developers@frappe.io\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"
|
||||
"Language-Team: Croatian\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
|
||||
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
|
||||
#. Settings'
|
||||
|
|
@ -23504,7 +23504,7 @@ msgstr "SQL"
|
|||
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.json
|
||||
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'
|
||||
#: 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
|
||||
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
|
||||
msgid "The CSV format is case sensitive"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: frappe\n"
|
||||
"Report-Msgid-Bugs-To: developers@frappe.io\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"
|
||||
"Language-Team: Russian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -9694,7 +9694,7 @@ msgstr "Введите здесь статические параметры url
|
|||
|
||||
#: 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)."
|
||||
msgstr ""
|
||||
msgstr "Введите имя поля валюты или кэшированное значение (например, Company:company:default_currency)."
|
||||
|
||||
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
|
||||
#. Settings'
|
||||
|
|
@ -23506,7 +23506,7 @@ msgstr "SQL"
|
|||
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.json
|
||||
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'
|
||||
#: frappe/core/doctype/recorder/recorder.js:85
|
||||
|
|
@ -27375,7 +27375,7 @@ msgstr "Автоповтор для этого документа был отк
|
|||
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.py:43
|
||||
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
|
||||
msgid "The CSV format is case sensitive"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: frappe\n"
|
||||
"Report-Msgid-Bugs-To: developers@frappe.io\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"
|
||||
"Language-Team: Serbian (Cyrillic)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -9690,7 +9690,7 @@ msgstr "Унесите статичке URL параметре (нпр. sender=E
|
|||
|
||||
#: 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)."
|
||||
msgstr ""
|
||||
msgstr "Унесите назив поља за валуту или кеширану вредност (нпр. Company:company:default_currency)."
|
||||
|
||||
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
|
||||
#. Settings'
|
||||
|
|
@ -23502,7 +23502,7 @@ msgstr "SQL"
|
|||
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.json
|
||||
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'
|
||||
#: frappe/core/doctype/recorder/recorder.js:85
|
||||
|
|
@ -27371,7 +27371,7 @@ msgstr "Аутоматско понављање за овај документ
|
|||
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.py:43
|
||||
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
|
||||
msgid "The CSV format is case sensitive"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: frappe\n"
|
||||
"Report-Msgid-Bugs-To: developers@frappe.io\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"
|
||||
"Language-Team: Serbian (Latin)\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
|
||||
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
|
||||
#. Settings'
|
||||
|
|
@ -23503,7 +23503,7 @@ msgstr "SQL"
|
|||
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.json
|
||||
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'
|
||||
#: 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
|
||||
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
|
||||
msgid "The CSV format is case sensitive"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: frappe\n"
|
||||
"Report-Msgid-Bugs-To: developers@frappe.io\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"
|
||||
"Language-Team: Swedish\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
|
||||
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
|
||||
#. Settings'
|
||||
|
|
@ -23503,7 +23503,7 @@ msgstr "SQL"
|
|||
#. Description of the 'Condition' (Small Text) field in DocType 'Bulk Update'
|
||||
#: frappe/desk/doctype/bulk_update/bulk_update.json
|
||||
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'
|
||||
#: 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
|
||||
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
|
||||
msgid "The CSV format is case sensitive"
|
||||
|
|
|
|||
|
|
@ -380,15 +380,17 @@ frappe.Application = class Application {
|
|||
logout() {
|
||||
var me = this;
|
||||
me.logged_out = true;
|
||||
return frappe.call({
|
||||
method: "logout",
|
||||
callback: function (r) {
|
||||
if (r.exc) {
|
||||
return;
|
||||
}
|
||||
frappe.confirm(__("Are you sure you want to log out?"), function () {
|
||||
return frappe.call({
|
||||
method: "logout",
|
||||
callback: function (r) {
|
||||
if (r.exc) {
|
||||
return;
|
||||
}
|
||||
|
||||
me.redirect_to_login();
|
||||
},
|
||||
me.redirect_to_login();
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
handle_session_expired() {
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat
|
|||
) {
|
||||
html +=
|
||||
'<br><span class="small">' +
|
||||
__(frappe.utils.escape_html(frappe.utils.html2text(d.description))) +
|
||||
__(frappe.utils.html2text(frappe.utils.escape_html(d.description))) +
|
||||
"</span>";
|
||||
}
|
||||
return $(`<div role="option">`)
|
||||
|
|
|
|||
|
|
@ -341,7 +341,7 @@ frappe.ui.form.Toolbar = class Toolbar {
|
|||
// Navigate
|
||||
if (!this.frm.is_new() && !this.frm.meta.issingle) {
|
||||
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);
|
||||
},
|
||||
|
|
@ -349,7 +349,7 @@ frappe.ui.form.Toolbar = class Toolbar {
|
|||
__("Previous Document")
|
||||
);
|
||||
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);
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue