From a507de886316462dc15dd6f85bc268052fe18a0f Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Fri, 2 Oct 2020 17:01:58 +0200 Subject: [PATCH 01/46] fix: allow empty type for Web Templates that are not sections --- frappe/website/doctype/web_template/web_template.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/website/doctype/web_template/web_template.json b/frappe/website/doctype/web_template/web_template.json index fed7008cdb..492c265e55 100644 --- a/frappe/website/doctype/web_template/web_template.json +++ b/frappe/website/doctype/web_template/web_template.json @@ -41,7 +41,7 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Type", - "options": "Section\nNavbar\nFooter" + "options": "\nSection\nNavbar\nFooter" }, { "depends_on": "standard", @@ -58,7 +58,7 @@ "link_fieldname": "web_template" } ], - "modified": "2020-09-25 00:48:57.902292", + "modified": "2020-10-02 17:00:52.512209", "modified_by": "Administrator", "module": "Website", "name": "Web Template", From 80fad21311482ea67699613b0ba4c43d4879fe63 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Wed, 14 Oct 2020 15:54:06 +0530 Subject: [PATCH 02/46] chore: add as_list parameter to msgprint --- frappe/__init__.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 554f1f9747..ec032fef19 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -312,7 +312,7 @@ def log(msg): debug_log.append(as_unicode(msg)) -def msgprint(msg, title=None, raise_exception=0, as_table=False, indicator=None, alert=False, primary_action=None, is_minimizable=None, wide=None): +def msgprint(msg, title=None, raise_exception=0, as_table=False, as_list=False, indicator=None, alert=False, primary_action=None, is_minimizable=None, wide=None): """Print a message to the user (via HTTP response). Messages are sent in the `__server_messages` property in the response JSON and shown in a pop-up / modal. @@ -321,6 +321,7 @@ def msgprint(msg, title=None, raise_exception=0, as_table=False, indicator=None, :param title: [optional] Message title. :param raise_exception: [optional] Raise given exception and show message. :param as_table: [optional] If `msg` is a list of lists, render as HTML table. + :param as_list: [optional] If `msg` is a list, render as un-ordered list. :param primary_action: [optional] Bind a primary server/client side action. :param is_minimizable: [optional] Allow users to minimize the modal :param wide: [optional] Show wide modal @@ -356,6 +357,16 @@ def msgprint(msg, title=None, raise_exception=0, as_table=False, indicator=None, out.message = '''{}
'''.format(table_rows) + + if as_list and type(msg) in (list, tuple): + if len(msg) > 1: + list_rows = '' + for row in msg: + list_rows += '
  • {}
  • '.format(row) + + out.message = ''''''.format(list_rows) + elif len(msg) == 1: + out.message = msg[0] if flags.print_messages and out.message: print(f"Message: {repr(out.message).encode('utf-8')}") From 350bc0258fc677ca0a64727d0f7423abc14c1a3e Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Wed, 14 Oct 2020 16:02:02 +0530 Subject: [PATCH 03/46] fix: pass as_list to frappe.throw --- frappe/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index ec032fef19..8e6aaf71af 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -416,12 +416,12 @@ def clear_last_message(): if len(local.message_log) > 0: local.message_log = local.message_log[:-1] -def throw(msg, exc=ValidationError, title=None, is_minimizable=None, wide=None): +def throw(msg, exc=ValidationError, title=None, is_minimizable=None, wide=None, **kwargs): """Throw execption and show message (`msgprint`). :param msg: Message. :param exc: Exception class. Default `frappe.ValidationError`""" - msgprint(msg, raise_exception=exc, title=title, indicator='red', is_minimizable=is_minimizable, wide=wide) + msgprint(msg, raise_exception=exc, title=title, indicator='red', is_minimizable=is_minimizable, wide=wide, **kwargs) def emit_js(js, user=False, **kwargs): if user == False: From d04e6cc95f1b10e35cde634c7f21db458b77d321 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Wed, 14 Oct 2020 21:35:58 +0530 Subject: [PATCH 04/46] fix: handle msgprint html on client side --- frappe/__init__.py | 22 +++------------------- frappe/public/js/frappe/ui/messages.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 8e6aaf71af..1144b228c0 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -347,26 +347,10 @@ def msgprint(msg, title=None, raise_exception=0, as_table=False, as_list=False, return if as_table and type(msg) in (list, tuple): - - table_rows = '' - for row in msg: - table_row_data = '' - for data in row: - table_row_data += '{}'.format(data) - table_rows += '{}'.format(table_row_data) - - out.message = '''{}
    '''.format(table_rows) + out.as_table = 1 - if as_list and type(msg) in (list, tuple): - if len(msg) > 1: - list_rows = '' - for row in msg: - list_rows += '
  • {}
  • '.format(row) - - out.message = '''
      {}
    '''.format(list_rows) - elif len(msg) == 1: - out.message = msg[0] + if as_list and type(msg) in (list, tuple) and len(msg) > 1: + out.as_list = 1 if flags.print_messages and out.message: print(f"Message: {repr(out.message).encode('utf-8')}") diff --git a/frappe/public/js/frappe/ui/messages.js b/frappe/public/js/frappe/ui/messages.js index c37cc41650..bf1b13b424 100644 --- a/frappe/public/js/frappe/ui/messages.js +++ b/frappe/public/js/frappe/ui/messages.js @@ -128,6 +128,19 @@ frappe.msgprint = function(msg, title, is_minimizable) { data.indicator = 'blue'; } + if (data.as_list) { + const list_rows = data.message.map(m => `
  • ${m}
  • `).join(''); + data.message = `
      ${list_rows}
    `; + } + + if (data.as_table) { + const rows = data.message.map(row => { + const cols = row.map(col => `${col}`).join(''); + return `${cols}` + }).join(''); + data.message = `${rows}
    `; + } + if(data.message instanceof Array) { data.message.forEach(function(m) { frappe.msgprint(m); From 2e74cf2c77b275d25ae10fe48aaa5e13bb963258 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Wed, 14 Oct 2020 21:38:18 +0530 Subject: [PATCH 05/46] fix: missing semicolon --- frappe/public/js/frappe/ui/messages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/ui/messages.js b/frappe/public/js/frappe/ui/messages.js index bf1b13b424..9f40c59819 100644 --- a/frappe/public/js/frappe/ui/messages.js +++ b/frappe/public/js/frappe/ui/messages.js @@ -136,7 +136,7 @@ frappe.msgprint = function(msg, title, is_minimizable) { if (data.as_table) { const rows = data.message.map(row => { const cols = row.map(col => `${col}`).join(''); - return `${cols}` + return `${cols}`; }).join(''); data.message = `${rows}
    `; } From dc98dba97f7f9f5f97e50e7d57c4975e90a242a7 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Mon, 19 Oct 2020 14:48:49 +0200 Subject: [PATCH 06/46] fix: "Component" istead of empty type --- frappe/website/doctype/web_template/web_template.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/website/doctype/web_template/web_template.json b/frappe/website/doctype/web_template/web_template.json index 492c265e55..2728f5a1a7 100644 --- a/frappe/website/doctype/web_template/web_template.json +++ b/frappe/website/doctype/web_template/web_template.json @@ -41,7 +41,7 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Type", - "options": "\nSection\nNavbar\nFooter" + "options": "Component\nSection\nNavbar\nFooter" }, { "depends_on": "standard", @@ -58,7 +58,7 @@ "link_fieldname": "web_template" } ], - "modified": "2020-10-02 17:00:52.512209", + "modified": "2020-10-19 14:44:16.694730", "modified_by": "Administrator", "module": "Website", "name": "Web Template", From aba8bf28bc7727e9b0f5f8b76a7c8c11c2d2dfd2 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Mon, 19 Oct 2020 15:52:01 +0200 Subject: [PATCH 07/46] feat: set filter on Web Page Blocks Component is not allowed as a page section, only as part of another Web Template. --- frappe/website/doctype/web_page/web_page.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/frappe/website/doctype/web_page/web_page.js b/frappe/website/doctype/web_page/web_page.js index ab4f534c61..78b42856c9 100644 --- a/frappe/website/doctype/web_page/web_page.js +++ b/frappe/website/doctype/web_page/web_page.js @@ -19,6 +19,9 @@ frappe.ui.form.on('Web Page', { insert_code: function(frm) { frm.events.layout(frm); }, + onload: function(frm) { + frm.trigger('set_filters_on_web_page_blocks'); + }, refresh: function(frm) { if (frm.doc.template_path) { frm.set_read_only(); @@ -40,7 +43,20 @@ frappe.ui.form.on('Web Page', { frm.set_value('end_date', end_date); } }, - + content_type: function(frm) { + frm.trigger('set_filters_on_web_page_blocks'); + }, + set_filters_on_web_page_blocks: function(frm) { + if (frm.doc.content_type === 'Page Builder') { + frm.set_query('web_template', 'page_blocks', function() { + return { + "filters": { + "type": ['!=', 'Component'] + } + }; + }); + } + }, set_meta_tags(frm) { frappe.utils.set_meta_tag(frm.doc.route); } From 5d3178ed19b075d7fbb73fbf4a395274f7b79c71 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Tue, 20 Oct 2020 14:53:23 +0200 Subject: [PATCH 08/46] fix: disable padding and container by default --- frappe/utils/jinja.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index 6eb9d98971..7fc8f48173 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -212,9 +212,9 @@ def web_blocks(blocks): 'doctype': 'Web Page Block', 'web_template': block['template'], 'web_template_values': block.get('values', {}), - 'add_top_padding': 1, - 'add_bottom_padding': 1, - 'add_container': 1, + 'add_top_padding': 0, + 'add_bottom_padding': 0, + 'add_container': 0, 'hide_block': 0, 'css_class': '' }) From e90faf76b59a84e9cdecd37c64df4112e1f84956 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 22 Oct 2020 17:43:31 +0530 Subject: [PATCH 09/46] fix: Remove unnecessary code - Extra spacing is only applied to templates of type Section - should be able to call web_block without values - default type should be Section - set_query can be set once --- frappe/utils/jinja.py | 8 +++---- frappe/website/doctype/web_page/web_page.js | 22 ++++++------------- .../doctype/web_template/web_template.json | 3 ++- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index 7fc8f48173..cd74b2a283 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -193,7 +193,7 @@ def inspect(var, render=True): return get_jenv().from_string(html).render(context) -def web_block(template, values, **kwargs): +def web_block(template, values=None, **kwargs): options = {"template": template, "values": values} options.update(kwargs) return web_blocks([options]) @@ -212,9 +212,9 @@ def web_blocks(blocks): 'doctype': 'Web Page Block', 'web_template': block['template'], 'web_template_values': block.get('values', {}), - 'add_top_padding': 0, - 'add_bottom_padding': 0, - 'add_container': 0, + 'add_top_padding': 1, + 'add_bottom_padding': 1, + 'add_container': 1, 'hide_block': 0, 'css_class': '' }) diff --git a/frappe/website/doctype/web_page/web_page.js b/frappe/website/doctype/web_page/web_page.js index 78b42856c9..a58c854e5c 100644 --- a/frappe/website/doctype/web_page/web_page.js +++ b/frappe/website/doctype/web_page/web_page.js @@ -20,7 +20,13 @@ frappe.ui.form.on('Web Page', { frm.events.layout(frm); }, onload: function(frm) { - frm.trigger('set_filters_on_web_page_blocks'); + frm.set_query('web_template', 'page_blocks', function() { + return { + filters: { + "type": 'Section' + } + }; + }); }, refresh: function(frm) { if (frm.doc.template_path) { @@ -43,20 +49,6 @@ frappe.ui.form.on('Web Page', { frm.set_value('end_date', end_date); } }, - content_type: function(frm) { - frm.trigger('set_filters_on_web_page_blocks'); - }, - set_filters_on_web_page_blocks: function(frm) { - if (frm.doc.content_type === 'Page Builder') { - frm.set_query('web_template', 'page_blocks', function() { - return { - "filters": { - "type": ['!=', 'Component'] - } - }; - }); - } - }, set_meta_tags(frm) { frappe.utils.set_meta_tag(frm.doc.route); } diff --git a/frappe/website/doctype/web_template/web_template.json b/frappe/website/doctype/web_template/web_template.json index 2728f5a1a7..b3b9114c6b 100644 --- a/frappe/website/doctype/web_template/web_template.json +++ b/frappe/website/doctype/web_template/web_template.json @@ -36,6 +36,7 @@ "label": "Standard" }, { + "default": "Section", "fieldname": "type", "fieldtype": "Select", "in_list_view": 1, @@ -58,7 +59,7 @@ "link_fieldname": "web_template" } ], - "modified": "2020-10-19 14:44:16.694730", + "modified": "2020-10-22 17:36:45.042517", "modified_by": "Administrator", "module": "Website", "name": "Web Template", From a5b4326a6daa62a9936a00c196d04a8958462591 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Fri, 23 Oct 2020 18:32:46 +0530 Subject: [PATCH 10/46] fix: remove kwargs --- frappe/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 1144b228c0..a6a5067ea2 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -400,12 +400,12 @@ def clear_last_message(): if len(local.message_log) > 0: local.message_log = local.message_log[:-1] -def throw(msg, exc=ValidationError, title=None, is_minimizable=None, wide=None, **kwargs): +def throw(msg, exc=ValidationError, title=None, is_minimizable=None, wide=None, as_list=False): """Throw execption and show message (`msgprint`). :param msg: Message. :param exc: Exception class. Default `frappe.ValidationError`""" - msgprint(msg, raise_exception=exc, title=title, indicator='red', is_minimizable=is_minimizable, wide=wide, **kwargs) + msgprint(msg, raise_exception=exc, title=title, indicator='red', is_minimizable=is_minimizable, wide=wide, as_list=as_list) def emit_js(js, user=False, **kwargs): if user == False: From 1acba0250c517f4a3b4de42b78587d5ebea4c910 Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Sat, 24 Oct 2020 11:46:33 +0530 Subject: [PATCH 11/46] fix(translations): Always apply user translations (#11767) --- frappe/translate.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frappe/translate.py b/frappe/translate.py index d135fc05ea..a9d8e00bb5 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -128,8 +128,7 @@ def get_dict(fortype, name=None): translation_map = translation_assets[asset_key] - if fortype == "boot": - translation_map.update(get_user_translations(frappe.local.lang)) + translation_map.update(get_user_translations(frappe.local.lang)) return translation_map From 3da3a94f9d4643de85b1475574f02f2c95e373b6 Mon Sep 17 00:00:00 2001 From: walstanb Date: Sat, 24 Oct 2020 12:45:30 +0530 Subject: [PATCH 12/46] fix: excluded disabled users from getting emails and notifications --- frappe/desk/doctype/notification_log/notification_log.py | 2 +- frappe/desk/form/assign_to.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/desk/doctype/notification_log/notification_log.py b/frappe/desk/doctype/notification_log/notification_log.py index c4c6077e85..a6126f1f9b 100644 --- a/frappe/desk/doctype/notification_log/notification_log.py +++ b/frappe/desk/doctype/notification_log/notification_log.py @@ -61,7 +61,7 @@ def make_notification_logs(doc, users): from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled for user in users: - if frappe.db.exists('User', user): + if frappe.db.exists('User', {"name": user, "enabled": 1}): if is_notifications_enabled(user): if doc.type == 'Energy Point' and not is_energy_point_enabled(): return diff --git a/frappe/desk/form/assign_to.py b/frappe/desk/form/assign_to.py index 26b2bd2835..aee7a8e52a 100644 --- a/frappe/desk/form/assign_to.py +++ b/frappe/desk/form/assign_to.py @@ -168,8 +168,8 @@ def notify_assignment(assigned_by, owner, doc_type, doc_name, action='CLOSE', """ if not (assigned_by and owner and doc_type and doc_name): return - # self assignment / closing - no message - if assigned_by==owner: + # return if self assigned or user disabled + if assigned_by == owner or not frappe.db.get_value('User', owner, 'enabled'): return # Search for email address in description -- i.e. assignee @@ -177,7 +177,7 @@ def notify_assignment(assigned_by, owner, doc_type, doc_name, action='CLOSE', title = get_title(doc_type, doc_name) description_html = "
    {0}
    ".format(description) if description else None - if action=='CLOSE': + if action == 'CLOSE': subject = _('Your assignment on {0} {1} has been removed by {2}')\ .format(frappe.bold(doc_type), get_title_html(title), frappe.bold(user_name)) else: From d254933a7cd202790d26b2271c79962136cfc0d6 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Sat, 24 Oct 2020 14:12:59 +0530 Subject: [PATCH 13/46] fix: Build cookie jar only if request object is present --- frappe/utils/pdf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/utils/pdf.py b/frappe/utils/pdf.py index 49a8a0d37a..aabe033e26 100644 --- a/frappe/utils/pdf.py +++ b/frappe/utils/pdf.py @@ -124,7 +124,7 @@ def prepare_options(html, options): def get_cookie_options(): options = {} - if frappe.session and frappe.session.sid: + if frappe.session and frappe.session.sid and hasattr(frappe.local, "request"): # Use wkhtmltopdf's cookie-jar feature to set cookies and restrict them to host domain cookiejar = "/tmp/{}.jar".format(frappe.generate_hash()) From e1316814a22cb9bb7ea37fd73194af2e61a7d5d2 Mon Sep 17 00:00:00 2001 From: prssanna Date: Sat, 24 Oct 2020 15:22:14 +0530 Subject: [PATCH 14/46] fix: customize options in desk page rtl layout --- frappe/public/less/desktop.less | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frappe/public/less/desktop.less b/frappe/public/less/desktop.less index a738679cc8..dc0ff458e9 100644 --- a/frappe/public/less/desktop.less +++ b/frappe/public/less/desktop.less @@ -147,6 +147,12 @@ .desk-body { padding-left: 0px; padding-right: calc(20rem + 15px); + + .desk-page.allow-customization { + .customize-options { + text-align: left; + } + } } } From 16fd10bac74dabe05cb278898318ee9107e31e1f Mon Sep 17 00:00:00 2001 From: prssanna Date: Sat, 24 Oct 2020 16:09:31 +0530 Subject: [PATCH 15/46] fix: disabled dashboard chart form fixes - don't allow filters to be edited - don't show empty sections --- frappe/desk/doctype/dashboard_chart/dashboard_chart.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frappe/desk/doctype/dashboard_chart/dashboard_chart.js b/frappe/desk/doctype/dashboard_chart/dashboard_chart.js index d763ce5009..72be9ca349 100644 --- a/frappe/desk/doctype/dashboard_chart/dashboard_chart.js +++ b/frappe/desk/doctype/dashboard_chart/dashboard_chart.js @@ -21,8 +21,10 @@ frappe.ui.form.on('Dashboard Chart', { refresh: function(frm) { frm.chart_filters = null; + frm.is_disabled = !frappe.boot.developer_mode && frm.doc.is_standard; - if (!frappe.boot.developer_mode && frm.doc.is_standard) { + if (!frm.is_disabled) { + !frm.doc.custom_options && frm.set_df_property('chart_options_section', 'hidden', 1); frm.disable_form(); } @@ -333,6 +335,7 @@ frappe.ui.form.on('Dashboard Chart', { } table.on('click', () => { + frm.is_disabled && frappe.throw(__('Cannot edit filters for standard charts')); let dialog = new frappe.ui.Dialog({ title: __('Set Filters'), From 1d8bca8b680bdc2ffe8f5c259baa8a896a4e54ac Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Sat, 24 Oct 2020 18:35:18 +0530 Subject: [PATCH 16/46] chore: Update translations (#11771) Co-authored-by: frappe --- frappe/translations/af.csv | 20 ++++++++++++++++++-- frappe/translations/am.csv | 20 ++++++++++++++++++-- frappe/translations/ar.csv | 20 ++++++++++++++++++-- frappe/translations/bg.csv | 20 ++++++++++++++++++-- frappe/translations/bn.csv | 20 ++++++++++++++++++-- frappe/translations/bs.csv | 20 ++++++++++++++++++-- frappe/translations/ca.csv | 20 ++++++++++++++++++-- frappe/translations/cs.csv | 20 ++++++++++++++++++-- frappe/translations/da.csv | 20 ++++++++++++++++++-- frappe/translations/de.csv | 20 ++++++++++++++++++-- frappe/translations/el.csv | 20 ++++++++++++++++++-- frappe/translations/es.csv | 22 +++++++++++++++++++--- frappe/translations/es_co.csv | 2 +- frappe/translations/et.csv | 20 ++++++++++++++++++-- frappe/translations/fa.csv | 20 ++++++++++++++++++-- frappe/translations/fi.csv | 20 ++++++++++++++++++-- frappe/translations/fr.csv | 20 ++++++++++++++++++-- frappe/translations/gu.csv | 20 ++++++++++++++++++-- frappe/translations/he.csv | 20 ++++++++++++++++++-- frappe/translations/hi.csv | 20 ++++++++++++++++++-- frappe/translations/hr.csv | 20 ++++++++++++++++++-- frappe/translations/hu.csv | 20 ++++++++++++++++++-- frappe/translations/id.csv | 20 ++++++++++++++++++-- frappe/translations/is.csv | 20 ++++++++++++++++++-- frappe/translations/it.csv | 20 ++++++++++++++++++-- frappe/translations/ja.csv | 20 ++++++++++++++++++-- frappe/translations/km.csv | 20 ++++++++++++++++++-- frappe/translations/kn.csv | 20 ++++++++++++++++++-- frappe/translations/ko.csv | 20 ++++++++++++++++++-- frappe/translations/ku.csv | 20 ++++++++++++++++++-- frappe/translations/lo.csv | 20 ++++++++++++++++++-- frappe/translations/lt.csv | 20 ++++++++++++++++++-- frappe/translations/lv.csv | 20 ++++++++++++++++++-- frappe/translations/mk.csv | 20 ++++++++++++++++++-- frappe/translations/ml.csv | 20 ++++++++++++++++++-- frappe/translations/mr.csv | 20 ++++++++++++++++++-- frappe/translations/ms.csv | 20 ++++++++++++++++++-- frappe/translations/my.csv | 20 ++++++++++++++++++-- frappe/translations/nl.csv | 20 ++++++++++++++++++-- frappe/translations/no.csv | 20 ++++++++++++++++++-- frappe/translations/pl.csv | 20 ++++++++++++++++++-- frappe/translations/ps.csv | 20 ++++++++++++++++++-- frappe/translations/pt.csv | 20 ++++++++++++++++++-- frappe/translations/pt_br.csv | 1 - frappe/translations/ro.csv | 20 ++++++++++++++++++-- frappe/translations/ru.csv | 20 ++++++++++++++++++-- frappe/translations/rw.csv | 20 ++++++++++++++++++-- frappe/translations/si.csv | 20 ++++++++++++++++++-- frappe/translations/sk.csv | 20 ++++++++++++++++++-- frappe/translations/sl.csv | 20 ++++++++++++++++++-- frappe/translations/sq.csv | 20 ++++++++++++++++++-- frappe/translations/sr.csv | 20 ++++++++++++++++++-- frappe/translations/sv.csv | 20 ++++++++++++++++++-- frappe/translations/sw.csv | 20 ++++++++++++++++++-- frappe/translations/ta.csv | 20 ++++++++++++++++++-- frappe/translations/te.csv | 20 ++++++++++++++++++-- frappe/translations/th.csv | 20 ++++++++++++++++++-- frappe/translations/tr.csv | 20 ++++++++++++++++++-- frappe/translations/uk.csv | 20 ++++++++++++++++++-- frappe/translations/ur.csv | 20 ++++++++++++++++++-- frappe/translations/uz.csv | 20 ++++++++++++++++++-- frappe/translations/vi.csv | 20 ++++++++++++++++++-- frappe/translations/zh.csv | 20 ++++++++++++++++++-- frappe/translations/zh_tw.csv | 19 +++++++++++++++++-- 64 files changed, 1117 insertions(+), 127 deletions(-) diff --git a/frappe/translations/af.csv b/frappe/translations/af.csv index 9817d377b3..31eaf80b09 100644 --- a/frappe/translations/af.csv +++ b/frappe/translations/af.csv @@ -336,7 +336,6 @@ Add Column,Voeg kolom by, Add Contact,Voeg kontak by, Add Contacts,Voeg kontakte by, Add Filter,Voeg filter by, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Voeg Google Analytics ID by: bv. UA-89XXX57-1. Soek asseblief hulp op Google Analytics vir meer inligting., Add Group,Voeg groep by, Add New Permission Rule,Voeg nuwe toestemmingsreël by, Add Review,Voeg resensie by, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,'N Voorgestelde pos moet 'n omsl Load More,Laai meer, Published on,Gepubliseer op, Enable developer mode to create a standard Web Template,Aktiveer die ontwikkelaarmodus om 'n standaard websjabloon te skep, -Please select which module this Web Template belongs to.,Kies asseblief aan watter module hierdie websjabloon behoort., Was this article helpful?,Was hierdie artikel nuttig?, Thank you for your feedback!,Dankie vir jou terugvoering!, New Mention on {0},Nuwe vermelding op {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Stel eer Shared with the following Users with Read access:{0},Gedeel met die volgende gebruikers met leestoegang: {0}, Already in the following Users ToDo list:{0},Reeds in die volgende lys ToDo-gebruikers: {0}, Your assignment on {0} {1} has been removed by {2},Jou opdrag op {0} {1} is verwyder deur {2}, +Invalid Credentials,Ongeldige magtigingsbewyse, Print UOM after Quantity,Druk UOM na hoeveelheid uit, Uncaught Server Exception,Onvangste bedieneruitsondering, There was an error building this page,Kon nie hierdie bladsy bou nie, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Voeg 'n {0} grafiek by, Currently you have {0} review points,Tans het u {0} hersieningspunte, {0} is not a valid DocType for Dynamic Link,{0} is nie 'n geldige DocType vir Dynamic Link nie, via Assignment Rule,via opdragreël, +Based on Field,Gebaseer op veld, +Assign to the user set in this field,Ken aan die gebruikersreeks in hierdie veld toe, +Log Setting User,Loginstellingsgebruiker, +Log Settings,Log-instellings, +Error Log Notification,Kennisgewing oor foutlêers, +Users To Notify,Gebruikers om in kennis te stel, +Log Cleanup,Teken skoonmaak aan, +Clear Error log After,Vee foutlêer na, +Clear Activity Log After,Vee aktiwiteitslogboek na, +Clear Email Queue After,Vee e-posry na uit, +Please save to edit the template.,Stoor asseblief om die sjabloon te wysig., +Google Analytics Anonymize IP,Google Analytics anonimiseer IP, +Incorrect email or password. Please check your login credentials.,Verkeerde e-posadres of wagwoord. Gaan u aanmeldingsbewyse na., +Incorrect Configuration,Verkeerde konfigurasie, +You are not allowed to delete Standard Report,U mag nie Standaardverslag verwyder nie, +You have unseen {0},Jy het ongesiene {0}, +Log cleanup and notification configuration,Teken skoonmaak en kennisgewing op, diff --git a/frappe/translations/am.csv b/frappe/translations/am.csv index b0342f48aa..e3a031241e 100644 --- a/frappe/translations/am.csv +++ b/frappe/translations/am.csv @@ -336,7 +336,6 @@ Add Column,አምድ ያክሉ, Add Contact,እውቅያ ያክሉ, Add Contacts,እውቂያዎች አክል, Add Filter,ማጣሪያ አክል, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,የ Google Analytics መታወቂያ ያክሉ: ለምሳሌ. UA-89XXX57-1. ተጨማሪ መረጃ ለማግኘት በ Google ትንታኔዎች ላይ እርዳታ ፍለጋ ያድርጉ., Add Group,ቡድንን ያክሉ።, Add New Permission Rule,አዲስ ፈቃድ ደንብ ያክሉ, Add Review,ግምገማ ያክሉ።, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,ተለይቶ የቀረበ ልጥፍ የ Load More,ተጨማሪ ይጫኑ, Published on,ታትሟል, Enable developer mode to create a standard Web Template,አንድ መደበኛ የድር አብነት ለመፍጠር የገንቢ ሁነታን ያንቁ, -Please select which module this Web Template belongs to.,እባክዎን ይህ የድር አብነት የትኛውን ሞዱል ይምረጡ።, Was this article helpful?,ይህ ጽሑፍ ጠቃሚ ነበር?, Thank you for your feedback!,ለሰጡን አስተያየት አመሰግናለሁ!, New Mention on {0},አዲስ መጠቀስ በ {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,እባ Shared with the following Users with Read access:{0},ከሚከተሉት ተጠቃሚዎች ጋር በንባብ መዳረሻ ተጋርቷል {0}, Already in the following Users ToDo list:{0},ቀድሞውኑ በሚከተሉት ተጠቃሚዎች ToDo ዝርዝር ውስጥ ፦ {0}, Your assignment on {0} {1} has been removed by {2},በ {0} {1} ላይ የሰጡት ተልእኮ በ {2} ተወግዷል, +Invalid Credentials,ልክ ያልሆኑ ምስክርነቶች, Print UOM after Quantity,ከቁጥር በኋላ UOM ን ያትሙ, Uncaught Server Exception,የማይታሰብ የአገልጋይ ልዩነት, There was an error building this page,ይህንን ገጽ መገንባት ላይ አንድ ስህተት ነበር, @@ -4680,3 +4679,20 @@ Add a {0} Chart,የ {0} ገበታ ያክሉ, Currently you have {0} review points,በአሁኑ ጊዜ {0} የግምገማ ነጥቦች አለዎት, {0} is not a valid DocType for Dynamic Link,{0} ለተለዋጭ አገናኝ ትክክለኛ DocType አይደለም, via Assignment Rule,በምደባ ደንብ በኩል, +Based on Field,በመስክ ላይ የተመሠረተ, +Assign to the user set in this field,በዚህ መስክ ውስጥ ለተጠቀሰው ተጠቃሚ ይመድቡ, +Log Setting User,የምዝግብ ማስታወሻ ቅንብር ተጠቃሚ, +Log Settings,የምዝግብ ማስታወሻ ቅንብሮች, +Error Log Notification,የስህተት ምዝግብ ማስታወሻ, +Users To Notify,ለማሳወቅ ተጠቃሚዎች, +Log Cleanup,የምዝግብ ማስታወሻ ማጽዳት, +Clear Error log After,ከስህተት መዝገብ በኋላ ያጽዱ, +Clear Activity Log After,በኋላ የእንቅስቃሴ ምዝግብ ማስታወሻ ያጽዱ, +Clear Email Queue After,ከዚያ በኋላ የኢሜይል ወረፋን ያጽዱ, +Please save to edit the template.,አብነቱን ለማስተካከል እባክዎ ያስቀምጡ።, +Google Analytics Anonymize IP,የጉግል አናሌቲክስ አይፒን ስም-አልባ ያድርጉ, +Incorrect email or password. Please check your login credentials.,የተሳሳተ ኢሜይል ወይም የይለፍ ቃል እባክዎን የመግቢያ ምስክርነቶችዎን ያረጋግጡ ፡፡, +Incorrect Configuration,የተሳሳተ ውቅር, +You are not allowed to delete Standard Report,መደበኛ ሪፖርትን መሰረዝ አልተፈቀደልዎትም, +You have unseen {0},ያልታየዎት {0}, +Log cleanup and notification configuration,የምዝግብ ማስታወሻ ማጽጃ እና የማሳወቂያ ውቅር, diff --git a/frappe/translations/ar.csv b/frappe/translations/ar.csv index a36429f8fc..b1be7dbf0a 100644 --- a/frappe/translations/ar.csv +++ b/frappe/translations/ar.csv @@ -336,7 +336,6 @@ Add Column,إضافة عمود, Add Contact,إضافة جهة اتصال, Add Contacts,اضف جهات اتصال, Add Filter,إضافة تصفية (فلترة), -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,(UA-89XXX57-1)اضافة تحليلات جوجل رقم تعريفى \nمن فضلك ابحث عن المساعدة فى تحليلات جوجل لمزيد من المعلومات, Add Group,إضافة مجموعة, Add New Permission Rule,إضافة قاعدة صلاحيات جديدة, Add Review,إضافة مراجعة, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,يجب أن تحتوي الوظيفة ا Load More,تحميل المزيد, Published on,نشرت في, Enable developer mode to create a standard Web Template,قم بتمكين وضع المطور لإنشاء قالب ويب قياسي, -Please select which module this Web Template belongs to.,الرجاء تحديد الوحدة النمطية التي ينتمي إليها قالب الويب هذا., Was this article helpful?,هل كان المقال مساعدا؟!, Thank you for your feedback!,شكرا لك على ملاحظاتك!, New Mention on {0},إشارة جديدة في {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,يرجى Shared with the following Users with Read access:{0},مشترك مع المستخدمين التاليين الذين لهم حق الوصول للقراءة: {0}, Already in the following Users ToDo list:{0},بالفعل في قائمة "المهام للمستخدمين" التالية: {0}, Your assignment on {0} {1} has been removed by {2},تمت إزالة واجبك في {0} {1} بواسطة {2}, +Invalid Credentials,بيانات الاعتماد غير صالحة, Print UOM after Quantity,اطبع UOM بعد الكمية, Uncaught Server Exception,استثناء خادم لم يتم اكتشافه, There was an error building this page,كان هناك خطأ في بناء هذه الصفحة, @@ -4680,3 +4679,20 @@ Add a {0} Chart,أضف مخطط {0}, Currently you have {0} review points,حاليًا لديك {0} من نقاط المراجعة, {0} is not a valid DocType for Dynamic Link,{0} ليس نوع DocType صالحًا للارتباط الديناميكي, via Assignment Rule,عبر قاعدة التنازل, +Based on Field,على أساس الميدان, +Assign to the user set in this field,تعيين المستخدم في هذا المجال, +Log Setting User,مستخدم إعداد السجل, +Log Settings,إعدادات السجل, +Error Log Notification,إعلام سجل الخطأ, +Users To Notify,يخطر المستخدمون, +Log Cleanup,تنظيف السجل, +Clear Error log After,مسح سجل الخطأ بعد, +Clear Activity Log After,امسح سجل النشاط بعد, +Clear Email Queue After,امسح قائمة انتظار البريد الإلكتروني بعد, +Please save to edit the template.,يرجى الحفظ لتعديل القالب., +Google Analytics Anonymize IP,تحليلات جوجل لإخفاء هوية IP, +Incorrect email or password. Please check your login credentials.,بريد أو كلمة مرورغير صحيحة. يرجى التحقق من بيانات اعتماد تسجيل الدخول الخاصة بك., +Incorrect Configuration,التكوين غير الصحيح, +You are not allowed to delete Standard Report,لا يُسمح لك بحذف التقرير القياسي, +You have unseen {0},لديك غير مرئي {0}, +Log cleanup and notification configuration,تنظيف السجل وتكوين الإخطار, diff --git a/frappe/translations/bg.csv b/frappe/translations/bg.csv index 90dc138e78..9084e3dc81 100644 --- a/frappe/translations/bg.csv +++ b/frappe/translations/bg.csv @@ -336,7 +336,6 @@ Add Column,Добави Колона, Add Contact,Добави контакт, Add Contacts,Добавяне на контакти, Add Filter,Добавяне на филтър, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Добави Google Analytics ID: напр. UA-89XXX57-1. Моля потърсете помощ в Google Analytics., Add Group,Добавете група, Add New Permission Rule,Добави ново Правило за Разрешения, Add Review,Добавете рецензия, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Представената публик Load More,Зареди още, Published on,Публикувано на, Enable developer mode to create a standard Web Template,"Активирайте режима за програмисти, за да създадете стандартен уеб шаблон", -Please select which module this Web Template belongs to.,"Моля, изберете към кой модул принадлежи този уеб шаблон.", Was this article helpful?,Полезна ли беше тази статия?, Thank you for your feedback!,Благодарим Ви за обратната връзка!, New Mention on {0},Ново споменаване на {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Мол Shared with the following Users with Read access:{0},Споделено със следните потребители с достъп за четене: {0}, Already in the following Users ToDo list:{0},Вече в следния списък със задачи на потребителите: {0}, Your assignment on {0} {1} has been removed by {2},Вашето задание на {0} {1} е премахнато от {2}, +Invalid Credentials,Невалидни идентификационни данни, Print UOM after Quantity,Отпечатайте UOM след Количество, Uncaught Server Exception,Uncaught Server Exception, There was an error building this page,При създаването на тази страница възникна грешка, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Добавете {0} диаграма, Currently you have {0} review points,В момента имате {0} точки за преглед, {0} is not a valid DocType for Dynamic Link,{0} не е валиден DocType за динамична връзка, via Assignment Rule,чрез Правило за възлагане, +Based on Field,Въз основа на Field, +Assign to the user set in this field,Присвояване на потребителския набор в това поле, +Log Setting User,Потребител за настройка на регистрационния файл, +Log Settings,Настройки на дневника, +Error Log Notification,Известие за регистрация на грешки, +Users To Notify,Потребителите да уведомят, +Log Cleanup,Почистване на регистрационния файл, +Clear Error log After,Изчистване на дневника за грешки след, +Clear Activity Log After,Изчистване на дневника на активността след, +Clear Email Queue After,Изчистване на опашката за имейл след, +Please save to edit the template.,"Моля, запазете, за да редактирате шаблона.", +Google Analytics Anonymize IP,Google Analytics анонимизира IP, +Incorrect email or password. Please check your login credentials.,"Неправилен имейл или парола. Моля, проверете данните си за вход.", +Incorrect Configuration,Неправилна конфигурация, +You are not allowed to delete Standard Report,Нямате право да изтривате стандартен отчет, +You have unseen {0},Невидими сте {0}, +Log cleanup and notification configuration,Почистване на регистрационния файл и конфигуриране на известия, diff --git a/frappe/translations/bn.csv b/frappe/translations/bn.csv index e4819aef75..f0388020bc 100644 --- a/frappe/translations/bn.csv +++ b/frappe/translations/bn.csv @@ -336,7 +336,6 @@ Add Column,কলাম যুক্ত, Add Contact,পরিচিতি যোগ করুন, Add Contacts,পরিচিতি যুক্ত করুন, Add Filter,ফিল্টার যোগ, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google এনালিটিক্স আইডি যোগ করুন যেমন. ইউএ-89XXX57-1. আরো তথ্যের জন্য Google এনালিটিক্স সহায়তার অনুসন্ধান করুন., Add Group,গ্রুপ যুক্ত করুন, Add New Permission Rule,নতুন অনুমতি রুল করো, Add Review,পর্যালোচনা যুক্ত করুন, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,একটি বৈশিষ্ট্য Load More,আর ঢুকাও, Published on,প্রকাশিত, Enable developer mode to create a standard Web Template,একটি আদর্শ ওয়েব টেম্পলেট তৈরি করতে বিকাশকারী মোড সক্ষম করুন, -Please select which module this Web Template belongs to.,এই ওয়েব টেম্পলেটটি কোন মডিউলটির অন্তর্গত তা নির্বাচন করুন।, Was this article helpful?,এই প্রবন্ধটা কি সাহায্যকর ছিল?, Thank you for your feedback!,আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ!, New Mention on {0},{0 on এ নতুন উল্লেখ, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,অন Shared with the following Users with Read access:{0},নিম্নলিখিত অ্যাক্সেস সহ ব্যবহারকারীদের সাথে ভাগ করা: {0}, Already in the following Users ToDo list:{0},ইতিমধ্যে নিম্নলিখিত ব্যবহারকারীদের টোডো তালিকায় রয়েছে: {0}, Your assignment on {0} {1} has been removed by {2},আপনার অ্যাসাইনমেন্টটি {0} {1} এ {2 by দ্বারা সরানো হয়েছে, +Invalid Credentials,অবৈধ প্রশংসাপত্র, Print UOM after Quantity,পরিমাণের পরে ইউওএম প্রিন্ট করুন, Uncaught Server Exception,অপরিচিত সার্ভার ব্যতিক্রম, There was an error building this page,এই পৃষ্ঠাটি তৈরি করতে একটি ত্রুটি হয়েছিল, @@ -4680,3 +4679,20 @@ Add a {0} Chart,একটি {0} চার্ট যুক্ত করুন, Currently you have {0} review points,বর্তমানে আপনার কাছে} 0} পর্যালোচনা পয়েন্ট রয়েছে, {0} is not a valid DocType for Dynamic Link,ডায়নামিক লিঙ্কের জন্য {0 a একটি বৈধ ডক্টটাইপ নয়, via Assignment Rule,অ্যাসাইনমেন্ট রুলের মাধ্যমে, +Based on Field,মাঠের উপর ভিত্তি করে, +Assign to the user set in this field,এই ক্ষেত্রে ব্যবহারকারী সেট নির্ধারিত করুন, +Log Setting User,ব্যবহারকারী লগ সেট করুন, +Log Settings,লগ সেটিংস, +Error Log Notification,ত্রুটি লগ বিজ্ঞপ্তি, +Users To Notify,ব্যবহারকারীদের অবহিত করতে, +Log Cleanup,লগ ক্লিনআপ, +Clear Error log After,সাফ ত্রুটি লগ পরে, +Clear Activity Log After,ক্রিয়াকলাপ লগের পরে সাফ করুন, +Clear Email Queue After,পরে ইমেল সারি সাফ করুন, +Please save to edit the template.,টেমপ্লেট সম্পাদনা করতে দয়া করে সংরক্ষণ করুন।, +Google Analytics Anonymize IP,গুগল অ্যানালিটিক্স অজ্ঞাতনামা আইপি, +Incorrect email or password. Please check your login credentials.,ভুল ইমেল বা পাসওয়ার্ড. দয়া করে আপনার লগইন শংসাপত্রগুলি পরীক্ষা করুন।, +Incorrect Configuration,ভুল কনফিগারেশন, +You are not allowed to delete Standard Report,আপনাকে স্ট্যান্ডার্ড রিপোর্ট মুছে ফেলার অনুমতি নেই, +You have unseen {0},আপনার অদেখা {0 have, +Log cleanup and notification configuration,লগ ক্লিনআপ এবং বিজ্ঞপ্তি কনফিগারেশন, diff --git a/frappe/translations/bs.csv b/frappe/translations/bs.csv index 67e91bf714..47f508dbc8 100644 --- a/frappe/translations/bs.csv +++ b/frappe/translations/bs.csv @@ -336,7 +336,6 @@ Add Column,Dodaj kolonu, Add Contact,Dodaj kontakt, Add Contacts,Dodajte kontakte, Add Filter,Dodaj Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Dodaj Google Analytics ID: npr: UA-89XXX57-1. Molimo potražite pomoć na Google Analytics za više informacija., Add Group,Dodajte grupu, Add New Permission Rule,Dodaj novo pravilo za dozvole korisnicima, Add Review,Dodaj recenziju, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Istaknuti post mora imati naslovnu sliku Load More,Učitaj još, Published on,Objavljeno, Enable developer mode to create a standard Web Template,Omogućite način programera za stvaranje standardnog web predloška, -Please select which module this Web Template belongs to.,Molimo odaberite kojem modulu pripada ovaj web predložak., Was this article helpful?,Je li ovaj članak bio koristan?, Thank you for your feedback!,Hvala vam za vaše povratne informacije!, New Mention on {0},Novo spominjanje {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Molimo p Shared with the following Users with Read access:{0},Dijeljeno sa sljedećim korisnicima s pristupom za čitanje: {0}, Already in the following Users ToDo list:{0},Već na sljedećoj listi obaveza korisnika: {0}, Your assignment on {0} {1} has been removed by {2},Vaš zadatak na {0} {1} uklonio je korisnik {2}, +Invalid Credentials,Nevažeće vjerodajnice, Print UOM after Quantity,Ispis UOM nakon količine, Uncaught Server Exception,Neuhvaćeni izuzetak servera, There was an error building this page,Došlo je do greške prilikom izrade ove stranice, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Dodajte {0} grafikon, Currently you have {0} review points,Trenutno imate {0} bodova za pregled, {0} is not a valid DocType for Dynamic Link,{0} nije važeći DocType za Dynamic Link, via Assignment Rule,putem Pravila dodjele, +Based on Field,Na osnovu polja, +Assign to the user set in this field,Dodijelite korisničkom skupu u ovom polju, +Log Setting User,Korisnik podešavanja dnevnika, +Log Settings,Postavke dnevnika, +Error Log Notification,Obavijest o evidenciji grešaka, +Users To Notify,Korisnici koje treba obavijestiti, +Log Cleanup,Čišćenje dnevnika, +Clear Error log After,Obriši dnevnik pogrešaka Nakon, +Clear Activity Log After,Obriši dnevnik aktivnosti nakon, +Clear Email Queue After,Obriši red e-pošte nakon, +Please save to edit the template.,Sačuvajte za uređivanje predloška., +Google Analytics Anonymize IP,Google Analytics anonimizira IP, +Incorrect email or password. Please check your login credentials.,Netačna adresa e-pošte ili lozinka. Molimo provjerite svoje vjerodajnice za prijavu., +Incorrect Configuration,Pogrešna konfiguracija, +You are not allowed to delete Standard Report,Nije vam dozvoljeno brisanje Standardnog izvještaja, +You have unseen {0},Nevidjeli ste {0}, +Log cleanup and notification configuration,Čišćenje dnevnika i konfiguracija obavještenja, diff --git a/frappe/translations/ca.csv b/frappe/translations/ca.csv index 10ecac40ff..7316be57b2 100644 --- a/frappe/translations/ca.csv +++ b/frappe/translations/ca.csv @@ -336,7 +336,6 @@ Add Column,Afegir columna, Add Contact,afegir contacte, Add Contacts,Afegeix contactes, Add Filter,Afegeix un filtre, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Afegir Google Analytics ID: per exemple. UA-89XXX57-1. Si us plau, busca ajuda sobre Google Analytics per obtenir més informació.", Add Group,Afegir grup, Add New Permission Rule,Afegir nova regla de permís, Add Review,Afegeix un comentari, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Una publicació destacada ha de tenir un Load More,Carrega més, Published on,Publicat el, Enable developer mode to create a standard Web Template,Activeu el mode de desenvolupador per crear una plantilla web estàndard, -Please select which module this Web Template belongs to.,Seleccioneu a quin mòdul pertany aquesta plantilla web., Was this article helpful?,Ha sigut útil aquest article?, Thank you for your feedback!,Gràcies pels seus comentaris!, New Mention on {0},Menció nova a {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Definiu Shared with the following Users with Read access:{0},Compartit amb els usuaris següents amb accés de lectura: {0}, Already in the following Users ToDo list:{0},Ja apareix a la llista de tasques pendents d'usuari següents: {0}, Your assignment on {0} {1} has been removed by {2},{2} ha eliminat la vostra tasca a {0} {1}, +Invalid Credentials,Credencials no vàlides, Print UOM after Quantity,Imprimiu UOM després de Quantity, Uncaught Server Exception,Excepció del servidor sense capturar, There was an error building this page,S'ha produït un error en crear aquesta pàgina, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Afegiu un gràfic {0}, Currently you have {0} review points,Actualment teniu {0} punts de revisió, {0} is not a valid DocType for Dynamic Link,{0} no és un tipus de document vàlid per a l'enllaç dinàmic, via Assignment Rule,mitjançant la regla d'assignació, +Based on Field,Basat en el camp, +Assign to the user set in this field,Assigneu-lo a l'usuari definit en aquest camp, +Log Setting User,Registre d'usuari, +Log Settings,Configuració del registre, +Error Log Notification,Notificació de registre d'errors, +Users To Notify,Usuaris a notificar, +Log Cleanup,Neteja de registres, +Clear Error log After,Esborra el registre d'errors després, +Clear Activity Log After,Esborra el registre d'activitats després, +Clear Email Queue After,Esborra la cua de correu electrònic després, +Please save to edit the template.,"Si us plau, deseu per editar la plantilla.", +Google Analytics Anonymize IP,Adreça IP anònima de Google Analytics, +Incorrect email or password. Please check your login credentials.,Correu electrònic o contrasenya incorrectes. Comproveu les vostres credencials d’inici de sessió., +Incorrect Configuration,Configuració incorrecta, +You are not allowed to delete Standard Report,No podeu eliminar l’informe estàndard, +You have unseen {0},No heu vist {0}, +Log cleanup and notification configuration,Neteja de registres i configuració de notificacions, diff --git a/frappe/translations/cs.csv b/frappe/translations/cs.csv index 5827fd46e4..995e9a8c08 100644 --- a/frappe/translations/cs.csv +++ b/frappe/translations/cs.csv @@ -336,7 +336,6 @@ Add Column,Přidat sloupec, Add Contact,Přidat kontakt, Add Contacts,Přidat kontakty, Add Filter,Přidat filtr, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Přidat Google Analytics ID: např.: UA-89XXX57-1. Pro více informací prosím vyhledejte nápovědu na stránkách Google Analytics., Add Group,Přidat skupinu, Add New Permission Rule,Přidat nové pravidlo oprávnění, Add Review,Přidat recenzi, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Doporučený příspěvek musí mít tit Load More,Načíst další, Published on,Publikováno dne, Enable developer mode to create a standard Web Template,"Chcete-li vytvořit standardní webovou šablonu, povolte režim vývojáře", -Please select which module this Web Template belongs to.,"Vyberte, do kterého modulu tato webová šablona patří.", Was this article helpful?,Byl tento článek užitečný?, Thank you for your feedback!,Děkujeme vám za vaši reakci!, New Mention on {0},Nová zmínka o {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Nejprve Shared with the following Users with Read access:{0},Sdíleno s následujícími uživateli s přístupem pro čtení: {0}, Already in the following Users ToDo list:{0},Již v následujícím seznamu úkolů uživatelů: {0}, Your assignment on {0} {1} has been removed by {2},Váš úkol dne {0} {1} byl odstraněn uživatelem {2}, +Invalid Credentials,Neplatná pověření, Print UOM after Quantity,Tisk MJ po množství, Uncaught Server Exception,Nezachycená výjimka serveru, There was an error building this page,Při vytváření této stránky došlo k chybě, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Přidejte {0} graf, Currently you have {0} review points,Aktuálně máte {0} bodů kontroly, {0} is not a valid DocType for Dynamic Link,{0} není platný DocType pro Dynamic Link, via Assignment Rule,prostřednictvím pravidla přiřazení, +Based on Field,Na základě pole, +Assign to the user set in this field,Přiřadit uživateli nastavenému v tomto poli, +Log Setting User,Uživatel nastavení protokolu, +Log Settings,Nastavení protokolu, +Error Log Notification,Oznámení o chybovém protokolu, +Users To Notify,Uživatelé k upozornění, +Log Cleanup,Vyčištění protokolu, +Clear Error log After,Vymazat protokol chyb po, +Clear Activity Log After,Vymazat protokol aktivit po, +Clear Email Queue After,Poté vymazat e-mailovou frontu, +Please save to edit the template.,"Chcete-li šablonu upravit, uložte ji.", +Google Analytics Anonymize IP,Google Analytics anonymizuje IP, +Incorrect email or password. Please check your login credentials.,Nesprávný email nebo heslo. Zkontrolujte své přihlašovací údaje., +Incorrect Configuration,Nesprávná konfigurace, +You are not allowed to delete Standard Report,Není povoleno mazat standardní zprávu, +You have unseen {0},Neviděli jste {0}, +Log cleanup and notification configuration,Vyčištění protokolu a konfigurace upozornění, diff --git a/frappe/translations/da.csv b/frappe/translations/da.csv index b81146ae57..2d440d7478 100644 --- a/frappe/translations/da.csv +++ b/frappe/translations/da.csv @@ -336,7 +336,6 @@ Add Column,Tilføj kolonne, Add Contact,Tilføj Kontakt, Add Contacts,Tilføj kontaktpersoner, Add Filter,Tilføj filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Tilføj Google Analytics ID: f.eks. UA-89XXX57-1. Du søge hjælp på Google Analytics for at få flere oplysninger., Add Group,Tilføj gruppe, Add New Permission Rule,Tilføj ny tilladelsesregel, Add Review,Tilføj anmeldelse, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Et udvalgt indlæg skal have et forsideb Load More,Indlæs mere, Published on,Udgivet den, Enable developer mode to create a standard Web Template,Aktivér udviklertilstand for at oprette en standard webskabelon, -Please select which module this Web Template belongs to.,Vælg hvilket modul denne webskabelon tilhører., Was this article helpful?,Var denne artikel til hjælp?, Thank you for your feedback!,Tak for din feedback!, New Mention on {0},Ny omtale den {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Indstil Shared with the following Users with Read access:{0},Delt med følgende brugere med læseadgang: {0}, Already in the following Users ToDo list:{0},Allerede på følgende brugere ToDo-liste: {0}, Your assignment on {0} {1} has been removed by {2},Din opgave på {0} {1} er blevet fjernet af {2}, +Invalid Credentials,Ugyldige legitimationsoplysninger, Print UOM after Quantity,Udskriv UOM efter antal, Uncaught Server Exception,Ufanget serverundtagelse, There was an error building this page,Der opstod en fejl under opbygningen af denne side, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Tilføj et {0} diagram, Currently you have {0} review points,I øjeblikket har du {0} gennemgangspunkter, {0} is not a valid DocType for Dynamic Link,{0} er ikke en gyldig DocType til Dynamic Link, via Assignment Rule,via tildelingsregel, +Based on Field,Baseret på felt, +Assign to the user set in this field,Tildel til brugersættet i dette felt, +Log Setting User,Logindstillingsbruger, +Log Settings,Logindstillinger, +Error Log Notification,Fejllogmeddelelse, +Users To Notify,Brugere at underrette, +Log Cleanup,Logoprydning, +Clear Error log After,Ryd fejllog efter, +Clear Activity Log After,Ryd aktivitetslog efter, +Clear Email Queue After,Ryd e-mail-kø efter, +Please save to edit the template.,Gem for at redigere skabelonen., +Google Analytics Anonymize IP,Google Analytics anonymiser IP, +Incorrect email or password. Please check your login credentials.,Forkert email eller kodeord. Kontroller dine loginoplysninger., +Incorrect Configuration,Forkert konfiguration, +You are not allowed to delete Standard Report,Du har ikke tilladelse til at slette standardrapporten, +You have unseen {0},Du har ikke set {0}, +Log cleanup and notification configuration,Logoprydning og konfiguration af meddelelser, diff --git a/frappe/translations/de.csv b/frappe/translations/de.csv index 50ac3ddd07..dc78bc3bb3 100644 --- a/frappe/translations/de.csv +++ b/frappe/translations/de.csv @@ -336,7 +336,6 @@ Add Column,Spalte hinzufügen, Add Contact,Kontakt hinzufügen, Add Contacts,Kontakte hinzufügen, Add Filter,Filter hinzufügen, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google Analytics-ID hinzufügen: z. B. UA-89XXX57-1. Weitere Informationen finden Sie bei Google Analytics., Add Group,Gruppe hinzufügen, Add New Permission Rule,Neue Berechtigungsregel anlegen, Add Review,Bewertung hinzufügen, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Ein vorgestellter Beitrag muss ein Titel Load More,Mehr laden, Published on,Veröffentlicht auf, Enable developer mode to create a standard Web Template,"Aktivieren Sie den Entwicklermodus, um eine Standard-Webvorlage zu erstellen", -Please select which module this Web Template belongs to.,"Bitte wählen Sie aus, zu welchem Modul diese Webvorlage gehört.", Was this article helpful?,War dieser Artikel hilfreich?, Thank you for your feedback!,Vielen Dank für dein Feedback!, New Mention on {0},Neue Erwähnung zu {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Bitte le Shared with the following Users with Read access:{0},Wird für die folgenden Benutzer mit Lesezugriff freigegeben: {0}, Already in the following Users ToDo list:{0},Bereits in der folgenden Benutzer-ToDo-Liste: {0}, Your assignment on {0} {1} has been removed by {2},Ihre Zuordnung zu {0} {1} wurde von {2} entfernt, +Invalid Credentials,Ungültige Anmeldeinformationen, Print UOM after Quantity,UOM nach Menge drucken, Uncaught Server Exception,Nicht erfasste Serverausnahme, There was an error building this page,Beim Erstellen dieser Seite ist ein Fehler aufgetreten, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Fügen Sie ein {0} -Diagramm hinzu, Currently you have {0} review points,Derzeit haben Sie {0} Überprüfungspunkte, {0} is not a valid DocType for Dynamic Link,{0} ist kein gültiger DocType für Dynamic Link, via Assignment Rule,über Zuweisungsregel, +Based on Field,Basierend auf Feld, +Assign to the user set in this field,Weisen Sie dem in diesem Feld festgelegten Benutzer zu, +Log Setting User,Protokolleinstellungsbenutzer, +Log Settings,Protokolleinstellungen, +Error Log Notification,Fehlerprotokollbenachrichtigung, +Users To Notify,Zu benachrichtigende Benutzer, +Log Cleanup,Protokollbereinigung, +Clear Error log After,Fehlerprotokoll löschen nach, +Clear Activity Log After,Aktivitätsprotokoll nach löschen, +Clear Email Queue After,E-Mail-Warteschlange nach löschen, +Please save to edit the template.,"Bitte speichern Sie, um die Vorlage zu bearbeiten.", +Google Analytics Anonymize IP,Google Analytics IP anonymisieren, +Incorrect email or password. Please check your login credentials.,Falsche Email oder Passwort. Bitte überprüfen Sie Ihre Anmeldeinformationen., +Incorrect Configuration,Falsche Konfiguration, +You are not allowed to delete Standard Report,Sie dürfen den Standardbericht nicht löschen, +You have unseen {0},Du hast {0} nicht gesehen, +Log cleanup and notification configuration,Protokollbereinigung und Benachrichtigungskonfiguration, diff --git a/frappe/translations/el.csv b/frappe/translations/el.csv index 5400b3ecca..db3da5ea2f 100644 --- a/frappe/translations/el.csv +++ b/frappe/translations/el.csv @@ -336,7 +336,6 @@ Add Column,Προσθήκη στήλης, Add Contact,Προσθέστε επαφή, Add Contacts,Πρόσθεσε επαφές, Add Filter,Προσθήκη φίλτρου, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Προσθέστε το google analytics id: παράδειγμα. Ua-89xxx57-1. Παρακαλώ ψάξτε στη βοήθεια του google analytics για περισσότερες πληροφορίες., Add Group,Προσθήκη ομάδας, Add New Permission Rule,Προσθήκη νέου κανόνα άδειας, Add Review,Προσθήκη κριτικής, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Μια επιλεγμένη ανάρτη Load More,Φόρτωσε περισσότερα, Published on,Δημοσιεύτηκε στις, Enable developer mode to create a standard Web Template,Ενεργοποιήστε τη λειτουργία προγραμματιστή για να δημιουργήσετε ένα τυπικό πρότυπο Web, -Please select which module this Web Template belongs to.,Επιλέξτε σε ποια ενότητα ανήκει το Πρότυπο Web., Was this article helpful?,'Ηταν αυτό το άρθρο χρήσιμο?, Thank you for your feedback!,Ευχαριστούμε για την ανταπόκρισή σας!, New Mention on {0},Νέα αναφορά στο {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Ορίσ Shared with the following Users with Read access:{0},Κοινή χρήση με τους ακόλουθους χρήστες με πρόσβαση ανάγνωσης: {0}, Already in the following Users ToDo list:{0},Ήδη στην ακόλουθη λίστα ToDo χρηστών: {0}, Your assignment on {0} {1} has been removed by {2},Η εργασία σας στο {0} {1} καταργήθηκε από τον χρήστη {2}, +Invalid Credentials,Ακυρα διαπιστευτήρια, Print UOM after Quantity,Εκτύπωση UOM μετά την ποσότητα, Uncaught Server Exception,Εξαίρεση διακομιστή χωρίς δέσμευση, There was an error building this page,Παρουσιάστηκε σφάλμα κατά τη δημιουργία αυτής της σελίδας, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Προσθέστε ένα {0} γράφημα, Currently you have {0} review points,Αυτήν τη στιγμή έχετε {0} σημεία αξιολόγησης, {0} is not a valid DocType for Dynamic Link,Το {0} δεν είναι έγκυρο DocType για δυναμικό σύνδεσμο, via Assignment Rule,μέσω κανόνα ανάθεσης, +Based on Field,Με βάση το πεδίο, +Assign to the user set in this field,Εκχώρηση στο σύνολο χρηστών σε αυτό το πεδίο, +Log Setting User,Χρήστης ρύθμισης καταγραφής, +Log Settings,Ρυθμίσεις καταγραφής, +Error Log Notification,Ειδοποίηση καταγραφής σφάλματος, +Users To Notify,Χρήστες για ειδοποίηση, +Log Cleanup,Εκκαθάριση καταγραφής, +Clear Error log After,Διαγραφή καταγραφής σφαλμάτων μετά, +Clear Activity Log After,Εκκαθάριση καταγραφής δραστηριότητας μετά, +Clear Email Queue After,Εκκαθάριση ουράς email μετά, +Please save to edit the template.,Αποθηκεύστε για να επεξεργαστείτε το πρότυπο., +Google Analytics Anonymize IP,Google Analytics ανώνυμο IP, +Incorrect email or password. Please check your login credentials.,Εσφαλμένο email ή κωδικός πρόσβασης. Ελέγξτε τα διαπιστευτήρια σύνδεσής σας., +Incorrect Configuration,Λανθασμένη διαμόρφωση, +You are not allowed to delete Standard Report,Δεν επιτρέπεται η διαγραφή της τυπικής αναφοράς, +You have unseen {0},Έχετε αόρατο {0}, +Log cleanup and notification configuration,Εκκαθάριση καταγραφής και διαμόρφωση ειδοποιήσεων, diff --git a/frappe/translations/es.csv b/frappe/translations/es.csv index 8f49b9fb3a..1c233c4113 100644 --- a/frappe/translations/es.csv +++ b/frappe/translations/es.csv @@ -336,7 +336,6 @@ Add Column,Añadir columna, Add Contact,Agregar contacto, Add Contacts,Añadir Contactos, Add Filter,Agregar filtro, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Añadir Google Analytics ID : ej . UA- 89XXX57 - 1 . Por favor, busca ayuda sobre Google Analytics para obtener más información .", Add Group,Añadir grupo, Add New Permission Rule,Agregar nueva regla de permisos, Add Review,Agregar una opinión, @@ -3793,7 +3792,7 @@ Reset,Reiniciar, Review,revisión, Room,Habitación, Room Type,Tipo de Habitación, -Save,Speichern, +Save,Guardar, Search results for,Resultados de la búsqueda para, Select All,Seleccionar todo, Send,Enviar, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Una publicación destacada debe tener un Load More,Carga más, Published on,Publicado en, Enable developer mode to create a standard Web Template,Habilite el modo de desarrollador para crear una plantilla web estándar, -Please select which module this Web Template belongs to.,Seleccione a qué módulo pertenece esta plantilla web., Was this article helpful?,¿Te resultó útil este artículo, Thank you for your feedback!,¡Gracias por tus comentarios!, New Mention on {0},Nueva mención en {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Primero Shared with the following Users with Read access:{0},Compartido con los siguientes usuarios con acceso de lectura: {0}, Already in the following Users ToDo list:{0},Ya en la siguiente lista de tareas pendientes de los usuarios: {0}, Your assignment on {0} {1} has been removed by {2},Tu tarea de {0} {1} ha sido eliminada por {2}, +Invalid Credentials,Credenciales no válidas, Print UOM after Quantity,Imprimir UOM después de Cantidad, Uncaught Server Exception,Excepción de servidor no detectada, There was an error building this page,Se produjo un error al crear esta página., @@ -4680,3 +4679,20 @@ Add a {0} Chart,Agregar un gráfico {0}, Currently you have {0} review points,Actualmente tienes {0} puntos de revisión, {0} is not a valid DocType for Dynamic Link,{0} no es un DocType válido para Dynamic Link, via Assignment Rule,a través de la regla de asignación, +Based on Field,Basado en el campo, +Assign to the user set in this field,Asignar al usuario configurado en este campo, +Log Setting User,Usuario de configuración de registro, +Log Settings,Configuración de registro, +Error Log Notification,Notificación de registro de errores, +Users To Notify,Usuarios a notificar, +Log Cleanup,Limpieza de registro, +Clear Error log After,Borrar registro de errores después, +Clear Activity Log After,Borrar registro de actividad después, +Clear Email Queue After,Borrar cola de correo electrónico después, +Please save to edit the template.,Guarde para editar la plantilla., +Google Analytics Anonymize IP,Google Analytics anonimiza IP, +Incorrect email or password. Please check your login credentials.,Correo o contraseña incorrectos. Verifique sus credenciales de inicio de sesión., +Incorrect Configuration,Configuración incorrecta, +You are not allowed to delete Standard Report,No puede eliminar el informe estándar, +You have unseen {0},No has visto a {0}, +Log cleanup and notification configuration,Configuración de notificaciones y limpieza de registros, diff --git a/frappe/translations/es_co.csv b/frappe/translations/es_co.csv index c542a14fdd..d2a037aeaf 100644 --- a/frappe/translations/es_co.csv +++ b/frappe/translations/es_co.csv @@ -2,5 +2,5 @@ Refreshing...,Actualizando..., Clear Filters,Limpiar Filtros, No Events Today,Sin eventos hoy, Today's Events,Eventos para hoy, -Disabled,Deshabilitado, +Disabled,Inhabilitado, Your Shortcuts,Tus accesos, diff --git a/frappe/translations/et.csv b/frappe/translations/et.csv index 67d7b504f6..7110c5e395 100644 --- a/frappe/translations/et.csv +++ b/frappe/translations/et.csv @@ -336,7 +336,6 @@ Add Column,Lisa veerg, Add Contact,Lisa kontakt, Add Contacts,Lisage kontakte, Add Filter,Lisa Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Lisa Google Analytics ID: nt. UA-89XXX57-1. Palun otsi abi Google Analytics rohkem teavet., Add Group,Lisa grupp, Add New Permission Rule,Lisa uus Luba reegel, Add Review,Lisage arvustus, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Esiletõstetud postitusel peab olema kaa Load More,Lae rohkem, Published on,Avaldatud, Enable developer mode to create a standard Web Template,Standardse veebimalli loomiseks lubage arendaja režiim, -Please select which module this Web Template belongs to.,"Valige, millisesse moodulisse see veebimall kuulub.", Was this article helpful?,Kas see artikkel oli abistav?, Thank you for your feedback!,Aitäh tagasiside eest!, New Mention on {0},Uus mainimine saidil {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Kõigepe Shared with the following Users with Read access:{0},Jagatud järgmiste lugemisõigusega kasutajatega: {0}, Already in the following Users ToDo list:{0},Juba järgmises kasutajate ülesannete loendis: {0}, Your assignment on {0} {1} has been removed by {2},{2} eemaldas teie ülesande saidil {0} {1}, +Invalid Credentials,Kehtetu mandaat, Print UOM after Quantity,Prindi UOM pärast kogust, Uncaught Server Exception,Püüdmatu serveri erand, There was an error building this page,Selle lehe ehitamisel ilmnes viga, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Lisage {0} diagramm, Currently you have {0} review points,Praegu on teil {0} arvustuspunkti, {0} is not a valid DocType for Dynamic Link,{0} ei ole dünaamilise lingi jaoks sobiv DocType, via Assignment Rule,määramisreegli kaudu, +Based on Field,Põhineb Fieldil, +Assign to the user set in this field,Määrake sellel väljal olevale kasutajakomplektile, +Log Setting User,Logi seadistamise kasutaja, +Log Settings,Logi seaded, +Error Log Notification,Tõrkelogi teatis, +Users To Notify,"Kasutajad, kellele teatada", +Log Cleanup,Logi puhastamine, +Clear Error log After,Kustuta vea logi pärast, +Clear Activity Log After,Kustuta tegevuste logi pärast, +Clear Email Queue After,Kustutage e-posti järjekord pärast, +Please save to edit the template.,Malli muutmiseks salvestage., +Google Analytics Anonymize IP,Google Analytics anonüümseks IP, +Incorrect email or password. Please check your login credentials.,Vale e-mail või parool. Palun kontrollige oma sisselogimisandmeid., +Incorrect Configuration,Vale konfiguratsioon, +You are not allowed to delete Standard Report,Teil ei ole lubatud standardset aruannet kustutada, +You have unseen {0},Teil on nägemata {0}, +Log cleanup and notification configuration,Logi puhastamine ja märguannete seadistamine, diff --git a/frappe/translations/fa.csv b/frappe/translations/fa.csv index bdc6c64d72..619f34bb86 100644 --- a/frappe/translations/fa.csv +++ b/frappe/translations/fa.csv @@ -336,7 +336,6 @@ Add Column,اضافه کردن ستون, Add Contact,اضافه کردن تماس, Add Contacts,افزودن شماره, Add Filter,اضافه کردن فیلتر, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,اضافه کردن گوگل آنالیز ID: به عنوان مثال. UA-89XXX57-1. لطفا کمک جستجو در گوگل آنالیز برای اطلاعات بیشتر., Add Group,افزودن گروه, Add New Permission Rule,اضافه کردن جدید قانون اجازه, Add Review,بررسی را اضافه کنید, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,یک پست ویژه باید دارای Load More,بارگذاری بیشتر, Published on,منتشر شده در, Enable developer mode to create a standard Web Template,برای ایجاد یک الگوی استاندارد وب ، حالت برنامه نویس را فعال کنید, -Please select which module this Web Template belongs to.,لطفاً انتخاب کنید که این الگوی وب متعلق به کدام ماژول باشد., Was this article helpful?,این مقاله به شما کمک کرد؟, Thank you for your feedback!,ممنون از نظر شما, New Mention on {0},ذکر جدید در {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,لطفا Shared with the following Users with Read access:{0},با کاربران زیر با دسترسی خواندن به اشتراک گذاشته شده است: {0}, Already in the following Users ToDo list:{0},قبلاً در لیست ToDo کاربران زیر بوده است: {0}, Your assignment on {0} {1} has been removed by {2},تکلیف شما در {0} {1} توسط {2} حذف شده است, +Invalid Credentials,گواهی نامه نامعتبر, Print UOM after Quantity,UOM را بعد از Quantity چاپ کنید, Uncaught Server Exception,استثنای سرور گیر نیافته, There was an error building this page,هنگام ساخت این صفحه خطایی روی داد, @@ -4680,3 +4679,20 @@ Add a {0} Chart,یک نمودار {0} اضافه کنید, Currently you have {0} review points,در حال حاضر شما {0} امتیاز بررسی دارید, {0} is not a valid DocType for Dynamic Link,{0} یک DocType معتبر برای پیوند پویا نیست, via Assignment Rule,از طریق قانون واگذاری, +Based on Field,بر اساس فیلد, +Assign to the user set in this field,در این قسمت به مجموعه کاربری اختصاص دهید, +Log Setting User,ورود به سیستم کاربر, +Log Settings,تنظیمات ورود به سیستم, +Error Log Notification,اعلان ورود خطا, +Users To Notify,کاربران برای اطلاع رسانی, +Log Cleanup,پاکسازی ورود به سیستم, +Clear Error log After,ورود به سیستم خطا را پاک کنید, +Clear Activity Log After,پس از پاک کردن فعالیت فعالیت, +Clear Email Queue After,پاک کردن صف ایمیل پس از, +Please save to edit the template.,لطفاً برای ویرایش الگو ذخیره کنید., +Google Analytics Anonymize IP,Google Analytics IP را ناشناس می کند, +Incorrect email or password. Please check your login credentials.,کلمه عبور یا ایمیل اشتباه است. لطفاً اطلاعات ورود به سیستم خود را بررسی کنید., +Incorrect Configuration,پیکربندی نادرست است, +You are not allowed to delete Standard Report,شما مجاز به حذف استاندارد گزارش نیستید, +You have unseen {0},شما {0} را ندیده اید, +Log cleanup and notification configuration,پیکربندی پاکسازی و اعلان ورود به سیستم, diff --git a/frappe/translations/fi.csv b/frappe/translations/fi.csv index e95eac6790..c2b022256a 100644 --- a/frappe/translations/fi.csv +++ b/frappe/translations/fi.csv @@ -336,7 +336,6 @@ Add Column,Lisää sarake, Add Contact,Lisää yhteystieto, Add Contacts,Lisää yhteystieto, Add Filter,Lisää suodatin, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Lisää Google Analytics tunnus: esim. UA-89XXX57-1. Lisätietoa löydät Google Analyticsin sivuilta., Add Group,Lisää ryhmä, Add New Permission Rule,lisää uusi käyttöoikeus sääntö, Add Review,Lisää arvostelu, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Esitetyssä viestissä on oltava kansiku Load More,Lataa lisää, Published on,Julkaistu, Enable developer mode to create a standard Web Template,"Ota kehittäjätila käyttöön, jotta voit luoda normaalin verkkomallin", -Please select which module this Web Template belongs to.,"Valitse, mihin moduuliin tämä verkkomalli kuuluu.", Was this article helpful?,Oliko tästä artikkelista hyötyä?, Thank you for your feedback!,Kiitos palautteesta!, New Mention on {0},Uusi maininta paikassa {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Aseta en Shared with the following Users with Read access:{0},"Jaettu seuraaville käyttäjille, joilla on lukuoikeus: {0}", Already in the following Users ToDo list:{0},Jo seuraavassa Käyttäjien tehtäväluettelossa: {0}, Your assignment on {0} {1} has been removed by {2},{2} on poistanut tehtävän {0} {1}, +Invalid Credentials,Virheelliset kirjautumistiedot, Print UOM after Quantity,Tulosta UOM määrän jälkeen, Uncaught Server Exception,Sieppaamaton palvelinpoikkeus, There was an error building this page,Tämän sivun rakentamisessa tapahtui virhe, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Lisää {0} kaavio, Currently you have {0} review points,Sinulla on tällä hetkellä {0} arvostelupistettä, {0} is not a valid DocType for Dynamic Link,{0} ei ole kelvollinen DocType for Dynamic Link, via Assignment Rule,tehtäväsäännön kautta, +Based on Field,Perustuu kenttään, +Assign to the user set in this field,Määritä tämän kentän käyttäjäjoukolle, +Log Setting User,Lokiasetuksen käyttäjä, +Log Settings,Lokin asetukset, +Error Log Notification,Virhelokin ilmoitus, +Users To Notify,Käyttäjien ilmoitettava, +Log Cleanup,Lokin puhdistus, +Clear Error log After,Tyhjennä virheloki jälkeen, +Clear Activity Log After,Tyhjennä toimintaloki jälkeen, +Clear Email Queue After,Tyhjennä sähköpostijono jälkeen, +Please save to edit the template.,Tallenna mallin muokkaamiseksi., +Google Analytics Anonymize IP,Google Analytics Anonymize IP, +Incorrect email or password. Please check your login credentials.,Väärä sähköpostiosoite tai salasana. Tarkista kirjautumistunnuksesi., +Incorrect Configuration,Virheellinen määritys, +You are not allowed to delete Standard Report,Et voi poistaa vakioraporttia, +You have unseen {0},Olet nähnyt {0}, +Log cleanup and notification configuration,Lokin puhdistus ja ilmoitusten määritykset, diff --git a/frappe/translations/fr.csv b/frappe/translations/fr.csv index 722de637d4..1f9cc077d3 100644 --- a/frappe/translations/fr.csv +++ b/frappe/translations/fr.csv @@ -336,7 +336,6 @@ Add Column,Ajouter une Colonne, Add Contact,Ajouter le Contact, Add Contacts,Ajouter des contacts, Add Filter,Ajouter un filtre, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Ajouter l'ID de Google Analytics : e.g. UA-89XXX57-1. Veuillez chercher de l'aide sur Google Analytics pour plus d'informations., Add Group,Ajouter un groupe, Add New Permission Rule,Ajouter une Nouvelle Règle d'Autorisation, Add Review,Ajouter un commentaire, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Un article en vedette doit avoir une ima Load More,Charger plus, Published on,Publié le, Enable developer mode to create a standard Web Template,Activer le mode développeur pour créer un modèle Web standard, -Please select which module this Web Template belongs to.,Veuillez sélectionner le module auquel appartient ce modèle Web., Was this article helpful?,Cet article a-t-il été utile?, Thank you for your feedback!,Merci pour votre avis!, New Mention on {0},Nouvelle mention sur {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Veuillez Shared with the following Users with Read access:{0},Partagé avec les utilisateurs suivants avec accès en lecture: {0}, Already in the following Users ToDo list:{0},Déjà dans la liste des tâches des utilisateurs suivante: {0}, Your assignment on {0} {1} has been removed by {2},Votre devoir sur {0} {1} a été supprimé par {2}, +Invalid Credentials,Les informations d'identification invalides, Print UOM after Quantity,Imprimer UdM après la quantité, Uncaught Server Exception,Exception de serveur non interceptée, There was an error building this page,Une erreur s'est produite lors de la construction de cette page, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Ajouter un graphique {0}, Currently you have {0} review points,"Actuellement, vous avez {0} points d'avis", {0} is not a valid DocType for Dynamic Link,{0} n'est pas un DocType valide pour Dynamic Link, via Assignment Rule,via la règle d'attribution, +Based on Field,Basé sur le champ, +Assign to the user set in this field,Attribuer à l'utilisateur défini dans ce champ, +Log Setting User,Utilisateur de paramètres de journal, +Log Settings,Paramètres du journal, +Error Log Notification,Notification du journal des erreurs, +Users To Notify,Utilisateurs à notifier, +Log Cleanup,Nettoyage du journal, +Clear Error log After,Effacer le journal des erreurs après, +Clear Activity Log After,Effacer le journal d'activité après, +Clear Email Queue After,Effacer la file d'attente des e-mails après, +Please save to edit the template.,Veuillez enregistrer pour modifier le modèle., +Google Analytics Anonymize IP,Google Analytics anonymise l'IP, +Incorrect email or password. Please check your login credentials.,Email ou mot de passe incorrect. Veuillez vérifier vos informations de connexion., +Incorrect Configuration,Configuration incorrecte, +You are not allowed to delete Standard Report,Vous n'êtes pas autorisé à supprimer le rapport standard, +You have unseen {0},Vous avez invisible {0}, +Log cleanup and notification configuration,Nettoyage des journaux et configuration des notifications, diff --git a/frappe/translations/gu.csv b/frappe/translations/gu.csv index a9e33a10d2..4e5bb9079e 100644 --- a/frappe/translations/gu.csv +++ b/frappe/translations/gu.csv @@ -336,7 +336,6 @@ Add Column,કૉલમ ઉમેરો, Add Contact,સંપર્ક ઉમેરો, Add Contacts,સંપર્કો ઉમેરો, Add Filter,ફિલ્ટર ઉમેરો, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,ગૂગલ ઍનલિટિક્સ ID ને ઉમેરો: દા.ત.. UA-89XXX57-1. વધુ માહિતી માટે Google Analytics પર મદદ શોધવા કૃપા કરીને., Add Group,જૂથ ઉમેરો, Add New Permission Rule,ન્યૂ પરવાનગી નિયમ ઉમેરો, Add Review,સમીક્ષા ઉમેરો, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,વૈશિષ્ટિકૃત પો Load More,વધુ બતાવો, Published on,પર પ્રકાશિત, Enable developer mode to create a standard Web Template,માનક વેબ Templateાંચો બનાવવા માટે વિકાસકર્તા મોડને સક્ષમ કરો, -Please select which module this Web Template belongs to.,કૃપા કરી આ વેબ ટેમ્પલેટ કયા મોડ્યુલનું છે તે પસંદ કરો., Was this article helpful?,શું આ લેખ મદદરૂપ બન્યો?, Thank you for your feedback!,તમારા પ્રતિભાવ બદલ આભાર!, New Mention on {0},{0 on પર નવો ઉલ્લેખ, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,કૃ Shared with the following Users with Read access:{0},વાંચન વપરાશ સાથે નીચેના વપરાશકર્તાઓ સાથે શેર કરેલ: {0}, Already in the following Users ToDo list:{0},પહેલેથી જ નીચેના વપરાશકર્તાઓ ટોડો સૂચિમાં છે: {0}, Your assignment on {0} {1} has been removed by {2},Assign 0} {1} પરની તમારી સોંપણી {2 by દ્વારા દૂર કરવામાં આવી છે, +Invalid Credentials,અમાન્ય ઓળખાણપત્ર, Print UOM after Quantity,જથ્થા પછી યુઓએમ છાપો, Uncaught Server Exception,અપરિચિત સર્વર અપવાદ, There was an error building this page,આ પાનું બનાવવામાં ભૂલ આવી હતી, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} ચાર્ટ ઉમેરો, Currently you have {0} review points,હાલમાં તમારી પાસે points 0} સમીક્ષા પોઇન્ટ છે, {0} is not a valid DocType for Dynamic Link,ગતિશીલ લિંક માટે yn 0 a માન્ય ડોકટાઇપ નથી, via Assignment Rule,સોંપણી નિયમ દ્વારા, +Based on Field,ક્ષેત્ર પર આધારિત, +Assign to the user set in this field,આ ક્ષેત્રમાં સેટ કરેલા વપરાશકર્તાને સોંપો, +Log Setting User,લ Logગ સેટિંગ યુઝર, +Log Settings,લ Logગ સેટિંગ્સ, +Error Log Notification,ભૂલ લ Logગ સૂચના, +Users To Notify,વપરાશકર્તાઓ સૂચિત કરવા માટે, +Log Cleanup,લ Logગ ક્લિનઅપ, +Clear Error log After,ભૂલ લ Errorગ પછી સાફ કરો, +Clear Activity Log After,પ્રવૃત્તિ લ Logગ પછી સાફ કરો, +Clear Email Queue After,પછી ઇમેઇલ કતાર સાફ કરો, +Please save to edit the template.,કૃપા કરીને નમૂનાને સંપાદિત કરવા માટે સાચવો., +Google Analytics Anonymize IP,ગૂગલ ticsનલિટિક્સ અનામી IP, +Incorrect email or password. Please check your login credentials.,ખોટો ઇમેઇલ અથવા પાસવર્ડ. કૃપા કરીને તમારા લ loginગિન ઓળખપત્રોને તપાસો., +Incorrect Configuration,ખોટી ગોઠવણી, +You are not allowed to delete Standard Report,તમને માનક અહેવાલ કા deleteી નાખવાની મંજૂરી નથી, +You have unseen {0},તમારી પાસે ન જોઈ શકાય તેવું છે {0}, +Log cleanup and notification configuration,લ Logગ સફાઇ અને સૂચના રૂપરેખાંકન, diff --git a/frappe/translations/he.csv b/frappe/translations/he.csv index 55d0413bac..652e62e5b1 100644 --- a/frappe/translations/he.csv +++ b/frappe/translations/he.csv @@ -336,7 +336,6 @@ Add Column,להוסיף טור, Add Contact,הוסף איש קשר, Add Contacts,הוסף אנשי קשר, Add Filter,הוסף מסנן, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,הוספת זיהוי של Google Analytics: למשל. UA-89XXX57-1. אנא עזרה החיפוש ב- Google Analytics לקבלת מידע נוספת., Add Group,הוסף קבוצה, Add New Permission Rule,הוסף כלל אישורים והיתרים חדשים, Add Review,הוסף ביקורת, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,לפוסט מוצג חייבת להיו Load More,טען עוד, Published on,פורסם ב, Enable developer mode to create a standard Web Template,אפשר מצב מפתח כדי ליצור תבנית אינטרנט רגילה, -Please select which module this Web Template belongs to.,אנא בחר לאיזה מודול תבנית האינטרנט הזו שייכת., Was this article helpful?,הכתבה הזו הייתה מועילה?, Thank you for your feedback!,תודה על המשוב שלך!, New Mention on {0},אזכור חדש ב- {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,אנא Shared with the following Users with Read access:{0},שותף עם המשתמשים הבאים עם גישה לקריאה: {0}, Already in the following Users ToDo list:{0},כבר ברשימת המשימות הבאה של המשתמשים: {0}, Your assignment on {0} {1} has been removed by {2},המטלה שלך ב- {0} {1} הוסרה על ידי {2}, +Invalid Credentials,אישורים לא חוקיים, Print UOM after Quantity,הדפס UOM לאחר כמות, Uncaught Server Exception,חריג שרת שלא נתפס, There was an error building this page,אירעה שגיאה בבניית דף זה, @@ -4680,3 +4679,20 @@ Add a {0} Chart,הוסף תרשים {0}, Currently you have {0} review points,נכון לעכשיו יש לך {0} נקודות ביקורת, {0} is not a valid DocType for Dynamic Link,{0} אינו DocType חוקי עבור קישור דינמי, via Assignment Rule,באמצעות כלל הקצאה, +Based on Field,מבוסס על שדה, +Assign to the user set in this field,הקצה למערכת המשתמש בשדה זה, +Log Setting User,משתמש הגדרת יומן, +Log Settings,הגדרות יומן, +Error Log Notification,הודעה על יומן שגיאות, +Users To Notify,משתמשים להודיע, +Log Cleanup,ניקוי יומנים, +Clear Error log After,נקה יומן שגיאות לאחר, +Clear Activity Log After,נקה יומן פעילות לאחר, +Clear Email Queue After,נקה תור דוא"ל לאחר, +Please save to edit the template.,אנא שמור כדי לערוך את התבנית., +Google Analytics Anonymize IP,Google Analytics אנונימיזציה של IP, +Incorrect email or password. Please check your login credentials.,אימייל או סיסמה שגויים. אנא בדוק את אישורי הכניסה שלך., +Incorrect Configuration,תצורה שגויה, +You are not allowed to delete Standard Report,אינך רשאי למחוק את הדוח הסטנדרטי, +You have unseen {0},לא ראית את {0}, +Log cleanup and notification configuration,ניקוי יומן ותצורת התראות, diff --git a/frappe/translations/hi.csv b/frappe/translations/hi.csv index 15988d0032..b8b48ad944 100644 --- a/frappe/translations/hi.csv +++ b/frappe/translations/hi.csv @@ -336,7 +336,6 @@ Add Column,कॉलम जोड़ें, Add Contact,संपर्क जोड़ें, Add Contacts,संपर्क जोड़ें, Add Filter,फ़िल्टर जोड़ें, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,उदाहरण के लिए: गूगल एनालिटिक्स आईडी जोड़ें. यूए-89XXX57-1. अधिक जानकारी के लिए गूगल एनालिटिक्स पर मदद की खोज करें., Add Group,समूह जोड़ें, Add New Permission Rule,नई अनुमति नियम जोड़ें, Add Review,समीक्षा जोड़ें, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,एक चित्रित पोस Load More,और लोड करें, Published on,पर प्रकाशित, Enable developer mode to create a standard Web Template,एक मानक वेब टेम्पलेट बनाने के लिए डेवलपर मोड सक्षम करें, -Please select which module this Web Template belongs to.,कृपया चुनें कि यह वेब टेम्पलेट किस मॉड्यूल से संबंधित है।, Was this article helpful?,क्या यह लेख सहायक था?, Thank you for your feedback!,आपकी प्रतिक्रिया के लिए आपका धन्यवाद!, New Mention on {0},{0} पर नया उल्लेख, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,कृ Shared with the following Users with Read access:{0},निम्नलिखित उपयोगकर्ताओं के साथ साझा पहुंच के साथ साझा करें: {0}, Already in the following Users ToDo list:{0},पहले से ही निम्न उपयोगकर्ता ToDo सूची में: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1} पर आपका असाइनमेंट {2} द्वारा हटा दिया गया है, +Invalid Credentials,अवैध प्रत्यय पत्र, Print UOM after Quantity,मात्रा के बाद UOM प्रिंट करें, Uncaught Server Exception,बिना सर्वर के अपवाद, There was an error building this page,इस पृष्ठ को बनाने में एक त्रुटि हुई थी, @@ -4680,3 +4679,20 @@ Add a {0} Chart,एक {0} चार्ट जोड़ें, Currently you have {0} review points,वर्तमान में आपके पास {0} समीक्षा बिंदु हैं, {0} is not a valid DocType for Dynamic Link,{0} डायनामिक लिंक के लिए मान्य डॉक टाइप नहीं है, via Assignment Rule,असाइनमेंट नियम के माध्यम से, +Based on Field,फील्ड पर आधारित है, +Assign to the user set in this field,इस क्षेत्र में सेट किए गए उपयोगकर्ता को असाइन करें, +Log Setting User,लॉग इन यूजर, +Log Settings,लॉग सेटिंग्स, +Error Log Notification,त्रुटि लॉग अधिसूचना, +Users To Notify,उपयोगकर्ताओं को सूचित करने के लिए, +Log Cleanup,लॉग इन क्लीनअप, +Clear Error log After,क्लियर एरर लॉग इन करें, +Clear Activity Log After,स्पष्ट गतिविधि लॉग इन करें, +Clear Email Queue After,ईमेल स्पष्ट कतार के बाद, +Please save to edit the template.,टेम्प्लेट संपादित करने के लिए कृपया सहेजें।, +Google Analytics Anonymize IP,Google Analytics आईपी का अनाउंसमेंट करता है, +Incorrect email or password. Please check your login credentials.,गलत ई - मेल और पासवर्ड। कृपया अपनी लॉगिन क्रेडेंशियल जांचें।, +Incorrect Configuration,गलत कॉन्फ़िगरेशन, +You are not allowed to delete Standard Report,आपको मानक रिपोर्ट को हटाने की अनुमति नहीं है, +You have unseen {0},आपके पास {0} अनदेखी है, +Log cleanup and notification configuration,सफाई और अधिसूचना कॉन्फ़िगरेशन लॉग करें, diff --git a/frappe/translations/hr.csv b/frappe/translations/hr.csv index 979e9c76fc..b64875947a 100644 --- a/frappe/translations/hr.csv +++ b/frappe/translations/hr.csv @@ -336,7 +336,6 @@ Add Column,Dodaj stupac, Add Contact,Dodaj kontakt, Add Contacts,Dodajte kontakte, Add Filter,Dodaj filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Dodaj Google Analytics ID: npr.. UA-89XXX57-1. Molimo potražiti pomoć na Google Analytics za više informacija., Add Group,Dodajte grupu, Add New Permission Rule,Dodaj novo pravilo za dozvole korisnicima, Add Review,Dodajte recenziju, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Istaknuti post mora imati naslovnu sliku Load More,Učitaj više, Published on,Objavljeno dana, Enable developer mode to create a standard Web Template,Omogućite način za programere da biste stvorili standardni web predložak, -Please select which module this Web Template belongs to.,Molimo odaberite kojem modulu pripada ovaj web predložak., Was this article helpful?,Je li ovaj članak bio koristan?, Thank you for your feedback!,Zahvaljujemo na povratnim informacijama!, New Mention on {0},Novo spominjanje {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Molimo p Shared with the following Users with Read access:{0},Dijeljeno sa sljedećim korisnicima s pristupom za čitanje: {0}, Already in the following Users ToDo list:{0},Već na sljedećem popisu obveza korisnika: {0}, Your assignment on {0} {1} has been removed by {2},Korisnik {2} uklonio je vaš zadatak na {0} {1}, +Invalid Credentials,Nevažeće vjerodajnice, Print UOM after Quantity,Ispis UOM-a nakon količine, Uncaught Server Exception,Neuhvaćena iznimka poslužitelja, There was an error building this page,Došlo je do pogreške prilikom izrade ove stranice, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Dodajte {0} grafikon, Currently you have {0} review points,Trenutno imate {0} bodova za pregled, {0} is not a valid DocType for Dynamic Link,{0} nije važeći DocType za dinamičku vezu, via Assignment Rule,putem Pravila dodjele, +Based on Field,Na temelju polja, +Assign to the user set in this field,Dodijeli korisničkom skupu u ovom polju, +Log Setting User,Korisnik za postavljanje dnevnika, +Log Settings,Postavke dnevnika, +Error Log Notification,Obavijest o evidenciji pogrešaka, +Users To Notify,Korisnici koje treba obavijestiti, +Log Cleanup,Čišćenje dnevnika, +Clear Error log After,Obriši dnevnik pogrešaka nakon, +Clear Activity Log After,Obriši dnevnik aktivnosti nakon, +Clear Email Queue After,Izbriši red čekanja e-pošte nakon, +Please save to edit the template.,Sačuvajte za uređivanje predloška., +Google Analytics Anonymize IP,Google Analytics anonimizira IP, +Incorrect email or password. Please check your login credentials.,Netočan email ili lozinka. Molimo provjerite svoje vjerodajnice za prijavu., +Incorrect Configuration,Neispravna konfiguracija, +You are not allowed to delete Standard Report,Nije vam dozvoljeno brisanje Standardnog izvješća, +You have unseen {0},Nevidjeli ste {0}, +Log cleanup and notification configuration,Čišćenje dnevnika i konfiguracija obavijesti, diff --git a/frappe/translations/hu.csv b/frappe/translations/hu.csv index 53d09277dc..fe82ed7fe8 100644 --- a/frappe/translations/hu.csv +++ b/frappe/translations/hu.csv @@ -336,7 +336,6 @@ Add Column,Oszlop hozzáadása, Add Contact,Kapcsolat hozzáadása, Add Contacts,Személyek hozzáadása, Add Filter,Szűrő hozzáadása, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Add a Google Analytics ID: pl. UA-89XXX57-1. Kérjük, keressen segítséget a Google Analytics-on további információkért.", Add Group,Csoport hozzáadása, Add New Permission Rule,Új Jogosultsági szabály hozzáadása, Add Review,Vélemény hozzáadása, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,A kiemelt posztnak tartalmaznia kell bor Load More,Töltsön be többet, Published on,Megjelent, Enable developer mode to create a standard Web Template,Engedélyezze a fejlesztői módot egy szabványos websablon létrehozásához, -Please select which module this Web Template belongs to.,"Kérjük, válassza ki, melyik modulhoz tartozik ez a websablon.", Was this article helpful?,Hasznos volt ez a cikk?, Thank you for your feedback!,Köszönjük a visszajelzést!, New Mention on {0},Új megemlítés itt: {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Kérjü Shared with the following Users with Read access:{0},Megosztva a következő olvasási hozzáféréssel rendelkező felhasználókkal: {0}, Already in the following Users ToDo list:{0},Már szerepel a Felhasználók következő teendők listájában: {0}, Your assignment on {0} {1} has been removed by {2},A (z) {0} {1} feladatot {2} eltávolította, +Invalid Credentials,Érvénytelen hitelesítő adatok, Print UOM after Quantity,Az UOM nyomtatása a mennyiség után, Uncaught Server Exception,Fogatlan kiszolgáló-kivétel, There was an error building this page,Hiba történt az oldal felépítése során, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Adjon hozzá egy {0} diagramot, Currently you have {0} review points,Jelenleg {0} ellenőrzési pontja van, {0} is not a valid DocType for Dynamic Link,A (z) {0} nem érvényes DocType a Dynamic Link számára, via Assignment Rule,a hozzárendelési szabályon keresztül, +Based on Field,Field alapján, +Assign to the user set in this field,Hozzárendelés a felhasználói mezőhöz ebben a mezőben, +Log Setting User,Naplóbeállítás felhasználó, +Log Settings,Naplóbeállítások, +Error Log Notification,Hiba napló értesítés, +Users To Notify,Értesítendő felhasználók, +Log Cleanup,Naplótisztítás, +Clear Error log After,Hiba napló törlése után, +Clear Activity Log After,Törölje a tevékenységnaplót, +Clear Email Queue After,E-mail sor törlése után, +Please save to edit the template.,"Kérjük, mentse a sablon szerkesztéséhez.", +Google Analytics Anonymize IP,Google Analytics Anonimizálja az IP-t, +Incorrect email or password. Please check your login credentials.,"Helytelen email vagy jelszó. Kérjük, ellenőrizze bejelentkezési adatait.", +Incorrect Configuration,Helytelen konfiguráció, +You are not allowed to delete Standard Report,Nem törölheti a Normál jelentést, +You have unseen {0},Nem látott {0}, +Log cleanup and notification configuration,Naplótisztítás és értesítések konfigurálása, diff --git a/frappe/translations/id.csv b/frappe/translations/id.csv index 0e39879829..94ed5d7c88 100644 --- a/frappe/translations/id.csv +++ b/frappe/translations/id.csv @@ -336,7 +336,6 @@ Add Column,Tambahkan Kolom, Add Contact,Tambah kontak, Add Contacts,Tambahkan Kontak, Add Filter,Tambahkan Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Tambahkan ID Google Analytics: misalnya. UA-89XXX57-1. Silahkan cari bantuan di Google Analytics untuk informasi lebih lanjut., Add Group,Tambahkan Grup, Add New Permission Rule,Tambahkan Rule Izin Baru, Add Review,Tambahkan Ulasan, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Postingan unggulan harus memiliki gambar Load More,Muat lebih banyak, Published on,Diterbitkan di, Enable developer mode to create a standard Web Template,Aktifkan mode pengembang untuk membuat Template Web standar, -Please select which module this Web Template belongs to.,Pilih modul mana yang dimiliki Template Web ini., Was this article helpful?,Apakah artikel ini berguna?, Thank you for your feedback!,Terima kasih atas tanggapan Anda!, New Mention on {0},Sebutan Baru di {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Harap te Shared with the following Users with Read access:{0},Dibagikan dengan Pengguna berikut dengan akses Baca: {0}, Already in the following Users ToDo list:{0},Sudah ada di daftar ToDo Pengguna berikut: {0}, Your assignment on {0} {1} has been removed by {2},Tugas Anda pada {0} {1} telah dihapus oleh {2}, +Invalid Credentials,Kredensial tidak valid, Print UOM after Quantity,Cetak UOM setelah Kuantitas, Uncaught Server Exception,Pengecualian Server Tidak Tertangkap, There was an error building this page,Terjadi kesalahan saat membangun halaman ini, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Tambahkan Bagan {0}, Currently you have {0} review points,Saat ini Anda memiliki {0} poin ulasan, {0} is not a valid DocType for Dynamic Link,{0} bukan DocType untuk Dynamic Link yang valid, via Assignment Rule,melalui Aturan Penugasan, +Based on Field,Berdasarkan Bidang, +Assign to the user set in this field,Tetapkan ke kumpulan pengguna di bidang ini, +Log Setting User,Pengguna Pengaturan Log, +Log Settings,Pengaturan Log, +Error Log Notification,Pemberitahuan Log Kesalahan, +Users To Notify,Pengguna Untuk Diberitahu, +Log Cleanup,Pembersihan Log, +Clear Error log After,Hapus Log Kesalahan Setelah, +Clear Activity Log After,Hapus Log Aktivitas Setelah, +Clear Email Queue After,Hapus Antrian Email Setelah, +Please save to edit the template.,Harap simpan untuk mengedit template., +Google Analytics Anonymize IP,Google Analytics Anonimkan IP, +Incorrect email or password. Please check your login credentials.,Email atau sandi salah. Harap periksa kredensial login Anda., +Incorrect Configuration,Konfigurasi Salah, +You are not allowed to delete Standard Report,Anda tidak diizinkan untuk menghapus Laporan Standar, +You have unseen {0},Anda memiliki {0} yang tak terlihat, +Log cleanup and notification configuration,Pembersihan log dan konfigurasi notifikasi, diff --git a/frappe/translations/is.csv b/frappe/translations/is.csv index 98b628452e..ca2e6ebb52 100644 --- a/frappe/translations/is.csv +++ b/frappe/translations/is.csv @@ -336,7 +336,6 @@ Add Column,Bæta dálk, Add Contact,bæta við tengilið, Add Contacts,Bæta við tengiliðum, Add Filter,Bæta Sía, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Bæta við Google Analytics: td. UA-89XXX57-1. Prófaðu að leita hjálpar á Google Analytics til að fá frekari upplýsingar., Add Group,Bæta við hóp, Add New Permission Rule,Bæta við nýjum leyfi reglu, Add Review,Bættu við umsögn, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Valin færsla verður að hafa forsíðu Load More,Hlaða meira, Published on,Birt þann, Enable developer mode to create a standard Web Template,Virkja forritaraham til að búa til venjulegt vefsniðmát, -Please select which module this Web Template belongs to.,Veldu hvaða einingu þetta vefsnið snýr að., Was this article helpful?,Var þessi grein gagnleg?, Thank you for your feedback!,Þakka þér fyrir athugasemdir þínar!, New Mention on {0},Ný umtal á {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Vinsamle Shared with the following Users with Read access:{0},Deilt með eftirfarandi notendum með lesaðgang: {0}, Already in the following Users ToDo list:{0},Nú þegar á eftirfarandi ToDo lista fyrir notendur: {0}, Your assignment on {0} {1} has been removed by {2},Verkefni þitt á {0} {1} var fjarlægt af {2}, +Invalid Credentials,Ógild skilríki, Print UOM after Quantity,Prentaðu UOM eftir magni, Uncaught Server Exception,Óveiddur Server undantekning, There was an error building this page,Villa kom upp við gerð þessarar síðu, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Bættu við {0} töflu, Currently you have {0} review points,Eins og er hefurðu {0} umsagnarstig, {0} is not a valid DocType for Dynamic Link,{0} er ekki gild DocType fyrir Dynamic Link, via Assignment Rule,með framsalsreglu, +Based on Field,Byggt á sviði, +Assign to the user set in this field,Úthlutaðu notandasettinu í þessu sviði, +Log Setting User,Notandi logstillingar, +Log Settings,Notkunarstillingar, +Error Log Notification,Tilkynning um villuskrá, +Users To Notify,Notendur til að láta vita, +Log Cleanup,Hreinsun skógarhöggs, +Clear Error log After,Hreinsa villuskrá eftir, +Clear Activity Log After,Hreinsa athafnaskrá eftir, +Clear Email Queue After,Hreinsa tölvupóstsröð eftir, +Please save to edit the template.,Vinsamlegast vistaðu til að breyta sniðmátinu., +Google Analytics Anonymize IP,Google Analytics nafnlaus IP, +Incorrect email or password. Please check your login credentials.,Rangt netfang eða lykilorð. Vinsamlegast athugaðu innskráningarskilríkin þín., +Incorrect Configuration,Röng stilling, +You are not allowed to delete Standard Report,Þú hefur ekki leyfi til að eyða venjulegri skýrslu, +You have unseen {0},Þú hefur séð {0}, +Log cleanup and notification configuration,Hreinsun á logum og stillingum tilkynninga, diff --git a/frappe/translations/it.csv b/frappe/translations/it.csv index de7f20cd2f..b7c38333d1 100644 --- a/frappe/translations/it.csv +++ b/frappe/translations/it.csv @@ -336,7 +336,6 @@ Add Column,Aggiungi colonna, Add Contact,Aggiungi contatto, Add Contacts,Aggiungi contatti, Add Filter,Aggiungi filtro, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Aggiungere ID Google Analytics : es. UA-89XXX57-1. Cerca su Google Analytics per ulteriori informazioni., Add Group,Aggiungere gruppo, Add New Permission Rule,Aggiungi Nuova Regola di Autorizzazione, Add Review,Aggiungi recensione, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Un post in primo piano deve avere un' Load More,Carica altro, Published on,pubblicato su, Enable developer mode to create a standard Web Template,Abilita la modalità sviluppatore per creare un modello web standard, -Please select which module this Web Template belongs to.,Seleziona il modulo a cui appartiene questo modello web., Was this article helpful?,questo articolo è stato utile?, Thank you for your feedback!,Grazie per il tuo feedback!, New Mention on {0},Nuova menzione su {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Impostar Shared with the following Users with Read access:{0},Condiviso con i seguenti utenti con accesso in lettura: {0}, Already in the following Users ToDo list:{0},Già nel seguente elenco di attività da fare per gli utenti: {0}, Your assignment on {0} {1} has been removed by {2},Il tuo compito su {0} {1} è stato rimosso da {2}, +Invalid Credentials,Credenziali non valide, Print UOM after Quantity,Stampa UOM dopo la quantità, Uncaught Server Exception,Eccezione server non rilevata, There was an error building this page,Si è verificato un errore durante la creazione di questa pagina, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Aggiungi un {0} grafico, Currently you have {0} review points,Al momento hai {0} punti di revisione, {0} is not a valid DocType for Dynamic Link,{0} non è un DocType valido per Dynamic Link, via Assignment Rule,tramite la regola di assegnazione, +Based on Field,Basato su Field, +Assign to the user set in this field,Assegna all'utente impostato in questo campo, +Log Setting User,Utente impostazione registro, +Log Settings,Impostazioni registro, +Error Log Notification,Notifica registro errori, +Users To Notify,Utenti da notificare, +Log Cleanup,Pulizia registro, +Clear Error log After,Cancella registro errori dopo, +Clear Activity Log After,Cancella registro attività dopo, +Clear Email Queue After,Cancella coda e-mail dopo, +Please save to edit the template.,Salva per modificare il modello., +Google Analytics Anonymize IP,Google Analytics Anonimizza IP, +Incorrect email or password. Please check your login credentials.,Email o password errati. Verifica le tue credenziali di accesso., +Incorrect Configuration,Configurazione errata, +You are not allowed to delete Standard Report,Non sei autorizzato a eliminare il rapporto standard, +You have unseen {0},Non hai visto {0}, +Log cleanup and notification configuration,Pulizia del registro e configurazione delle notifiche, diff --git a/frappe/translations/ja.csv b/frappe/translations/ja.csv index 42e43d7cf4..e4ac78065e 100644 --- a/frappe/translations/ja.csv +++ b/frappe/translations/ja.csv @@ -336,7 +336,6 @@ Add Column,列の追加, Add Contact,連絡先追加, Add Contacts,連絡先を追加, Add Filter,フィルタを追加, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google AnalyticsのIDを追加します(例:UA-89XXX57-1)。詳細については、Google Analyticsのヘルプを検索してください。, Add Group,グループを追加, Add New Permission Rule,新しいアクセス許可ルールの追加, Add Review,レビューを追加, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,注目の投稿にはカバー画像が Load More,もっと読み込む, Published on,に公開, Enable developer mode to create a standard Web Template,開発者モードを有効にして、標準のWebテンプレートを作成します, -Please select which module this Web Template belongs to.,このWebテンプレートが属するモジュールを選択してください。, Was this article helpful?,この記事は役に立ちましたか?, Thank you for your feedback!,ご意見ありがとうございます!, New Mention on {0},{0}の新しい言及, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,まず Shared with the following Users with Read access:{0},読み取りアクセス権を持つ次のユーザーと共有:{0}, Already in the following Users ToDo list:{0},すでに次のユーザーのToDoリストにあります:{0}, Your assignment on {0} {1} has been removed by {2},{0} {1}の割り当ては{2}によって削除されました, +Invalid Credentials,無効な資格情報, Print UOM after Quantity,数量の後に単位を印刷する, Uncaught Server Exception,キャッチされないサーバーの例外, There was an error building this page,このページの作成中にエラーが発生しました, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0}チャートを追加する, Currently you have {0} review points,現在、{0}件のレビューポイントがあります, {0} is not a valid DocType for Dynamic Link,{0}は動的リンクの有効なDocTypeではありません, via Assignment Rule,割り当てルールを介して, +Based on Field,フィールドに基づく, +Assign to the user set in this field,このフィールドで設定したユーザーに割り当てます, +Log Setting User,ログ設定ユーザー, +Log Settings,ログ設定, +Error Log Notification,エラーログ通知, +Users To Notify,通知するユーザー, +Log Cleanup,ログのクリーンアップ, +Clear Error log After,後でエラーログをクリアする, +Clear Activity Log After,後でアクティビティログをクリアする, +Clear Email Queue After,後にメールキューをクリアする, +Please save to edit the template.,テンプレートを編集するには保存してください。, +Google Analytics Anonymize IP,GoogleAnalyticsはIPを匿名化します, +Incorrect email or password. Please check your login credentials.,メールアドレスまたはパスワードが正しくありません。ログイン資格情報を確認してください。, +Incorrect Configuration,正しくない構成, +You are not allowed to delete Standard Report,標準レポートを削除することはできません, +You have unseen {0},見えない{0}があります, +Log cleanup and notification configuration,ログのクリーンアップと通知の構成, diff --git a/frappe/translations/km.csv b/frappe/translations/km.csv index 2e28a4de33..21687cdd04 100644 --- a/frappe/translations/km.csv +++ b/frappe/translations/km.csv @@ -336,7 +336,6 @@ Add Column,បន្ថែមជួរឈរ, Add Contact,បន្ថែមទំនាក់ទំនង, Add Contacts,បន្ថែមទំនាក់ទំនង, Add Filter,បន្ថែមតម្រង, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,បន្ថែម Google បានវិភាគលេខឧ។ UA បាន-89XXX57-1 ។ សូមស្វែងរកជំនួយនៅលើ Google បានវិភាគសម្រាប់ព័ត៌មានបន្ថែម។, Add Group,បន្ថែមក្រុម។, Add New Permission Rule,បន្ថែមវិធានសិទ្ធិថ្មី, Add Review,បន្ថែមការពិនិត្យឡើងវិញ។, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,ប្រកាសដែលមានល Load More,ផ្ទុកបន្ថែម, Published on,បោះពុម្ភផ្សាយ, Enable developer mode to create a standard Web Template,បើកដំណើរការរបៀបអ្នកអភិវឌ្ឍន៍ដើម្បីបង្កើតគំរូគេហទំព័រស្តង់ដារ, -Please select which module this Web Template belongs to.,សូមជ្រើសរើសម៉ូឌុលគេហទំព័រនេះមួយណាជារបស់។, Was this article helpful?,តើអត្ថបទនេះមានប្រយោជន៍ទេ?, Thank you for your feedback!,សូមអរគុណចំពោះមតិប្រតិកម្មរបស់អ្នក!, New Mention on {0},ការបញ្ជាក់ថ្មីលើ {០}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,សូ Shared with the following Users with Read access:{0},ចែករំលែកជាមួយអ្នកប្រើខាងក្រោមដែលមានសិទ្ធិចូលអាន៖ {0}, Already in the following Users ToDo list:{0},មាននៅក្នុងបញ្ជីការងារត្រូវធ្វើដូចខាងក្រោម៖ {0}, Your assignment on {0} {1} has been removed by {2},កិច្ចការរបស់អ្នកលើ {0} {1} ត្រូវបានលុបចោលដោយ {2}, +Invalid Credentials,លិខិតសម្គាល់មិនត្រឹមត្រូវ, Print UOM after Quantity,បោះពុម្ព UOM បន្ទាប់ពីបរិមាណ, Uncaught Server Exception,ការលើកលែងម៉ាស៊ីនមេដែលមិនបានទទួល, There was an error building this page,មានកំហុសក្នុងការបង្កើតទំព័រនេះ, @@ -4680,3 +4679,20 @@ Add a {0} Chart,បន្ថែមគំនូសតាង {0}, Currently you have {0} review points,បច្ចុប្បន្នអ្នកមានចំណុចពិនិត្យឡើងវិញ {០}, {0} is not a valid DocType for Dynamic Link,{0} មិនមែនជា DocType ត្រឹមត្រូវសម្រាប់តំណឌីណាមិចទេ, via Assignment Rule,តាមរយៈវិធានចាត់តាំង, +Based on Field,ផ្អែកលើវាល, +Assign to the user set in this field,កំណត់ទៅអ្នកប្រើដែលបានកំណត់នៅក្នុងវាលនេះ, +Log Setting User,កំណត់អ្នកប្រើកំណត់ហេតុ, +Log Settings,ការកំណត់កំណត់ហេតុ, +Error Log Notification,ការជូនដំណឹងអំពីកំណត់ហេតុនៃកំហុស, +Users To Notify,អ្នកប្រើប្រាស់ត្រូវជូនដំណឹង, +Log Cleanup,ការសម្អាតកំណត់ហេតុ, +Clear Error log After,លុបកំណត់ហេតុកំហុសបន្ទាប់ពី, +Clear Activity Log After,សម្អាតសកម្មភាពបន្ទាប់ពី, +Clear Email Queue After,លុបជួរអ៊ីមែលបន្ទាប់, +Please save to edit the template.,សូមរក្សាទុកដើម្បីកែសម្រួលគម្រូ។, +Google Analytics Anonymize IP,ការវិភាគអនាមិកអាយភី, +Incorrect email or password. Please check your login credentials.,អ៊ីមែលឬលេខសម្ងាត់មិនត្រឹមត្រូវ។ សូមពិនិត្យព័ត៌មានសម្ងាត់ចូលរបស់អ្នក។, +Incorrect Configuration,ការកំណត់រចនាសម្ព័ន្ធមិនត្រឹមត្រូវ, +You are not allowed to delete Standard Report,អ្នកមិនត្រូវបានអនុញ្ញាតឱ្យលុបរបាយការណ៍ស្តង់ដារទេ, +You have unseen {0},អ្នកមិនបានមើលឃើញ {0}, +Log cleanup and notification configuration,កំណត់រចនាសម្ព័ន្ធការសម្អាតនិងកំណត់រចនាសម្ព័ន្ធការជូនដំណឹង, diff --git a/frappe/translations/kn.csv b/frappe/translations/kn.csv index 0fe8944ebd..7cd8b5fc0c 100644 --- a/frappe/translations/kn.csv +++ b/frappe/translations/kn.csv @@ -336,7 +336,6 @@ Add Column,ಅಂಕಣ ಸೇರಿಸಿ, Add Contact,ಸಂಪರ್ಕ ಸೇರಿಸು, Add Contacts,ಸಂಪರ್ಕಗಳನ್ನು ಸೇರಿಸಿ, Add Filter,ಫಿಲ್ಟರ್ ಸೇರಿಸಿ, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,ಗೂಗಲ್ ಅನಾಲಿಟಿಕ್ಸ್ ID ಸೇರಿಸಿ : ಯುಎ ಉದಾ 89XXX57 - 1 . . ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಗೂಗಲ್ ಅನಾಲಿಟಿಕ್ಸ್ ಸಹಾಯ ಹುಡುಕಲು ದಯವಿಟ್ಟು ., Add Group,ಗುಂಪು ಸೇರಿಸಿ, Add New Permission Rule,ಒಂದು ಹೊಸ ಅನುಮತಿ ರೂಲ್ ಸೇರಿಸಿ, Add Review,ವಿಮರ್ಶೆಯನ್ನು ಸೇರಿಸಿ, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,ವೈಶಿಷ್ಟ್ಯಗೊಳಿ Load More,ಇನ್ನಷ್ಟು ಲೋಡ್ ಮಾಡಿ, Published on,ಪ್ರಕಟಿಸಲಾಗಿದೆ, Enable developer mode to create a standard Web Template,ಪ್ರಮಾಣಿತ ವೆಬ್ ಟೆಂಪ್ಲೇಟ್ ರಚಿಸಲು ಡೆವಲಪರ್ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ, -Please select which module this Web Template belongs to.,ಈ ವೆಬ್ ಟೆಂಪ್ಲೇಟು ಯಾವ ಮಾಡ್ಯೂಲ್‌ಗೆ ಸೇರಿದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಆಯ್ಕೆ ಮಾಡಿ., Was this article helpful?,ಈ ಲೇಖನ ಸಹಾಯಕವಾಗಿದೆಯೇ?, Thank you for your feedback!,ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಧನ್ಯವಾದಗಳು!, New Mention on {0},Mentioned 0 on ನಲ್ಲಿ ಹೊಸ ಉಲ್ಲೇಖ, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,ದಯ Shared with the following Users with Read access:{0},ಓದುವ ಪ್ರವೇಶದೊಂದಿಗೆ ಈ ಕೆಳಗಿನ ಬಳಕೆದಾರರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆ: {0}, Already in the following Users ToDo list:{0},ಈಗಾಗಲೇ ಈ ಕೆಳಗಿನ ಬಳಕೆದಾರರ ಟೊಡೊ ಪಟ್ಟಿಯಲ್ಲಿದೆ: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1 on ನಲ್ಲಿ ನಿಮ್ಮ ನಿಯೋಜನೆಯನ್ನು {2 by ತೆಗೆದುಹಾಕಲಾಗಿದೆ, +Invalid Credentials,ಅಮಾನ್ಯ ರುಜುವಾತುಗಳು, Print UOM after Quantity,ಪ್ರಮಾಣದ ನಂತರ UOM ಅನ್ನು ಮುದ್ರಿಸಿ, Uncaught Server Exception,ಅಜ್ಞಾತ ಸರ್ವರ್ ಎಕ್ಸೆಪ್ಶನ್, There was an error building this page,ಈ ಪುಟವನ್ನು ನಿರ್ಮಿಸುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} ಚಾರ್ಟ್ ಸೇರಿಸಿ, Currently you have {0} review points,ಪ್ರಸ್ತುತ ನೀವು {0} ವಿಮರ್ಶೆ ಅಂಕಗಳನ್ನು ಹೊಂದಿದ್ದೀರಿ, {0} is not a valid DocType for Dynamic Link,{0 Dyn ಡೈನಾಮಿಕ್ ಲಿಂಕ್‌ಗಾಗಿ ಮಾನ್ಯ ಡಾಕ್ಟೈಪ್ ಅಲ್ಲ, via Assignment Rule,ನಿಯೋಜನೆ ನಿಯಮದ ಮೂಲಕ, +Based on Field,ಕ್ಷೇತ್ರವನ್ನು ಆಧರಿಸಿದೆ, +Assign to the user set in this field,ಈ ಕ್ಷೇತ್ರದಲ್ಲಿ ಹೊಂದಿಸಲಾದ ಬಳಕೆದಾರರಿಗೆ ನಿಯೋಜಿಸಿ, +Log Setting User,ಲಾಗ್ ಸೆಟ್ಟಿಂಗ್ ಬಳಕೆದಾರ, +Log Settings,ಲಾಗ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು, +Error Log Notification,ದೋಷ ಲಾಗ್ ಅಧಿಸೂಚನೆ, +Users To Notify,ತಿಳಿಸಲು ಬಳಕೆದಾರರು, +Log Cleanup,ಲಾಗ್ ಸ್ವಚ್ Clean ಗೊಳಿಸುವಿಕೆ, +Clear Error log After,ದೋಷ ಲಾಗ್ ನಂತರ ತೆರವುಗೊಳಿಸಿ, +Clear Activity Log After,ಚಟುವಟಿಕೆ ಲಾಗ್ ನಂತರ ತೆರವುಗೊಳಿಸಿ, +Clear Email Queue After,ಇಮೇಲ್ ಕ್ಯೂ ನಂತರ ತೆರವುಗೊಳಿಸಿ, +Please save to edit the template.,ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಸಂಪಾದಿಸಲು ದಯವಿಟ್ಟು ಉಳಿಸಿ., +Google Analytics Anonymize IP,Google Analytics IP ಅನ್ನು ಅನಾಮಧೇಯಗೊಳಿಸಿ, +Incorrect email or password. Please check your login credentials.,ತಪ್ಪಾದ ಇಮೇಲ್ ಅಥವಾ ಪಾಸ್‌ವರ್ಡ್. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಲಾಗಿನ್ ರುಜುವಾತುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ., +Incorrect Configuration,ತಪ್ಪಾದ ಸಂರಚನೆ, +You are not allowed to delete Standard Report,ಸ್ಟ್ಯಾಂಡರ್ಡ್ ವರದಿಯನ್ನು ಅಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ, +You have unseen {0},ನೀವು ಕಾಣದ {0 have, +Log cleanup and notification configuration,ಲಾಗ್ ಸ್ವಚ್ up ಗೊಳಿಸುವಿಕೆ ಮತ್ತು ಅಧಿಸೂಚನೆ ಸಂರಚನೆ, diff --git a/frappe/translations/ko.csv b/frappe/translations/ko.csv index 9242d19c3e..54f295ce08 100644 --- a/frappe/translations/ko.csv +++ b/frappe/translations/ko.csv @@ -336,7 +336,6 @@ Add Column,열 추가, Add Contact,주소록에 추가, Add Contacts,연락처 추가, Add Filter,필터 추가, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google 웹 로그 분석 ID를 추가 : 예.UA-89XXX57-1.자세한 내용은 Google 웹 로그 분석에 대한 도움말을 검색하십시오., Add Group,그룹 추가, Add New Permission Rule,새 권한 규칙 추가, Add Review,검토 추가, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,추천 게시물에는 표지 이미지 Load More,더로드, Published on,게시일, Enable developer mode to create a standard Web Template,개발자 모드를 활성화하여 표준 웹 템플릿 생성, -Please select which module this Web Template belongs to.,이 웹 템플릿이 속한 모듈을 선택하십시오., Was this article helpful?,이 글이 도움 되었나요?, Thank you for your feedback!,의견을 보내 주셔서 감사합니다!, New Mention on {0},{0}에 대한 새로운 언급, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,먼저 Shared with the following Users with Read access:{0},읽기 액세스 권한이있는 다음 사용자와 공유 : {0}, Already in the following Users ToDo list:{0},이미 다음 사용자 할 일 목록에 있습니다. {0}, Your assignment on {0} {1} has been removed by {2},{0} {1}에 대한 할당이 {2}에 의해 제거되었습니다., +Invalid Credentials,잘못된 자격 증명, Print UOM after Quantity,수량 후 UOM 인쇄, Uncaught Server Exception,포착되지 않은 서버 예외, There was an error building this page,이 페이지를 만드는 중에 오류가 발생했습니다., @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} 차트 추가, Currently you have {0} review points,현재 리뷰 포인트가 {0} 개 있습니다., {0} is not a valid DocType for Dynamic Link,{0}은 (는) 동적 링크에 유효한 DocType이 아닙니다., via Assignment Rule,할당 규칙을 통해, +Based on Field,필드 기반, +Assign to the user set in this field,이 필드에서 사용자 세트에 지정, +Log Setting User,로그 설정 사용자, +Log Settings,로그 설정, +Error Log Notification,오류 로그 알림, +Users To Notify,통지 할 사용자, +Log Cleanup,로그 정리, +Clear Error log After,이후 오류 로그 지우기, +Clear Activity Log After,이후 활동 로그 지우기, +Clear Email Queue After,이후 이메일 대기열 지우기, +Please save to edit the template.,템플릿을 편집하려면 저장하십시오., +Google Analytics Anonymize IP,Google Analytics 익명화 IP, +Incorrect email or password. Please check your login credentials.,이메일이나 비밀번호가 틀 렸습니다. 로그인 자격 증명을 확인하십시오., +Incorrect Configuration,잘못된 구성, +You are not allowed to delete Standard Report,표준 보고서를 삭제할 수 없습니다., +You have unseen {0},{0}을 (를) 보지 못했습니다., +Log cleanup and notification configuration,로그 정리 및 알림 구성, diff --git a/frappe/translations/ku.csv b/frappe/translations/ku.csv index c47707c25e..7bd2261644 100644 --- a/frappe/translations/ku.csv +++ b/frappe/translations/ku.csv @@ -336,7 +336,6 @@ Add Column,lê zêde bike Stûna, Add Contact,lê zêde bike | Peywendî, Add Contacts,Têkilî zêde bike, Add Filter,lê zêde bike Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Lê zêde bike Google Analytics ID: eg. UA-89XXX57-1. Tkaye yarmetîyi lêgerîn li ser Google Analytics bike bo zaniyarîy zortir., Add Group,Koma zêde bikin, Add New Permission Rule,Lê zêde bike New Rule Destûr, Add Review,Review zêde bikin, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Pêdivî ye ku posteyek nîşankirî wê Load More,Zêde Barkirin, Published on,Li ser hate weşandin, Enable developer mode to create a standard Web Template,Modeya pêşvebirinê çalak bikin da ku .ablonek Tevne ya standard çêbikin, -Please select which module this Web Template belongs to.,Ji kerema xwe ve hilbijêrin ku ev plateablonên Tevneyê ya kîjan modulê ye., Was this article helpful?,Ev gotar kêrhatî bû?, Thank you for your feedback!,Spas ji bo bersiva we!, New Mention on {0},Navnîşa Nû li ser {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Ji kerem Shared with the following Users with Read access:{0},Bi Bikarhênerên jêrîn ên bi Destûra Xwendinê re parvekirî: {0}, Already in the following Users ToDo list:{0},Jixwe di navnîşa ToDo-ya Bikarhênerên jêrîn de ye: {0}, Your assignment on {0} {1} has been removed by {2},Peywira we ya li ser {0} {1} ji hêla {2} ve hate rakirin, +Invalid Credentials,Bawernameyên nederbasdar, Print UOM after Quantity,Li dû Hêmanê UOM çap bikin, Uncaught Server Exception,Pêşkêşkera Serverê ya nehatî girtin, There was an error building this page,Di çêkirina vê rûpelê de çewtiyek çêbû, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} Charterefnameyek zêde bikin, Currently you have {0} review points,Naha {0} xalên venêrînê hene, {0} is not a valid DocType for Dynamic Link,{0} ji bo Girêdana Dînamîk DocType ne derbasdar e, via Assignment Rule,bi rêka Rêziknameyê, +Based on Field,Li gorî Zeviyê, +Assign to the user set in this field,Di vê qadê de ji bikarhênerê re destnîşan bikin, +Log Setting User,Bikarhênerê Sazkirina Têketinê, +Log Settings,Mîhengên Têketinê, +Error Log Notification,Ragihandina Têketina Çewtiyê, +Users To Notify,Bikarhênerên Ku Hişyar bikin, +Log Cleanup,Paqijkirina Têketinê, +Clear Error log After,Têketina Çewtiyê Paş Paqij Bike, +Clear Activity Log After,Paş Têketina Çalakiyê Paqij Bike, +Clear Email Queue After,Dûv re E-nameya Paqij Bikin, +Please save to edit the template.,Ji kerema xwe ji bo sererastkirina şablonê xilas bikin., +Google Analytics Anonymize IP,Google Analytics IP-yê Anonîm Bike, +Incorrect email or password. Please check your login credentials.,E-name an şîfreyek çewt e. Ji kerema xwe nasnameya xweya têketinê kontrol bikin., +Incorrect Configuration,Veavakirina çewt, +You are not allowed to delete Standard Report,Destûr nayê dayîn ku hûn Rapora Standard jêbirin, +You have unseen {0},We nedît {0}, +Log cleanup and notification configuration,Paqijkirin û vesazkirina agahdariyê têkevin, diff --git a/frappe/translations/lo.csv b/frappe/translations/lo.csv index ad808af322..876ecb628a 100644 --- a/frappe/translations/lo.csv +++ b/frappe/translations/lo.csv @@ -336,7 +336,6 @@ Add Column,ເພີ່ມຄໍລໍາ, Add Contact,ຕື່ມການຕິດຕໍ່, Add Contacts,Add Contacts, Add Filter,ເພີ່ມການກັ່ນຕອງ, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"ຕື່ມການກູໂກ ID ວິເຄາະ: ຕົວຢ່າງ:. UA, 89XXX57-1. ກະລຸນາຄົ້ນຫາຄວາມຊ່ວຍເຫລືອໃນກູໂກວິເຄາະສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.", Add Group,ເພີ່ມກຸ່ມ, Add New Permission Rule,ເພີ່ມກົດລະບຽບການອະນຸຍາດໃຫມ່, Add Review,ຕື່ມການທົບທວນຄືນ, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,ກະທູ້ທີ່ໂດດເດ Load More,ໂຫລດຫຼາຍ, Published on,ເຜີຍແຜ່ເມື່ອ, Enable developer mode to create a standard Web Template,ເປີດໃຊ້ຮູບແບບຂອງນັກພັດທະນາເພື່ອສ້າງແບບເວບໄຊທ໌ມາດຕະຖານ, -Please select which module this Web Template belongs to.,ກະລຸນາເລືອກໂມດູນເວບໄຊທ໌ນີ້., Was this article helpful?,ບົດຂຽນນີ້ມີປະໂຫຍດບໍ?, Thank you for your feedback!,ຂໍຂອບໃຈທ່ານສໍາລັບການຕໍານິຕິຊົມຂອງທ່ານ!, New Mention on {0},Mention ໃຫມ່ກ່ຽວກັບ {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,ກະ Shared with the following Users with Read access:{0},ແບ່ງປັນກັບຜູ້ໃຊ້ຕໍ່ໄປນີ້ທີ່ມີການເຂົ້າເຖິງອ່ານ: {0}, Already in the following Users ToDo list:{0},ຢູ່ໃນລາຍຊື່ ToDo ຜູ້ໃຊ້ຕໍ່ໄປນີ້ແລ້ວ: {0}, Your assignment on {0} {1} has been removed by {2},ການແຕ່ງຕັ້ງຂອງທ່ານໃນ {0} {1} ໄດ້ຖືກລຶບອອກແລ້ວໂດຍ {2}, +Invalid Credentials,ໃບຢັ້ງຢືນທີ່ບໍ່ຖືກຕ້ອງ, Print UOM after Quantity,ພິມ UOM ຫຼັງຈາກປະລິມານ, Uncaught Server Exception,ຂໍ້ຍົກເວັ້ນຂອງ Server ທີ່ບໍ່ໄດ້ຮຽນຮູ້, There was an error building this page,ມີຂໍ້ຜິດພາດໃນການສ້າງ ໜ້າ ນີ້, @@ -4680,3 +4679,20 @@ Add a {0} Chart,ເພີ່ມຕາຕະລາງ {0}, Currently you have {0} review points,ປະຈຸບັນທ່ານມີ {0} ຈຸດທົບທວນ, {0} is not a valid DocType for Dynamic Link,{0} ບໍ່ແມ່ນ DocType ທີ່ຖືກຕ້ອງ ສຳ ລັບ Dynamic Link, via Assignment Rule,ຜ່ານກົດລະບຽບການມອບ ໝາຍ, +Based on Field,ອີງໃສ່ Field, +Assign to the user set in this field,ມອບຫມາຍໃຫ້ຜູ້ໃຊ້ທີ່ກໍານົດໄວ້ໃນພາກສະຫນາມນີ້, +Log Setting User,ຜູ້ໃຊ້ຕັ້ງຄ່າ Log, +Log Settings,ຕັ້ງຄ່າບັນທຶກ, +Error Log Notification,ແຈ້ງການບັນທຶກຂໍ້ຜິດພາດ, +Users To Notify,ຜູ້ໃຊ້ເພື່ອແຈ້ງ, +Log Cleanup,ທຳ ຄວາມສະອາດ Log, +Clear Error log After,ລ້າງຂໍ້ມູນຜິດພາດຫຼັງຈາກ, +Clear Activity Log After,ເກັບ ກຳ ຂໍ້ມູນກິດຈະ ກຳ ຫຼັງຈາກ, +Clear Email Queue After,ລ້າງຄິວອີເມວຫຼັງຈາກ, +Please save to edit the template.,ກະລຸນາບັນທຶກເພື່ອດັດແກ້ແມ່ແບບ., +Google Analytics Anonymize IP,Google Analytics Anonymize IP, +Incorrect email or password. Please check your login credentials.,ອີເມວຫລືລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ. ກະລຸນາກວດເບິ່ງຂໍ້ມູນປະ ຈຳ ຕົວຂອງທ່ານ., +Incorrect Configuration,ການຕັ້ງຄ່າທີ່ບໍ່ຖືກຕ້ອງ, +You are not allowed to delete Standard Report,ທ່ານບໍ່ໄດ້ຮັບອານຸຍາດໃຫ້ລຶບລາຍງານມາດຕະຖານ, +You have unseen {0},ທ່ານບໍ່ໄດ້ເບິ່ງເຫັນ {0}, +Log cleanup and notification configuration,ຕັ້ງຄ່າການອະນາໄມແລະການຕັ້ງຄ່າການແຈ້ງເຕືອນ, diff --git a/frappe/translations/lt.csv b/frappe/translations/lt.csv index 2083a1aada..7397d2f8ef 100644 --- a/frappe/translations/lt.csv +++ b/frappe/translations/lt.csv @@ -336,7 +336,6 @@ Add Column,pridėti stulpelį, Add Contact,Pridėti kontaktą, Add Contacts,Pridėti kontaktus, Add Filter,Pridėti filtrą, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Įdėti Google Analytics ID: pvz. UA-89XXX57-1. Prašome Paieška Pagalba Google Analytics daugiau informacijos., Add Group,Pridėti grupę, Add New Permission Rule,Pridėti naują leidimą taisyklė, Add Review,Pridėti apžvalgą, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Panašiame įraše turi būti viršelio Load More,Įkelti daugiau, Published on,Paskelbta, Enable developer mode to create a standard Web Template,"Įjunkite kūrėjo režimą, kad sukurtumėte standartinį žiniatinklio šabloną", -Please select which module this Web Template belongs to.,"Pasirinkite, kuriam moduliui priklauso šis žiniatinklio šablonas.", Was this article helpful?,Ar šis straipsnis buvo naudingas?, Thank you for your feedback!,Dėkojame už jūsų atsiliepimus!, New Mention on {0},Naujas paminėjimas {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Pirmiaus Shared with the following Users with Read access:{0},"Bendrinama su šiais naudotojais, turinčiais skaitymo prieigą: {0}", Already in the following Users ToDo list:{0},Jau esate šiame „User ToDo“ sąraše: {0}, Your assignment on {0} {1} has been removed by {2},Jūsų užduotį {0} {1} pašalino {2}, +Invalid Credentials,Neteisingi įgaliojimai, Print UOM after Quantity,Spausdinkite UOM po kiekio, Uncaught Server Exception,Nepagauta serverio išimtis, There was an error building this page,Kuriant šį puslapį įvyko klaida, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Pridėkite {0} diagramą, Currently you have {0} review points,Šiuo metu turite {0} peržiūros taškų, {0} is not a valid DocType for Dynamic Link,„{0}“ nėra tinkamas „Dynamic Link“ „DocType“, via Assignment Rule,per priskyrimo taisyklę, +Based on Field,Remiantis lauku, +Assign to the user set in this field,Priskirkite vartotojo rinkinį šiame lauke, +Log Setting User,Žurnalo nustatymo vartotojas, +Log Settings,Žurnalo nustatymai, +Error Log Notification,Pranešimas apie klaidų žurnalą, +Users To Notify,"Vartotojai, apie kuriuos turi pranešti", +Log Cleanup,Žurnalo valymas, +Clear Error log After,Išvalyti klaidų žurnalą po, +Clear Activity Log After,Išvalyti veiklos žurnalą po, +Clear Email Queue After,Išvalyti el. Pašto eilę po, +Please save to edit the template.,"Jei norite redaguoti šabloną, išsaugokite.", +Google Analytics Anonymize IP,„Google Analytics“ anonimizuokite IP, +Incorrect email or password. Please check your login credentials.,Neteisingas elektroninis paštas arba slaptažodis. Patikrinkite savo prisijungimo duomenis., +Incorrect Configuration,Neteisinga konfigūracija, +You are not allowed to delete Standard Report,Jums neleidžiama ištrinti standartinės ataskaitos, +You have unseen {0},Jūs nematėte {0}, +Log cleanup and notification configuration,Žurnalo valymas ir pranešimų konfigūracija, diff --git a/frappe/translations/lv.csv b/frappe/translations/lv.csv index d579ef63ca..ed4dcb9e81 100644 --- a/frappe/translations/lv.csv +++ b/frappe/translations/lv.csv @@ -336,7 +336,6 @@ Add Column,Pievienot kolonu, Add Contact,Pievienot Kontaktpersona, Add Contacts,Pievienot kontaktus, Add Filter,Noņemt filtru, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Pievienot Google Analytics ID: piem. UA-89XXX57-1. Lūdzu meklējiet palīdzību par Google Analytics, lai iegūtu vairāk informācijas.", Add Group,Pievienot grupu, Add New Permission Rule,Pievienot jaunu Atļauja Rule, Add Review,Pievienot pārskatu, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Piedāvātajam ziņojumam jābūt vāka Load More,Ielādēt vairāk, Published on,Publicēts vietnē, Enable developer mode to create a standard Web Template,"Iespējojiet izstrādātāja režīmu, lai izveidotu standarta tīmekļa veidni", -Please select which module this Web Template belongs to.,"Lūdzu, atlasiet, kuram modulim šī tīmekļa veidne pieder.", Was this article helpful?,Vai šis raksts bija noderīgs?, Thank you for your feedback!,Paldies par jūsu atsauksmēm!, New Mention on {0},Jauna pieminēšana vietnē {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Lūdzu, Shared with the following Users with Read access:{0},Kopīgots ar šiem lietotājiem ar lasīšanas piekļuvi: {0}, Already in the following Users ToDo list:{0},Jau šajā lietotāju uzdevumu sarakstā: {0}, Your assignment on {0} {1} has been removed by {2},Jūsu uzdevumu vietnē {0} {1} ir noņēmis {2}, +Invalid Credentials,Nederīgi akreditācijas dati, Print UOM after Quantity,Drukāt UOM pēc daudzuma, Uncaught Server Exception,Neveiksmīgs servera izņēmums, There was an error building this page,"Veidojot šo lapu, radās kļūda", @@ -4680,3 +4679,20 @@ Add a {0} Chart,Pievienojiet {0} diagrammu, Currently you have {0} review points,Pašlaik jums ir {0} atsauksmju punkti, {0} is not a valid DocType for Dynamic Link,{0} nav derīgs dinamiskās saites DocType, via Assignment Rule,izmantojot uzdevuma kārtulu, +Based on Field,Pamatojoties uz lauku, +Assign to the user set in this field,Piešķirt lietotāja kopai šajā laukā, +Log Setting User,Žurnāla iestatīšanas lietotājs, +Log Settings,Žurnāla iestatījumi, +Error Log Notification,Kļūdu žurnāla paziņojums, +Users To Notify,"Lietotāji, par kuriem jāpaziņo", +Log Cleanup,Žurnāla tīrīšana, +Clear Error log After,Notīrīt kļūdu žurnālu pēc, +Clear Activity Log After,Notīrīt darbību žurnālu pēc, +Clear Email Queue After,Notīrīt e-pasta rindu pēc, +Please save to edit the template.,"Lūdzu, saglabājiet, lai rediģētu veidni.", +Google Analytics Anonymize IP,Google Analytics anonimizē IP, +Incorrect email or password. Please check your login credentials.,"Nepareiza e-pasta adrese vai parole. Lūdzu, pārbaudiet savus pieteikšanās datus.", +Incorrect Configuration,Nepareiza konfigurācija, +You are not allowed to delete Standard Report,Jums nav atļauts dzēst standarta pārskatu, +You have unseen {0},Jūs neesat redzējis {0}, +Log cleanup and notification configuration,Žurnāla tīrīšana un paziņojumu konfigurēšana, diff --git a/frappe/translations/mk.csv b/frappe/translations/mk.csv index 188ad09496..2346cb5cf4 100644 --- a/frappe/translations/mk.csv +++ b/frappe/translations/mk.csv @@ -336,7 +336,6 @@ Add Column,Додади Колона, Add Contact,Додади Контакт, Add Contacts,Додади контакти, Add Filter,Додади филтер, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Додади Google Analytics проект: на пр. UA-89XXX57-1. Ве молиме пребарување помош на Google Analytics за повеќе информации., Add Group,Додај група, Add New Permission Rule,Додај нов Дозвола Правило, Add Review,Додадете преглед, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Избрана објава мора д Load More,Товари повеќе, Published on,Објавено на, Enable developer mode to create a standard Web Template,Овозможете режим на развивач за да создадете стандарден веб-образец, -Please select which module this Web Template belongs to.,Изберете на кој модул припаѓа овој веб-образец., Was this article helpful?,Дали овој напис беше корисен?, Thank you for your feedback!,Ви благодариме за вашиот коментар!, New Mention on {0},Ново споменување на {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Прв Shared with the following Users with Read access:{0},Споделено со следниве корисници со пристап за читање: {0}, Already in the following Users ToDo list:{0},Веќе во следната листа на корисници на TODO: {0}, Your assignment on {0} {1} has been removed by {2},Вашата задача на {0} {1} е отстранета од {2}, +Invalid Credentials,Неважечки акредитиви, Print UOM after Quantity,Печатете UOM по количина, Uncaught Server Exception,Исклучок на ненафатениот сервер, There was an error building this page,Настана грешка при изградбата на оваа страница, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Додајте графикон {0}, Currently you have {0} review points,Во моментов имате {0} точки за преглед, {0} is not a valid DocType for Dynamic Link,{0} не е валиден DocType за Динамичка врска, via Assignment Rule,преку правило за доделување, +Based on Field,Врз основа на поле, +Assign to the user set in this field,Доделете го корисничкиот сет во ова поле, +Log Setting User,Корисник за поставување дневник, +Log Settings,Поставки за најавување, +Error Log Notification,Известување за дневник за грешки, +Users To Notify,Корисници за известување, +Log Cleanup,Чистење на дневникот, +Clear Error log After,Исчистете го дневникот за грешки После, +Clear Activity Log After,Исчистете го дневникот за активности после, +Clear Email Queue After,Исчистете го редот за е-пошта по, +Please save to edit the template.,Ве молиме зачувајте за да го уредите шаблонот., +Google Analytics Anonymize IP,Google Analytics Анонимирај ја IP-адресата, +Incorrect email or password. Please check your login credentials.,Неточна е-пошта или лозинка. Проверете ги ингеренциите за најава., +Incorrect Configuration,Погрешна конфигурација, +You are not allowed to delete Standard Report,Не смеете да го бришете Стандардниот извештај, +You have unseen {0},Имате невидено {0}, +Log cleanup and notification configuration,Конфигурација за чистење и известување за најавување, diff --git a/frappe/translations/ml.csv b/frappe/translations/ml.csv index d4f21dc85b..b5bee53f06 100644 --- a/frappe/translations/ml.csv +++ b/frappe/translations/ml.csv @@ -336,7 +336,6 @@ Add Column,നിര ചേർക്കുക, Add Contact,കോൺടാക്റ്റ് ചേർക്കുക, Add Contacts,കോൺടാക്റ്റുകൾ ചേർക്കുക, Add Filter,ഫിൽറ്റർ ചേർക്കുക, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,ഗൂഗിൾ അനലിറ്റിക്സ് ഐഡി ചേർക്കുക: ഉദാ. UA-89XXX57-1. കൂടുതൽ വിവരങ്ങൾക്ക് Google അനലിറ്റിക്സ് സഹായം ദയവായി., Add Group,ഗ്രൂപ്പ് ചേർക്കുക, Add New Permission Rule,പുതിയ അനുമതി നിയമം ചേർക്കുക, Add Review,അവലോകനം ചേർക്കുക, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,തിരഞ്ഞെടുത്ത പ Load More,കൂടുതൽ ലോഡുചെയ്യുക, Published on,പ്രസിദ്ധീകരിച്ചു, Enable developer mode to create a standard Web Template,ഒരു സാധാരണ വെബ് ടെംപ്ലേറ്റ് സൃഷ്ടിക്കാൻ ഡവലപ്പർ മോഡ് പ്രാപ്തമാക്കുക, -Please select which module this Web Template belongs to.,ഈ വെബ് ടെംപ്ലേറ്റ് ഏത് മൊഡ്യൂളാണ് എന്ന് ദയവായി തിരഞ്ഞെടുക്കുക., Was this article helpful?,ഈ ലേഖനം സഹായകരമായിരുന്നോ?, Thank you for your feedback!,നിങ്ങളുടെ അഭിപ്രായത്തിന് നന്ദി!, New Mention on {0},Mentioned 0 on എന്നതിലെ പുതിയ പരാമർശം, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,ആദ Shared with the following Users with Read access:{0},റീഡ് ആക്സസ് ഉള്ള ഇനിപ്പറയുന്ന ഉപയോക്താക്കളുമായി പങ്കിട്ടു: {0}, Already in the following Users ToDo list:{0},ഇതിനകം ഇനിപ്പറയുന്ന ഉപയോക്താക്കളുടെ ടോഡോ പട്ടികയിൽ: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1 on ലെ നിങ്ങളുടെ അസൈൻ‌മെന്റ് {2 by നീക്കംചെയ്‌തു, +Invalid Credentials,അസാധുവായ ക്രെഡൻഷ്യലുകൾ, Print UOM after Quantity,അളവിന് ശേഷം UOM പ്രിന്റുചെയ്യുക, Uncaught Server Exception,അറിയപ്പെടാത്ത സെർവർ ഒഴിവാക്കൽ, There was an error building this page,ഈ പേജ് നിർമ്മിക്കുന്നതിൽ ഒരു പിശക് ഉണ്ടായിരുന്നു, @@ -4680,3 +4679,20 @@ Add a {0} Chart,ഒരു {0} ചാർട്ട് ചേർക്കുക, Currently you have {0} review points,നിലവിൽ നിങ്ങൾക്ക് {0} അവലോകന പോയിന്റുകളുണ്ട്, {0} is not a valid DocType for Dynamic Link,{0 Dyn ഡൈനാമിക് ലിങ്കിനായുള്ള സാധുവായ ഡോക്‌ടൈപ്പ് അല്ല, via Assignment Rule,അസൈൻ‌മെന്റ് റൂൾ‌ വഴി, +Based on Field,ഫീൽഡിനെ അടിസ്ഥാനമാക്കി, +Assign to the user set in this field,ഈ ഫീൽഡിൽ സജ്ജമാക്കിയ ഉപയോക്താവിന് നൽകുക, +Log Setting User,ലോഗ് ക്രമീകരണ ഉപയോക്താവ്, +Log Settings,ലോഗ് ക്രമീകരണങ്ങൾ, +Error Log Notification,പിശക് ലോഗ് അറിയിപ്പ്, +Users To Notify,അറിയിക്കേണ്ട ഉപയോക്താക്കൾ, +Log Cleanup,ലോഗ് വൃത്തിയാക്കൽ, +Clear Error log After,പിശക് ലോഗ് ശേഷം മായ്‌ക്കുക, +Clear Activity Log After,പ്രവർത്തന ലോഗ് ശേഷം മായ്‌ക്കുക, +Clear Email Queue After,ശേഷം ഇമെയിൽ ക്യൂ മായ്‌ക്കുക, +Please save to edit the template.,ടെംപ്ലേറ്റ് എഡിറ്റുചെയ്യുന്നതിന് ദയവായി സംരക്ഷിക്കുക., +Google Analytics Anonymize IP,Google Analytics IP അജ്ഞാതമാക്കുക, +Incorrect email or password. Please check your login credentials.,തെറ്റായ ഇമെയിൽ അല്ലെങ്കിൽ പാസ്‌വേഡ്. നിങ്ങളുടെ ലോഗിൻ ക്രെഡൻഷ്യലുകൾ പരിശോധിക്കുക., +Incorrect Configuration,തെറ്റായ കോൺഫിഗറേഷൻ, +You are not allowed to delete Standard Report,സ്റ്റാൻഡേർഡ് റിപ്പോർട്ട് ഇല്ലാതാക്കാൻ നിങ്ങളെ അനുവദിച്ചിട്ടില്ല, +You have unseen {0},നിങ്ങൾക്ക് കാണാത്ത {0 have ഉണ്ട്, +Log cleanup and notification configuration,ലോഗ് വൃത്തിയാക്കലും അറിയിപ്പ് കോൺഫിഗറേഷനും, diff --git a/frappe/translations/mr.csv b/frappe/translations/mr.csv index 2ffef1147d..80e1786411 100644 --- a/frappe/translations/mr.csv +++ b/frappe/translations/mr.csv @@ -336,7 +336,6 @@ Add Column,स्तंभ जोडा, Add Contact,संपर्क जोडा, Add Contacts,संपर्क जोडा, Add Filter,फिल्टर जोडा, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Google Analytics ID येथे जोडा: उदा. UA-89XXX57-1. अधिक माहितीसाठी, Google Analytics मदत शोध करा.", Add Group,गट जोडा, Add New Permission Rule,नवी परवानगी नियम जोडा, Add Review,पुनरावलोकन जोडा, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,वैशिष्ट्यीकृत Load More,लादणे, Published on,रोजी प्रकाशित, Enable developer mode to create a standard Web Template,मानक वेब टेम्पलेट तयार करण्यासाठी विकसक मोड सक्षम करा, -Please select which module this Web Template belongs to.,कृपया हे वेब टेम्पलेट कोणत्या मॉड्यूलचे आहे ते निवडा., Was this article helpful?,हा लेख उपयोगी होता का?, Thank you for your feedback!,आपल्या अभिप्रायाबद्दल धन्यवाद!, New Mention on {0},{0 on वर नवीन उल्लेख, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,कृ Shared with the following Users with Read access:{0},वाचन प्रवेशासह खालील वापरकर्त्यांसह सामायिक केलेले: {0}, Already in the following Users ToDo list:{0},आधीपासूनच खालील वापरकर्त्यांद्वारे करण्याच्या यादीमध्ये: {0}, Your assignment on {0} {1} has been removed by {2},आपली ment 0} {1} वरील असाईनमेंट {2 by द्वारे काढली गेली आहे, +Invalid Credentials,अवैध प्रमाणपत्रे, Print UOM after Quantity,प्रमाणानंतर यूओएम मुद्रित करा, Uncaught Server Exception,अनकॉट सर्व्हर अपवाद, There was an error building this page,हे पृष्ठ तयार करताना त्रुटी आली, @@ -4680,3 +4679,20 @@ Add a {0} Chart,एक {0} चार्ट जोडा, Currently you have {0} review points,सध्या आपल्याकडे {0} पुनरावलोकन गुण आहेत, {0} is not a valid DocType for Dynamic Link,Yn 0 D डायनॅमिक लिंकसाठी वैध डॉकटाइप नाही, via Assignment Rule,असाइनमेंट नियम मार्गे, +Based on Field,फील्ड आधारित, +Assign to the user set in this field,या फील्डमध्ये सेट केलेल्या वापरकर्त्यास असाइन करा, +Log Setting User,लॉग सेटिंग वापरकर्ता, +Log Settings,लॉग सेटिंग्ज, +Error Log Notification,त्रुटी लॉग सूचना, +Users To Notify,वापरकर्त्यास सूचित करावे, +Log Cleanup,लॉग क्लिनअप, +Clear Error log After,नंतर लॉग लॉग साफ करा, +Clear Activity Log After,क्रियाकलाप लॉग नंतर साफ करा, +Clear Email Queue After,नंतर ईमेल रांगेत साफ करा, +Please save to edit the template.,कृपया टेम्पलेट संपादित करण्यासाठी जतन करा., +Google Analytics Anonymize IP,गूगल अ‍ॅनालिटिक्स अनामिक आयपी, +Incorrect email or password. Please check your login credentials.,चुकीचा ईमेल किंवा संकेतशब्द. कृपया आपले लॉगिन क्रेडेन्शियल्स तपासा., +Incorrect Configuration,चुकीची कॉन्फिगरेशन, +You are not allowed to delete Standard Report,आपल्याला मानक अहवाल हटविण्याची परवानगी नाही, +You have unseen {0},आपल्याकडे se 0 un न पाहिलेले आहे, +Log cleanup and notification configuration,लॉग साफ करणे आणि सूचना कॉन्फिगरेशन, diff --git a/frappe/translations/ms.csv b/frappe/translations/ms.csv index c7e1fdfc03..c638c0fe7d 100644 --- a/frappe/translations/ms.csv +++ b/frappe/translations/ms.csv @@ -336,7 +336,6 @@ Add Column,Tambah Column, Add Contact,Tambah Kenalan, Add Contacts,Tambah Kenalan, Add Filter,Tambah Penapis, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Tambah Google Analytics ID: contohnya. UA-89XXX57-1. Sila mencari bantuan dalam Google Analytics untuk maklumat lanjut., Add Group,Tambah Kumpulan, Add New Permission Rule,Tambah Kebenaran Peraturan Baru, Add Review,Tambah Ulasan, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Catatan yang dipaparkan mesti mempunyai Load More,Tambah lagi, Published on,Diterbitkan pada, Enable developer mode to create a standard Web Template,Dayakan mod pembangun untuk membuat Templat Web standard, -Please select which module this Web Template belongs to.,Sila pilih modul mana Templat Web ini dimiliki., Was this article helpful?,Adakah artikel ini bermanfaat?, Thank you for your feedback!,Terima kasih atas maklum balas anda!, New Mention on {0},Sebutan Baru pada {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Sila tet Shared with the following Users with Read access:{0},Dikongsi dengan Pengguna berikut dengan akses Baca: {0}, Already in the following Users ToDo list:{0},Sudah ada dalam senarai ToDo Pengguna berikut: {0}, Your assignment on {0} {1} has been removed by {2},Tugasan anda pada {0} {1} telah dikeluarkan oleh {2}, +Invalid Credentials,Kelayakan Tidak Sah, Print UOM after Quantity,Cetak UOM selepas Kuantiti, Uncaught Server Exception,Pengecualian Pelayan yang Tidak Terperangkap, There was an error building this page,Terdapat ralat semasa membuat halaman ini, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Tambahkan Carta {0}, Currently you have {0} review points,Pada masa ini anda mempunyai {0} titik ulasan, {0} is not a valid DocType for Dynamic Link,{0} bukan Jenis Dokumen yang sah untuk Pautan Dinamik, via Assignment Rule,melalui Peraturan Tugasan, +Based on Field,Berdasarkan Padang, +Assign to the user set in this field,Tetapkan kepada set pengguna di medan ini, +Log Setting User,Pengguna Tetapan Log, +Log Settings,Tetapan Log, +Error Log Notification,Pemberitahuan Log Ralat, +Users To Notify,Pengguna Untuk Memberitahu, +Log Cleanup,Pembersihan Log, +Clear Error log After,Hapus log Ralat Selepas, +Clear Activity Log After,Hapus Log Aktiviti Selepas, +Clear Email Queue After,Kosongkan Antrian E-mel Selepas, +Please save to edit the template.,Simpan untuk mengedit templat., +Google Analytics Anonymize IP,IP Analitis Google Analisis, +Incorrect email or password. Please check your login credentials.,E-mel atau kata laluan yang salah. Sila periksa kelayakan log masuk anda., +Incorrect Configuration,Konfigurasi yang Tidak Betul, +You are not allowed to delete Standard Report,Anda tidak dibenarkan menghapus Laporan Piawai, +You have unseen {0},Anda belum nampak {0}, +Log cleanup and notification configuration,Pembersihan log dan konfigurasi pemberitahuan, diff --git a/frappe/translations/my.csv b/frappe/translations/my.csv index 4360138bef..cec37688f8 100644 --- a/frappe/translations/my.csv +++ b/frappe/translations/my.csv @@ -336,7 +336,6 @@ Add Column,စစ်ကြောင်း Add, Add Contact,ဆက်သွယ်ရန် Add, Add Contacts,ဆက်သွယ်ရန် Add, Add Filter,Filter ကို Add, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google Analytics ID ကို Add: ဥပမာ။ UA-89XXX57-1 ။ နောက်ထပ်သတင်းအချက်အလက်များသည် Google Analytics အပေါ်အကူအညီကိုရှာပေးပါ။, Add Group,Group မှ Add, Add New Permission Rule,နယူးခွင့်ပြုချက်နည်းဥပဒေ Add, Add Review,ဆန်းစစ်ခြင်း Add, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,အသားပေးဖော်ပြ Load More,နောက်ထပ်တင်ပါ, Published on,အပေါ်ထုတ်ဝေသည်, Enable developer mode to create a standard Web Template,ပုံမှန် Web Template တစ်ခုဖန်တီးရန် developer mode ကိုဖွင့်ပါ, -Please select which module this Web Template belongs to.,ကျေးဇူးပြု၍ ဤဝက်ဘ် template သည်မည်သည့် module ကိုပိုင်ဆိုင်သည်ကိုရွေးချယ်ပါ။, Was this article helpful?,ဒီဆောင်းပါးကအထောက်အကူပြုသလား။, Thank you for your feedback!,သင်၏အကြံပြုချက်အတွက်ကျေးဇူးတင်ပါသည်!, New Mention on {0},{0} တွင်ဖော်ပြချက်အသစ်, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,ကျ Shared with the following Users with Read access:{0},အောက်ပါအသုံးပြုသူများအားဖတ်ရှုသုံးစွဲနိုင်ခြင်းနှင့်မျှဝေသည်။ {0}, Already in the following Users ToDo list:{0},အောက်ပါ Users ToDo စာရင်းတွင်ရှိပြီးသား - {0}, Your assignment on {0} {1} has been removed by {2},{0} {1} မှသင်၏တာ ၀ န်ကို {2} မှဖယ်ရှားလိုက်ပြီ, +Invalid Credentials,မမှန်ကန်သောအထောက်အထားများ, Print UOM after Quantity,အရေအတွက်အပြီး UOM ကို print ထုတ်ပါ, Uncaught Server Exception,ဆာဗာချွင်းချက်မအောင်မြင်ပါ, There was an error building this page,ဒီစာမျက်နှာကိုတည်ဆောက်နေတဲ့အမှားတစ်ခုရှိတယ်, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} ဇယားတစ်ခုကိုထည့်ပါ, Currently you have {0} review points,လောလောဆယ်သင် {0} ပြန်လည်သုံးသပ်ရန်အချက်များရှိသည်, {0} is not a valid DocType for Dynamic Link,{0} သည် Dynamic Link အတွက်တရားဝင် DocType မဟုတ်ပါ, via Assignment Rule,တာဝန်နည်းဥပဒေမှတဆင့်, +Based on Field,Field အပေါ်အခြေခံသည်, +Assign to the user set in this field,ဒီလယ်ပြင်၌သတ်မှတ်အသုံးပြုသူမှ assign, +Log Setting User,အသုံးပြုသူချိန်ညှိခြင်းမှတ်တမ်း, +Log Settings,ချိန်ညှိချက်များကို Log, +Error Log Notification,မှတ်တမ်းသတိပေးချက်အမှား, +Users To Notify,အသုံးပြုသူများကိုအကြောင်းကြားရန်, +Log Cleanup,Log Cleanup, +Clear Error log After,Error log ပြီးနောက်ရှင်းလင်းပါ, +Clear Activity Log After,ပြီးနောက်လှုပ်ရှားမှုမှတ်တမ်းရှင်းလင်းပါ, +Clear Email Queue After,ပြီးနောက် Email Queue ပြီးနောက်ရှင်းလင်းပါ, +Please save to edit the template.,ကျေးဇူးပြု၍ template ကိုတည်းဖြတ်ရန်သိမ်းဆည်းပါ။, +Google Analytics Anonymize IP,Google Analytics အမည်ဝှက် IP, +Incorrect email or password. Please check your login credentials.,မမှန်ကန်သောအီးမေးလ်သို့မဟုတ်စကားဝှက်။ ကျေးဇူးပြု၍ သင်၏လော့အင်အချက်အလက်များကိုစစ်ဆေးပါ။, +Incorrect Configuration,ပြင်ဆင်မှုမမှန်ကန်ပါ, +You are not allowed to delete Standard Report,Standard Report ကိုဖျက်ခွင့်မပြုပါ, +You have unseen {0},သင်မမြင်ရသော {0}, +Log cleanup and notification configuration,cleanup နှင့်အကြောင်းကြားစာ configuration ကို log, diff --git a/frappe/translations/nl.csv b/frappe/translations/nl.csv index cd0154a149..e3977869c7 100644 --- a/frappe/translations/nl.csv +++ b/frappe/translations/nl.csv @@ -336,7 +336,6 @@ Add Column,Kolom toevoegen, Add Contact,Contact toevoegen, Add Contacts,Contacten toevoegen, Add Filter,Filter toevoegen, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Voeg Google Analytics ID toe: bv. UA-89XXX57-1. Zoek hulp bij Google Analytics voor meer informatie., Add Group,Groep toevoegen, Add New Permission Rule,Toevoegen nieuwe machtiging regel, Add Review,Voeg recensie toe, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Een uitgelicht bericht moet een omslagaf Load More,Meer laden, Published on,gepubliceerd op, Enable developer mode to create a standard Web Template,Schakel de ontwikkelaarsmodus in om een standaard websjabloon te maken, -Please select which module this Web Template belongs to.,Selecteer tot welke module deze websjabloon behoort., Was this article helpful?,Was dit artikel behulpzaam?, Thank you for your feedback!,Bedankt voor je feedback!, New Mention on {0},Nieuwe vermelding op {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Stel eer Shared with the following Users with Read access:{0},Gedeeld met de volgende gebruikers met leestoegang: {0}, Already in the following Users ToDo list:{0},Staat al in de volgende takenlijst van gebruikers: {0}, Your assignment on {0} {1} has been removed by {2},Je opdracht op {0} {1} is verwijderd door {2}, +Invalid Credentials,Ongeldige inloggegevens, Print UOM after Quantity,Druk maateenheid af na aantal, Uncaught Server Exception,Niet-afgevangen serveruitzondering, There was an error building this page,Er is een fout opgetreden bij het maken van deze pagina, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Voeg een {0} diagram toe, Currently you have {0} review points,Momenteel heb je {0} beoordelingspunten, {0} is not a valid DocType for Dynamic Link,{0} is geen geldig DocType voor Dynamic Link, via Assignment Rule,via toewijzingsregel, +Based on Field,Gebaseerd op veld, +Assign to the user set in this field,Wijs toe aan de gebruikersset in dit veld, +Log Setting User,Logboekinstelling gebruiker, +Log Settings,Log instellingen, +Error Log Notification,Foutlogboekmelding, +Users To Notify,Gebruikers om op de hoogte te stellen, +Log Cleanup,Logboekopruiming, +Clear Error log After,Wis foutenlogboek na, +Clear Activity Log After,Wis activiteitenlogboek na, +Clear Email Queue After,E-mailwachtrij na wissen, +Please save to edit the template.,Sla op om de sjabloon te bewerken., +Google Analytics Anonymize IP,Google Analytics Anonimiseert IP, +Incorrect email or password. Please check your login credentials.,Incorrecte email of wachtwoord. Controleer uw inloggegevens., +Incorrect Configuration,Onjuiste configuratie, +You are not allowed to delete Standard Report,U mag het standaardrapport niet verwijderen, +You have unseen {0},Je hebt {0} niet gezien, +Log cleanup and notification configuration,Logboekopruiming en meldingsconfiguratie, diff --git a/frappe/translations/no.csv b/frappe/translations/no.csv index 155d0c836d..a18ad6ec74 100644 --- a/frappe/translations/no.csv +++ b/frappe/translations/no.csv @@ -336,7 +336,6 @@ Add Column,Legg til kolonne, Add Contact,Legg til kontakt, Add Contacts,Legg til kontakter, Add Filter,Legg til filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Legg Google Analytics ID: f.eks. UA-89XXX57-1. Vennligst søk hjelp på Google Analytics for mer informasjon., Add Group,Legg til gruppe, Add New Permission Rule,Legg til ny Tillatelse Rule, Add Review,Legg til anmeldelse, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Et utvalgt innlegg må ha et forsidebild Load More,Last mer, Published on,Publisert den, Enable developer mode to create a standard Web Template,Aktiver utviklermodus for å opprette en standard webmal, -Please select which module this Web Template belongs to.,Velg hvilken modul denne webmalen tilhører., Was this article helpful?,Var denne artikkelen til hjelp?, Thank you for your feedback!,Takk for din tilbakemelding!, New Mention on {0},Ny omtale på {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Angi fø Shared with the following Users with Read access:{0},Delt med følgende brukere med lesetilgang: {0}, Already in the following Users ToDo list:{0},Allerede i følgende ToDo-liste over brukere: {0}, Your assignment on {0} {1} has been removed by {2},Oppgaven din på {0} {1} er fjernet av {2}, +Invalid Credentials,Ugyldige legitimasjon, Print UOM after Quantity,Skriv ut UOM etter antall, Uncaught Server Exception,Unfanget server unntak, There was an error building this page,Det oppsto en feil med å bygge denne siden, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Legg til et {0} diagram, Currently you have {0} review points,For øyeblikket har du {0} gjennomgangspoeng, {0} is not a valid DocType for Dynamic Link,{0} er ikke en gyldig DocType for Dynamic Link, via Assignment Rule,via oppdragsregel, +Based on Field,Basert på felt, +Assign to the user set in this field,Tildel til brukersettet i dette feltet, +Log Setting User,Logginnstillingsbruker, +Log Settings,Logg innstillinger, +Error Log Notification,Melding om feillogg, +Users To Notify,Brukere å varsle, +Log Cleanup,Loggopprydding, +Clear Error log After,Slett feillogg etter, +Clear Activity Log After,Tøm aktivitetslogg etter, +Clear Email Queue After,Fjern e-postkø etter, +Please save to edit the template.,Lagre for å redigere malen., +Google Analytics Anonymize IP,Google Analytics anonymiser IP, +Incorrect email or password. Please check your login credentials.,Feil email eller passord. Kontroller påloggingsinformasjonen din., +Incorrect Configuration,Feil konfigurasjon, +You are not allowed to delete Standard Report,Du har ikke lov til å slette standardrapporten, +You have unseen {0},Du har usett {0}, +Log cleanup and notification configuration,Loggopprydding og varslingskonfigurasjon, diff --git a/frappe/translations/pl.csv b/frappe/translations/pl.csv index 22ab9b9da3..78f03ff89b 100644 --- a/frappe/translations/pl.csv +++ b/frappe/translations/pl.csv @@ -336,7 +336,6 @@ Add Column,Dodaj kolumnę, Add Contact,Dodaj kontakt, Add Contacts,Dodaj kontakty, Add Filter,Dodaj filtr, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Dodaj Google Analytics ID: np. UA-89XXX57-1. Więcej informacji znajdziesz w pomocy Google Analytics., Add Group,Dodaj grupę, Add New Permission Rule,Dodaj nowe uprawnienia, Add Review,Dodaj recenzję, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Polecany post musi mieć zdjęcie w tle, Load More,Załaduj więcej, Published on,Opublikowano, Enable developer mode to create a standard Web Template,"Włącz tryb programisty, aby utworzyć standardowy szablon sieci Web", -Please select which module this Web Template belongs to.,"Wybierz moduł, do którego należy ten szablon sieci Web.", Was this article helpful?,Czy ten artykuł był pomocny?, Thank you for your feedback!,Dziękujemy za twoją opinię!, New Mention on {0},Nowa wzmianka na temat {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Najpierw Shared with the following Users with Read access:{0},Udostępnione następującym użytkownikom z prawem do odczytu: {0}, Already in the following Users ToDo list:{0},Już na następującej liście użytkowników do zrobienia: {0}, Your assignment on {0} {1} has been removed by {2},Twoje zadanie z {0} {1} zostało usunięte przez {2}, +Invalid Credentials,Nieprawidłowe dane logowania, Print UOM after Quantity,Drukuj UOM po Quantity, Uncaught Server Exception,Niezłapany wyjątek serwera, There was an error building this page,Wystąpił błąd podczas tworzenia tej strony, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Dodaj {0} wykres, Currently you have {0} review points,Obecnie masz {0} punktów recenzji, {0} is not a valid DocType for Dynamic Link,{0} nie jest prawidłowym DocType dla linku dynamicznego, via Assignment Rule,za pomocą reguły przypisania, +Based on Field,Na podstawie Field, +Assign to the user set in this field,Przypisz do użytkownika zestawu w tym polu, +Log Setting User,Log ustawień użytkownika, +Log Settings,Ustawienia dziennika, +Error Log Notification,Powiadomienie dziennika błędów, +Users To Notify,Użytkownicy do powiadamiania, +Log Cleanup,Czyszczenie dziennika, +Clear Error log After,Wyczyść dziennik błędów po, +Clear Activity Log After,Wyczyść dziennik aktywności po, +Clear Email Queue After,Wyczyść kolejkę e-mail po, +Please save to edit the template.,"Zapisz, aby edytować szablon.", +Google Analytics Anonymize IP,Google Analytics Anonimizacja adresu IP, +Incorrect email or password. Please check your login credentials.,Nieprawidłowy email lub hasło. Sprawdź swoje dane logowania., +Incorrect Configuration,Nieprawidłowa konfiguracja, +You are not allowed to delete Standard Report,Nie możesz usunąć raportu standardowego, +You have unseen {0},Nie widziałeś {0}, +Log cleanup and notification configuration,Czyszczenie dziennika i konfiguracja powiadomień, diff --git a/frappe/translations/ps.csv b/frappe/translations/ps.csv index 8550584e94..b7f52d967e 100644 --- a/frappe/translations/ps.csv +++ b/frappe/translations/ps.csv @@ -336,7 +336,6 @@ Add Column,Add کالم, Add Contact,Add تماس, Add Contacts,اړيکې زيات کړئ, Add Filter,Add Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Add Google Analytics ID: د بيلګې په توګه. UA-89XXX57-1. مهرباني وکړی د Google Analytics د نورو معلوماتو لپاره د مرستې ولټوي., Add Group,ډله اضافه کړئ, Add New Permission Rule,Add نوي اجازه حاکمیت, Add Review,بیاکتنه اضافه کړئ, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,یو ځانګړی پوسټ باید د Load More,نور ولګوه, Published on,په خپور شوی, Enable developer mode to create a standard Web Template,د معیاري ویب ټیمپلیټ رامینځته کولو لپاره پراختیا کونکي حالت فعال کړئ, -Please select which module this Web Template belongs to.,مهرباني وکړئ وټاکئ چې دا ویب ټیمپلیټ په کوم ماډل پورې اړه لري., Was this article helpful?,ایا دا مقاله ګټوره وه؟, Thank you for your feedback!,ستاسو له نظره مننه!, New Mention on {0},په {0} باندې نوې یادونه, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,مهرب Shared with the following Users with Read access:{0},د لوستلو لاسرسي سره لاندې کاروونکو سره شریکه شوې: {0}, Already in the following Users ToDo list:{0},دمخه د لاندې کارونکو تودو لیست کې: {0}, Your assignment on {0} {1} has been removed by {2},ستاسو دنده په {0} {1} {2} لخوا لرې شوې, +Invalid Credentials,ناباوره سندونه, Print UOM after Quantity,د مقدار وروسته UOM چاپ کړئ, Uncaught Server Exception,د نه ښوول شوي سرور استثنا, There was an error building this page,د دې پا buildingې جوړولو کې ستونزه وه, @@ -4680,3 +4679,20 @@ Add a {0} Chart,د {0} چارټ اضافه کړئ, Currently you have {0} review points,اوس مهال تاسو د بیاکتنې ټکي. 0. لرئ, {0} is not a valid DocType for Dynamic Link,D 0} د متحرک لینک لپاره معتبر ډاک ټایپ ندی, via Assignment Rule,د تفویض قانون له لارې, +Based on Field,د ساحې پراساس, +Assign to the user set in this field,پدې برخه کې کاروونکي ټاکل ته دنده ورکړئ, +Log Setting User,د خبرتیا تنظیم کول کارن, +Log Settings,د خبرالونو امستنې, +Error Log Notification,د تېروتنې خبرتیا, +Users To Notify,کارونکي خبرداری ورکوي, +Log Cleanup,خبرال پاکول, +Clear Error log After,پاکول د تېروتنې ننوتلو وروسته, +Clear Activity Log After,د فعالیت پاکول وروسته پاک کړئ, +Clear Email Queue After,وروسته د بریښنالیک قطار پاک کړئ, +Please save to edit the template.,مهرباني وکړئ د ټیمپلیټ د سمولو لپاره خوندي کړئ., +Google Analytics Anonymize IP,د ګوګل انلاینټیک انیمیز IP, +Incorrect email or password. Please check your login credentials.,غلط بریښنالیک یا رمز مهرباني وکړئ خپل د ننوتلو اسناد وګورئ., +Incorrect Configuration,ناسمه تشکیلونه, +You are not allowed to delete Standard Report,تاسو د معیاري راپور د حذف کولو اجازه نلرئ, +You have unseen {0},تاسو ندی لیدلی {0}, +Log cleanup and notification configuration,د لاګ پاکول او خبرتیا تشکیلات, diff --git a/frappe/translations/pt.csv b/frappe/translations/pt.csv index 6831a852a0..426e0ba6bd 100644 --- a/frappe/translations/pt.csv +++ b/frappe/translations/pt.csv @@ -336,7 +336,6 @@ Add Column,Adicionar Coluna, Add Contact,Adicionar contato, Add Contacts,Adicionar contatos, Add Filter,Adicionar Filtro, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Adicione a identificação de Google Analytics: ex: UA-89XXX57-1. Para obter mais informações por favor vá à ajuda do Google Analytics ., Add Group,Adicionar grupo, Add New Permission Rule,Adicionar Nova Regra de Permissão, Add Review,Adicione uma avaliação, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Uma postagem em destaque deve ter uma im Load More,Carregue mais, Published on,publicado em, Enable developer mode to create a standard Web Template,Habilite o modo de desenvolvedor para criar um modelo da Web padrão, -Please select which module this Web Template belongs to.,Selecione a qual módulo este modelo da Web pertence., Was this article helpful?,Esse artigo foi útil?, Thank you for your feedback!,Obrigado pelo seu feedback!, New Mention on {0},Nova menção em {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Defina o Shared with the following Users with Read access:{0},Compartilhado com os seguintes usuários com acesso de leitura: {0}, Already in the following Users ToDo list:{0},Já está na seguinte lista de tarefas de usuários: {0}, Your assignment on {0} {1} has been removed by {2},Sua tarefa em {0} {1} foi removida por {2}, +Invalid Credentials,Credenciais inválidas, Print UOM after Quantity,Imprimir UOM após a quantidade, Uncaught Server Exception,Exceção de servidor não detectado, There was an error building this page,Ocorreu um erro ao construir esta página, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Adicionar um {0} gráfico, Currently you have {0} review points,Atualmente você tem {0} pontos de revisão, {0} is not a valid DocType for Dynamic Link,{0} não é um DocType válido para Dynamic Link, via Assignment Rule,via regra de atribuição, +Based on Field,Com base no campo, +Assign to the user set in this field,Atribuir ao usuário definido neste campo, +Log Setting User,Usuário de configuração de log, +Log Settings,Configurações de registro, +Error Log Notification,Notificação de log de erros, +Users To Notify,Usuários para notificar, +Log Cleanup,Limpeza de Log, +Clear Error log After,Limpar log de erros após, +Clear Activity Log After,Limpar log de atividades depois, +Clear Email Queue After,Limpar fila de e-mail após, +Please save to edit the template.,Salve para editar o modelo., +Google Analytics Anonymize IP,IP anônimo do Google Analytics, +Incorrect email or password. Please check your login credentials.,Senha ou email incorretos. Verifique suas credenciais de login., +Incorrect Configuration,Configuração Incorreta, +You are not allowed to delete Standard Report,Você não tem permissão para excluir o relatório padrão, +You have unseen {0},Você não viu {0}, +Log cleanup and notification configuration,Limpeza de registro e configuração de notificação, diff --git a/frappe/translations/pt_br.csv b/frappe/translations/pt_br.csv index 8b2e93ca9d..9304b0692c 100644 --- a/frappe/translations/pt_br.csv +++ b/frappe/translations/pt_br.csv @@ -127,7 +127,6 @@ Activity Log,Log de Atividade, Activity log of all users.,Registro de atividade de todos os usuários., Add / Manage Email Domains.,Adicionar / Gerenciar Domínios de E-mail., Add Attachment,Anexar, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Adicione o ID do Google Analytics: ex. UA-89XXX57-1. Por favor, procure ajuda no Google Analytics para obter mais informações.", Add Subscribers,Adicionar Inscritos, Add Total Row,Adicionar Linha de Total, Add Unsubscribe Link,Adicionar link para cancelar inscrição, diff --git a/frappe/translations/ro.csv b/frappe/translations/ro.csv index 6463e6f707..0d048bff32 100644 --- a/frappe/translations/ro.csv +++ b/frappe/translations/ro.csv @@ -336,7 +336,6 @@ Add Column,Adăugaţi Coloană, Add Contact,Adăugă Contact, Add Contacts,Adaugă Contacte, Add Filter,Adăugați filtru, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Adaugaţi Google Analytics ID: de ex. UA-89XXX57-1. Vă rugăm să căutați ajutor la Google Analytics pentru mai multe informații., Add Group,Adăugare grup, Add New Permission Rule,Adaugaţi regulă de permisiune nouă, Add Review,Adăugați recenzia, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,O postare prezentată trebuie să aibă Load More,Incarca mai mult, Published on,publicat pe, Enable developer mode to create a standard Web Template,Activați modul dezvoltator pentru a crea un șablon Web standard, -Please select which module this Web Template belongs to.,Vă rugăm să selectați cărui modul îi aparține acest șablon web., Was this article helpful?,A fost de ajutor articolul?, Thank you for your feedback!,Multumim pentru feedback-ul dvs!, New Mention on {0},Mențiune nouă pe {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Vă rug Shared with the following Users with Read access:{0},Distribuit cu următorii utilizatori cu acces la citire: {0}, Already in the following Users ToDo list:{0},Deja în următoarea listă ToDo pentru utilizatori: {0}, Your assignment on {0} {1} has been removed by {2},Sarcina dvs. de pe {0} {1} a fost eliminată de {2}, +Invalid Credentials,Acreditări nevalide, Print UOM after Quantity,Imprimați UOM după Cantitate, Uncaught Server Exception,Excepție server necuprins, There was an error building this page,A apărut o eroare la crearea acestei pagini, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Adăugați o diagramă {0}, Currently you have {0} review points,În prezent aveți {0} puncte de recenzie, {0} is not a valid DocType for Dynamic Link,{0} nu este un DocType valid pentru Dynamic Link, via Assignment Rule,prin Regula de atribuire, +Based on Field,Bazat pe câmp, +Assign to the user set in this field,Alocați utilizatorului setat în acest câmp, +Log Setting User,Utilizator de setare jurnal, +Log Settings,Setări jurnal, +Error Log Notification,Notificare jurnal de erori, +Users To Notify,Utilizatorii să notifice, +Log Cleanup,Curățare jurnal, +Clear Error log After,Ștergeți jurnalul de erori după, +Clear Activity Log After,Ștergeți jurnalul de activitate după, +Clear Email Queue After,Ștergeți coada de e-mail după, +Please save to edit the template.,Vă rugăm să salvați pentru a edita șablonul., +Google Analytics Anonymize IP,Google Analytics anonimizează IP, +Incorrect email or password. Please check your login credentials.,Adresă de e-mail sau parolă incorecte. Vă rugăm să verificați datele de conectare., +Incorrect Configuration,Configurare incorectă, +You are not allowed to delete Standard Report,Nu aveți voie să ștergeți raportul standard, +You have unseen {0},Ați nevăzut {0}, +Log cleanup and notification configuration,Curățarea jurnalului și configurarea notificărilor, diff --git a/frappe/translations/ru.csv b/frappe/translations/ru.csv index 70c729ed29..1339318699 100644 --- a/frappe/translations/ru.csv +++ b/frappe/translations/ru.csv @@ -336,7 +336,6 @@ Add Column,Добавить столбец, Add Contact,Добавить контакт, Add Contacts,Добавить контакты, Add Filter,Добавить фильтр, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Добавить Google Analytics ID: например. UA-89XXX57-1. Пожалуйста, посмотрите помощь по Google Analytics для получения дополнительной информации.", Add Group,Добавить группу, Add New Permission Rule,Добавить новое Правило доступа, Add Review,Добавить отзыв, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,В избранном посте дол Load More,Загрузи больше, Published on,Опубликован в, Enable developer mode to create a standard Web Template,"Включите режим разработчика, чтобы создать стандартный веб-шаблон", -Please select which module this Web Template belongs to.,"Выберите, к какому модулю относится этот веб-шаблон.", Was this article helpful?,Эта статья была полезной?, Thank you for your feedback!,Спасибо за ваш отзыв!, New Mention on {0},Новое упоминание о {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Пож Shared with the following Users with Read access:{0},Доступно следующим пользователям с доступом на чтение: {0}, Already in the following Users ToDo list:{0},Уже в следующем списке задач пользователей: {0}, Your assignment on {0} {1} has been removed by {2},Ваше задание на {0} {1} было удалено {2}, +Invalid Credentials,Неверные учетные данные, Print UOM after Quantity,Печать единиц измерения после количества, Uncaught Server Exception,Неперехваченное исключение сервера, There was an error building this page,При создании этой страницы произошла ошибка, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Добавить диаграмму {0}, Currently you have {0} review points,В настоящее время у вас есть {0} баллов обзора, {0} is not a valid DocType for Dynamic Link,{0} не является допустимым DocType для динамической ссылки, via Assignment Rule,через Правило присвоения, +Based on Field,На основе поля, +Assign to the user set in this field,"Назначьте пользователю, указанному в этом поле", +Log Setting User,Пользователь настройки журнала, +Log Settings,Настройки журнала, +Error Log Notification,Уведомление журнала ошибок, +Users To Notify,Пользователи для уведомления, +Log Cleanup,Очистка журнала, +Clear Error log After,Очистить журнал ошибок через, +Clear Activity Log After,Очистить журнал активности через, +Clear Email Queue After,Очистить очередь электронной почты после, +Please save to edit the template.,"Сохраните, чтобы отредактировать шаблон.", +Google Analytics Anonymize IP,Google Analytics анонимизирует IP, +Incorrect email or password. Please check your login credentials.,"Неверный адрес электронной почты или пароль. Пожалуйста, проверьте свои учетные данные.", +Incorrect Configuration,Неправильная конфигурация, +You are not allowed to delete Standard Report,Вам не разрешено удалять стандартный отчет, +You have unseen {0},Вы не видели {0}, +Log cleanup and notification configuration,Очистка журнала и настройка уведомлений, diff --git a/frappe/translations/rw.csv b/frappe/translations/rw.csv index 6774400cd5..52b66f2fd8 100644 --- a/frappe/translations/rw.csv +++ b/frappe/translations/rw.csv @@ -336,7 +336,6 @@ Add Column,Ongeraho Inkingi, Add Contact,Ongeraho, Add Contacts,Ongeraho, Add Filter,Ongeramo Akayunguruzo, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Ongeramo Google Analytics ID: eg. UA-89XXX57-1. Nyamuneka shakisha ubufasha kuri Google Analytics kubindi bisobanuro., Add Group,Ongera Itsinda, Add New Permission Rule,Ongeraho Amategeko mashya, Add Review,Ongera Isubiramo, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Inyandiko igaragara igomba kuba ifite ig Load More,Fata Ibindi, Published on,Byatangajwe kuri, Enable developer mode to create a standard Web Template,Gushoboza abitezimbere uburyo bwo gukora Urubuga rusanzwe, -Please select which module this Web Template belongs to.,Nyamuneka hitamo module iyi Urubuga Inyandikorugero., Was this article helpful?,Iyi ngingo yaba ingirakamaro?, Thank you for your feedback!,Urakoze kubitekerezo byawe!, New Mention on {0},Ibishya bishya kuri {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Nyamunek Shared with the following Users with Read access:{0},Basangiye nabakoresha bakurikira hamwe Gusoma: {0}, Already in the following Users ToDo list:{0},Usanzwe mubakurikira Abakoresha ToDo urutonde: {0}, Your assignment on {0} {1} has been removed by {2},Umukoro wawe kuri {0} {1} wakuweho na {2}, +Invalid Credentials,Ibyangombwa bitemewe, Print UOM after Quantity,Shira UOM nyuma yumubare, Uncaught Server Exception,Seriveri idasanzwe, There was an error building this page,Habayeho kwibeshya kubaka iyi page, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Ongeramo {0} Imbonerahamwe, Currently you have {0} review points,Kugeza ubu ufite {0} ingingo zo gusuzuma, {0} is not a valid DocType for Dynamic Link,{0} ntabwo ari DocType yemewe ya Dynamic Ihuza, via Assignment Rule,binyuze mu Mategeko agenga umukoro, +Based on Field,Bishingiye ku Murima, +Assign to the user set in this field,Shinga umukoresha yashizweho muriki gice, +Log Setting User,Gushiraho Umukoresha, +Log Settings,Igenamiterere, +Error Log Notification,Kumenyesha Ikosa, +Users To Notify,Abakoresha Kumenyesha, +Log Cleanup,Kwiyandikisha, +Clear Error log After,Kuraho Ikosa Logi Nyuma, +Clear Activity Log After,Sobanura Ibikorwa Logi Nyuma, +Clear Email Queue After,Kuraho Imirongo Umurongo Nyuma, +Please save to edit the template.,Nyamuneka uzigame kugirango uhindure inyandikorugero., +Google Analytics Anonymize IP,Google Analytics Anonymous IP, +Incorrect email or password. Please check your login credentials.,Imeri cyangwa ijambo ryibanga. Nyamuneka reba ibyangombwa byawe byinjira., +Incorrect Configuration,Iboneza ritari byo, +You are not allowed to delete Standard Report,Ntiwemerewe gusiba Raporo isanzwe, +You have unseen {0},Ufite {0}, +Log cleanup and notification configuration,Injira gusukura no kumenyesha iboneza, diff --git a/frappe/translations/si.csv b/frappe/translations/si.csv index b539a15f5a..6276cb7368 100644 --- a/frappe/translations/si.csv +++ b/frappe/translations/si.csv @@ -336,7 +336,6 @@ Add Column,වැනි තීරුෙවහි එකතු කරන්න, Add Contact,ඇමතුම් එකතු, Add Contacts,සම්බන්ධතා එකතු කරන්න, Add Filter,පෙරහන් එකතු කරන්න, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google Analytics හැඳුනුම්පත එකතු කරන්න: උදා. යුනියන් ඇෂුවරන්ස්-89XXX57-1. වැඩි විස්තර සඳහා Google Analytics මත උපකාර සොයන්න කරන්න., Add Group,කණ්ඩායම එකතු කරන්න, Add New Permission Rule,නව අවසරය පාලනය එකතු කරන්න, Add Review,සමාලෝචනය එක් කරන්න, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,විශේෂාංග තනතුර Load More,තවත් පූරණය කරන්න, Published on,ප්‍රකාශයට පත් කරන ලදි, Enable developer mode to create a standard Web Template,සම්මත වෙබ් අච්චුවක් සෑදීමට සංවර්ධක මාදිලිය සක්‍රීය කරන්න, -Please select which module this Web Template belongs to.,කරුණාකර මෙම වෙබ් ආකෘතිය අයත් මොඩියුලය තෝරන්න., Was this article helpful?,මෙම ලිපිය ප්‍රයෝජනවත් වූවාද?, Thank you for your feedback!,ඔබගේ ප්‍රතිපෝෂණයට ස්තූතියි!, New Mention on {0},M 0 on හි නව සඳහන, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,කර Shared with the following Users with Read access:{0},කියවීමේ ප්‍රවේශය සහිත පහත පරිශීලකයින් සමඟ බෙදා ඇත: {0}, Already in the following Users ToDo list:{0},දැනටමත් පහත පරිශීලකයින් ටෝඩෝ ලැයිස්තුවේ: {0}, Your assignment on {0} {1} has been removed by {2},Ass 0} {1 on හි ඔබගේ පැවරුම {2 by විසින් ඉවත් කර ඇත, +Invalid Credentials,අවලංගු අක්තපත්‍ර, Print UOM after Quantity,ප්‍රමාණයෙන් පසු UOM මුද්‍රණය කරන්න, Uncaught Server Exception,නොදන්නා සේවාදායක ව්‍යතිරේකය, There was an error building this page,මෙම පිටුව තැනීමේදී දෝෂයක් ඇතිවිය, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} ප්‍රස්ථාරයක් එක් කරන් Currently you have {0} review points,දැනට ඔබට {0} සමාලෝචන ස්ථාන තිබේ, {0} is not a valid DocType for Dynamic Link,{0 Dyn ගතික සබැඳිය සඳහා වලංගු ඩොක්ටයිප් නොවේ, via Assignment Rule,පැවරුම් රීතිය හරහා, +Based on Field,ක්ෂේත්‍රය මත පදනම්ව, +Assign to the user set in this field,මෙම ක්ෂේත්‍රය තුළ සැකසූ පරිශීලකයාට පවරන්න, +Log Setting User,ලොග් සැකසුම් පරිශීලකයා, +Log Settings,ලොග් සැකසුම්, +Error Log Notification,දෝෂ ලොග් දැනුම්දීම, +Users To Notify,දැනුම් දිය යුතු පරිශීලකයින්, +Log Cleanup,ලොග් පිරිසිදු කිරීම, +Clear Error log After,දෝෂ ලොගය පසුව ඉවත් කරන්න, +Clear Activity Log After,ක්‍රියාකාරකම් ලොගය පසුව ඉවත් කරන්න, +Clear Email Queue After,ඊමේල් පෝලිම් පසුව ඉවත් කරන්න, +Please save to edit the template.,අච්චුව සංස්කරණය කිරීමට කරුණාකර සුරකින්න., +Google Analytics Anonymize IP,ගූගල් විශ්ලේෂණ IP නිර්නාමික කරන්න, +Incorrect email or password. Please check your login credentials.,වැරදි විද්‍යුත් තැපෑලක් හෝ මුරපදයක්. කරුණාකර ඔබගේ පිවිසුම් අක්තපත්‍ර පරීක්ෂා කරන්න., +Incorrect Configuration,වැරදි වින්‍යාසය, +You are not allowed to delete Standard Report,සම්මත වාර්තාව මකා දැමීමට ඔබට අවසර නැත, +You have unseen {0},ඔබට නොපෙනෙන {0 have ඇත, +Log cleanup and notification configuration,ලොග් පිරිසිදු කිරීම සහ දැනුම්දීම් වින්‍යාසය, diff --git a/frappe/translations/sk.csv b/frappe/translations/sk.csv index 248b5bfc17..daf8dcaa81 100644 --- a/frappe/translations/sk.csv +++ b/frappe/translations/sk.csv @@ -336,7 +336,6 @@ Add Column,Pridať stĺpec, Add Contact,Pridať kontakt, Add Contacts,Pridať kontakty, Add Filter,Pridať filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Pridať Google Analytics ID: napr.: UA-89XXX57-1. Pre viac informácií prosím vyhľadajte nápovedu na stránkach Google Analytics., Add Group,Pridať skupinu, Add New Permission Rule,Pridať nové pravidlo oprávnení, Add Review,Pridať recenziu, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Odporúčaný príspevok musí mať titu Load More,Načítať viac, Published on,Publikované dňa, Enable developer mode to create a standard Web Template,Povolením režimu pre vývojárov vytvoríte štandardnú webovú šablónu, -Please select which module this Web Template belongs to.,"Vyberte modul, ku ktorému táto webová šablóna patrí.", Was this article helpful?,Bol tento článok nápomocný?, Thank you for your feedback!,Ďakujeme vám za vašu reakciu!, New Mention on {0},Nová zmienka dňa {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Najskôr Shared with the following Users with Read access:{0},Zdieľané s nasledujúcimi používateľmi s prístupom na čítanie: {0}, Already in the following Users ToDo list:{0},Tento zoznam úloh používateľov je už uvedený v zozname: {0}, Your assignment on {0} {1} has been removed by {2},Vaša úloha dňa {0} {1} bola odstránená používateľom {2}, +Invalid Credentials,Neplatné poverenia, Print UOM after Quantity,Tlač MJ po množstve, Uncaught Server Exception,Nezachytená serverová výnimka, There was an error building this page,Pri vytváraní tejto stránky sa vyskytla chyba, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Pridajte {0} graf, Currently you have {0} review points,Momentálne máte {0} bodov kontroly, {0} is not a valid DocType for Dynamic Link,{0} nie je platný DocType pre Dynamic Link, via Assignment Rule,prostredníctvom pravidla priradenia, +Based on Field,Na základe poľa, +Assign to the user set in this field,Priradiť používateľovi nastavenému v tomto poli, +Log Setting User,Používateľ nastavenia protokolu, +Log Settings,Nastavenia denníka, +Error Log Notification,Oznámenie o chybovom protokole, +Users To Notify,Používatelia na oznámenie, +Log Cleanup,Vyčistenie denníka, +Clear Error log After,Vymazať protokol chýb po, +Clear Activity Log After,Vymazať protokol aktivít potom, +Clear Email Queue After,Vymazať e-mailovú frontu potom, +Please save to edit the template.,Uložte a upravte šablónu., +Google Analytics Anonymize IP,Google Analytics anonymizuje IP, +Incorrect email or password. Please check your login credentials.,Nesprávny email alebo heslo. Skontrolujte svoje prihlasovacie údaje., +Incorrect Configuration,Nesprávna konfigurácia, +You are not allowed to delete Standard Report,Nemáte povolenie na odstránenie štandardného prehľadu, +You have unseen {0},Nevideli ste {0}, +Log cleanup and notification configuration,Vyčistenie denníka a konfigurácia upozornení, diff --git a/frappe/translations/sl.csv b/frappe/translations/sl.csv index eb80cd9d3f..244f987f74 100644 --- a/frappe/translations/sl.csv +++ b/frappe/translations/sl.csv @@ -336,7 +336,6 @@ Add Column,Dodaj stolpec, Add Contact,Dodaj stik, Add Contacts,Dodajanje stikov, Add Filter,Dodaj filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Dodaj Google Analytics ID: npr. UA-89XXX57-1. Prosimo, da poiščete pomoč na Google Analytics za več informacij.", Add Group,Dodaj skupino, Add New Permission Rule,Dodaj novo dovoljenje pravilo, Add Review,Dodaj pregled, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Predstavljena objava mora imeti sliko na Load More,Naloži več, Published on,Objavljeno dne, Enable developer mode to create a standard Web Template,"Omogočite način za razvijalce, da ustvarite standardno spletno predlogo", -Please select which module this Web Template belongs to.,"Izberite, kateremu modulu pripada ta spletna predloga.", Was this article helpful?,Je bil ta članek v pomoč?, Thank you for your feedback!,Hvala za vaše mnenje!, New Mention on {0},Nova omemba dne {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Na tej n Shared with the following Users with Read access:{0},V skupni rabi z naslednjimi uporabniki z dostopom za branje: {0}, Already in the following Users ToDo list:{0},Že na naslednjem seznamu opravil za uporabnike: {0}, Your assignment on {0} {1} has been removed by {2},Oseba {2} je vašo nalogo {0} {1} odstranila, +Invalid Credentials,Neveljavna pooblastila, Print UOM after Quantity,Natisni UOM po količini, Uncaught Server Exception,Neznana izjema strežnika, There was an error building this page,Pri gradnji te strani je prišlo do napake, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Dodajte {0} grafikon, Currently you have {0} review points,Trenutno imate {0} točk za pregled, {0} is not a valid DocType for Dynamic Link,{0} ni veljaven DocType za Dynamic Link, via Assignment Rule,prek pravila o dodelitvi, +Based on Field,Na podlagi polja, +Assign to the user set in this field,Dodelite uporabniškemu naboru v tem polju, +Log Setting User,Uporabnik nastavitve dnevnika, +Log Settings,Nastavitve dnevnika, +Error Log Notification,Obvestilo o dnevniku napak, +Users To Notify,"Uporabniki, ki jih morajo obvestiti", +Log Cleanup,Čiščenje dnevnika, +Clear Error log After,Počisti dnevnik napak po, +Clear Activity Log After,Počisti dnevnik dejavnosti po, +Clear Email Queue After,Počisti čakalno vrsto e-pošte po, +Please save to edit the template.,"Prosimo, shranite za urejanje predloge.", +Google Analytics Anonymize IP,Google Analytics anonimizira IP, +Incorrect email or password. Please check your login credentials.,Napačen e-poštni naslov ali geslo. Preverite svoje prijavne poverilnice., +Incorrect Configuration,Napačna konfiguracija, +You are not allowed to delete Standard Report,Standardnega poročila ni dovoljeno izbrisati, +You have unseen {0},Videli ste {0}, +Log cleanup and notification configuration,Čiščenje dnevnika in konfiguracija obvestil, diff --git a/frappe/translations/sq.csv b/frappe/translations/sq.csv index b4e95d5db8..61f074c835 100644 --- a/frappe/translations/sq.csv +++ b/frappe/translations/sq.csv @@ -336,7 +336,6 @@ Add Column,Add Column, Add Contact,Shto kontakt, Add Contacts,Shto kontaktet, Add Filter,Shto Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Shtoje Google Analytics ID: psh. UA-89XXX57-1. Ju lutemi të kërkoni ndihmë në Google Analytics për më shumë informacion., Add Group,Shtoni grupin, Add New Permission Rule,Shto rregull i ri Leje, Add Review,Shtoni Shqyrtimin, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Një postim i paraqitur duhet të ketë Load More,Ngarko më shumë, Published on,Botuar më, Enable developer mode to create a standard Web Template,Aktivizoni modalitetin e zhvilluesit për të krijuar një Model Standard Web, -Please select which module this Web Template belongs to.,Ju lutemi zgjidhni se cilit modul i përket kjo Model Uebi., Was this article helpful?,A ju ndihmoi ky artikull?, Thank you for your feedback!,Faleminderit për komentin tuaj!, New Mention on {0},Përmendje e re në {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Ju lutem Shared with the following Users with Read access:{0},Ndarë me përdoruesit e mëposhtëm me qasje leximi: {0}, Already in the following Users ToDo list:{0},Tashmë në listën e mëposhtme të përdoruesve për të bërë: {0}, Your assignment on {0} {1} has been removed by {2},Detyra juaj në {0} {1} është hequr nga {2}, +Invalid Credentials,Kredenciale të pavlefshme, Print UOM after Quantity,Shtypni UOM pas Sasisë, Uncaught Server Exception,Përjashtim i serverit të pa kapur, There was an error building this page,Pati një gabim në ndërtimin e kësaj faqeje, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Shtoni një Grafik {0}, Currently you have {0} review points,Aktualisht ju keni {0} pikë rishikimi, {0} is not a valid DocType for Dynamic Link,{0} nuk është një DocType i vlefshëm për Lidhjen Dinamike, via Assignment Rule,përmes Rregullës së Caktimit, +Based on Field,Bazuar në terren, +Assign to the user set in this field,Cakto në përdoruesin e vendosur në këtë fushë, +Log Setting User,Përdoruesi i vendosjes së regjistrit, +Log Settings,Cilësimet e regjistrit, +Error Log Notification,Njoftimi i regjistrit të gabimit, +Users To Notify,Përdoruesit që duhet të njoftojnë, +Log Cleanup,Pastrimi i regjistrit, +Clear Error log After,Pastro regjistrin e gabimeve Pas, +Clear Activity Log After,Pastro Regjistrin e Aktivitetit Pas, +Clear Email Queue After,Pastro radhën e postës elektronike pas, +Please save to edit the template.,Ju lutemi ruajeni për të redaktuar modelin., +Google Analytics Anonymize IP,Google Analytics Anonimizo IP-në, +Incorrect email or password. Please check your login credentials.,Email ose fjalëkalim i pasaktë. Ju lutemi kontrolloni kredencialet tuaja të identifikimit., +Incorrect Configuration,Konfigurimi i pasaktë, +You are not allowed to delete Standard Report,Nuk ju lejohet të fshini Raportin Standard, +You have unseen {0},Ju keni parë {0}, +Log cleanup and notification configuration,Pastrimi i regjistrit dhe konfigurimi i njoftimit, diff --git a/frappe/translations/sr.csv b/frappe/translations/sr.csv index 9a1994da3f..821a820122 100644 --- a/frappe/translations/sr.csv +++ b/frappe/translations/sr.csv @@ -336,7 +336,6 @@ Add Column,Додај колону, Add Contact,Додај контакт, Add Contacts,Додај контакте, Add Filter,Адд Филтер, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Додајте Гоогле Аналитицс ИД: нпр. УА-89КСКСКС57-1. Молимо вас тражи помоћ за Гоогле Аналитицс за више информација., Add Group,Додајте групу, Add New Permission Rule,Додај нови правило Дозвола, Add Review,Додај рецензију, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Истакнути пост мора и Load More,Учитај више, Published on,Објављено на, Enable developer mode to create a standard Web Template,Омогућите режим програмера да бисте креирали стандардни веб шаблон, -Please select which module this Web Template belongs to.,Изаберите којем модулу припада овај веб предложак., Was this article helpful?,Да ли је овај чланак био од помоћи?, Thank you for your feedback!,Хвала на повратним информацијама!, New Mention on {0},Ново помињање {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Прво Shared with the following Users with Read access:{0},Дељено са следећим корисницима са приступом за читање: {0}, Already in the following Users ToDo list:{0},Већ на следећој листи Обавеза корисника: {0}, Your assignment on {0} {1} has been removed by {2},Ваш задатак на {0} {1} је уклонио / ла {2}, +Invalid Credentials,Неважећи акредитив, Print UOM after Quantity,Одштампај УОМ након количине, Uncaught Server Exception,Неухваћени изузетак сервера, There was an error building this page,Дошло је до грешке при изградњи ове странице, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Додајте {0} графикон, Currently you have {0} review points,Тренутно имате {0} поена за преглед, {0} is not a valid DocType for Dynamic Link,{0} није важећи ДоцТипе за Динамиц Линк, via Assignment Rule,путем правила додељивања, +Based on Field,На основу Фиелд, +Assign to the user set in this field,Доделите корисничком скупу у овом пољу, +Log Setting User,Корисник подешавања дневника, +Log Settings,Подешавања дневника, +Error Log Notification,Обавештење о евиденцији грешака, +Users To Notify,Корисници које треба обавестити, +Log Cleanup,Чишћење дневника, +Clear Error log After,Обриши дневник грешака После, +Clear Activity Log After,Обриши дневник активности након, +Clear Email Queue After,Обриши ред е-поште након, +Please save to edit the template.,Сачувајте да бисте уредили образац., +Google Analytics Anonymize IP,Гоогле Аналитицс анонимизира ИП, +Incorrect email or password. Please check your login credentials.,Неисправан е-маил или лозинка. Молимо проверите своје податке за пријављивање., +Incorrect Configuration,Нетачна конфигурација, +You are not allowed to delete Standard Report,Није вам дозвољено да избришете стандардни извештај, +You have unseen {0},Невидјели сте {0}, +Log cleanup and notification configuration,Чишћење дневника и конфигурација обавештења, diff --git a/frappe/translations/sv.csv b/frappe/translations/sv.csv index dc2c846789..8b5ba37569 100644 --- a/frappe/translations/sv.csv +++ b/frappe/translations/sv.csv @@ -336,7 +336,6 @@ Add Column,Lägg till kolumn, Add Contact,Lägg till kontakt, Add Contacts,Lägg till kontakter, Add Filter,Lägg till filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Lägg till Google Analytics-ID: t ex. UA-89XXX57-1. Vänligen sök hjälp på Google Analytics för mer information., Add Group,Lägg till grupp, Add New Permission Rule,Lägg till ny Tillståndsregel, Add Review,Lägg till recension, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Ett utvalt inlägg måste ha en omslagsb Load More,Ladda mer, Published on,publicerad på, Enable developer mode to create a standard Web Template,Aktivera utvecklarläget för att skapa en standard webbmall, -Please select which module this Web Template belongs to.,Välj vilken modul denna webbmall tillhör., Was this article helpful?,var den här artikeln hjälpsam?, Thank you for your feedback!,Tack för din feedback!, New Mention on {0},Nytt omnämnande på {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Ange fö Shared with the following Users with Read access:{0},Delas med följande användare med läsbehörighet: {0}, Already in the following Users ToDo list:{0},Finns redan i följande ToDo-lista för användare: {0}, Your assignment on {0} {1} has been removed by {2},Din uppgift på {0} {1} har tagits bort av {2}, +Invalid Credentials,Ogiltiga uppgifter, Print UOM after Quantity,Skriv UOM efter kvantitet, Uncaught Server Exception,Uncaught Server Exception, There was an error building this page,Det gick inte att bygga den här sidan, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Lägg till ett {0} diagram, Currently you have {0} review points,För närvarande har du {0} granskningspoäng, {0} is not a valid DocType for Dynamic Link,{0} är inte en giltig DocType för Dynamic Link, via Assignment Rule,via uppdragsregel, +Based on Field,Baserat på fält, +Assign to the user set in this field,Tilldela användaruppsättningen i det här fältet, +Log Setting User,Logginställare, +Log Settings,Logginställningar, +Error Log Notification,Felmeddelandemeddelande, +Users To Notify,Användare att meddela, +Log Cleanup,Rensa loggen, +Clear Error log After,Rensa fellogg efter, +Clear Activity Log After,Rensa aktivitetslogg efter, +Clear Email Queue After,Rensa e-postkön efter, +Please save to edit the template.,Spara för att redigera mallen., +Google Analytics Anonymize IP,Google Analytics anonymiserar IP, +Incorrect email or password. Please check your login credentials.,Felaktig e-postadress eller lösenord. Kontrollera dina inloggningsuppgifter., +Incorrect Configuration,Felaktig konfiguration, +You are not allowed to delete Standard Report,Du får inte ta bort standardrapporten, +You have unseen {0},Du har sett {0}, +Log cleanup and notification configuration,Logga upprensning och meddelandekonfiguration, diff --git a/frappe/translations/sw.csv b/frappe/translations/sw.csv index 364f4c1c3a..0fe6519983 100644 --- a/frappe/translations/sw.csv +++ b/frappe/translations/sw.csv @@ -336,7 +336,6 @@ Add Column,Ongeza Safu, Add Contact,Ongeza Mawasiliano, Add Contacts,Ongeza Mawasiliano, Add Filter,Ongeza Filter, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Ongeza ID ya Google Analytics: mfano. UA-89XXX57-1. Tafadhali tafuta msaada kwenye Google Analytics kwa habari zaidi., Add Group,Ongeza Kikundi, Add New Permission Rule,Ongeza Sheria mpya ya Ruhusa, Add Review,Ongeza Mapitio, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Chapisho lililoangaziwa lazima liwe na p Load More,Pakia Zaidi, Published on,Imechapishwa mnamo, Enable developer mode to create a standard Web Template,Washa hali ya msanidi programu kuunda Kiolezo wastani cha Wavuti, -Please select which module this Web Template belongs to.,Tafadhali chagua Moduli hii ya Kiolezo cha wavuti ni ya moduli gani, Was this article helpful?,Je! Nakala hii ilisaidia?, Thank you for your feedback!,Asante kwa maoni yako!, New Mention on {0},Mtajo Mpya kwenye {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Tafadhal Shared with the following Users with Read access:{0},Imeshirikiwa na Watumiaji wafuatao na idhini ya kufikia kusoma: {0}, Already in the following Users ToDo list:{0},Tayari iko katika orodha ifuatayo ya Watumiaji wa Kufanya: {0}, Your assignment on {0} {1} has been removed by {2},Kazi yako kwenye {0} {1} imeondolewa na {2}, +Invalid Credentials,Hati batili, Print UOM after Quantity,Chapisha UOM baada ya Wingi, Uncaught Server Exception,Ubaguzi wa Seva isiyofundishwa, There was an error building this page,Kulikuwa na hitilafu wakati wa kuunda ukurasa huu, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Ongeza {0} Chati, Currently you have {0} review points,Hivi sasa una {0} alama za ukaguzi, {0} is not a valid DocType for Dynamic Link,{0} sio aina halali ya Hati ya Maandishi ya Dynamic Link, via Assignment Rule,kupitia Kanuni ya Kazi, +Based on Field,Kulingana na Shamba, +Assign to the user set in this field,Mpe mtumiaji aliyewekwa kwenye uwanja huu, +Log Setting User,Kuweka Kuweka Mtumiaji, +Log Settings,Mipangilio ya Ingia, +Error Log Notification,Arifa ya Kumbukumbu ya Hitilafu, +Users To Notify,Watumiaji Kuwajulisha, +Log Cleanup,Usafi wa Ingia, +Clear Error log After,Futa kumbukumbu ya Hitilafu Baada ya, +Clear Activity Log After,Futa Kumbukumbu ya Shughuli, +Clear Email Queue After,Futa Foleni ya Barua pepe Baadaye, +Please save to edit the template.,Tafadhali hifadhi ili kuhariri templeti., +Google Analytics Anonymize IP,Google Analytics Itambulishe IP, +Incorrect email or password. Please check your login credentials.,Barua pepe au nywila isiyo sahihi. Tafadhali angalia hati zako za kuingia., +Incorrect Configuration,Usanidi usio sahihi, +You are not allowed to delete Standard Report,Hauruhusiwi kufuta Ripoti ya Kawaida, +You have unseen {0},Hujaona {0}, +Log cleanup and notification configuration,Usafi wa kumbukumbu na usanidi wa arifa, diff --git a/frappe/translations/ta.csv b/frappe/translations/ta.csv index 4d768de7bc..1d0cee0d23 100644 --- a/frappe/translations/ta.csv +++ b/frappe/translations/ta.csv @@ -336,7 +336,6 @@ Add Column,வரிசையை சேர்க்க, Add Contact,தொடர்பு சேர், Add Contacts,தொடர்புகள் சேர்க்கவும், Add Filter,வடிகட்டி, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"கூகுள் அனலிட்டிக்ஸ் ஐடி சேர்க்க.எ.கா: UA-89XXX57-1. மேலும் தகவலுக்கு, Google அனலிட்டிக்ஸ் குறித்த உதவி தேட வேண்டும்.", Add Group,குழுவைச் சேர்க்கவும், Add New Permission Rule,புதிய அனுமதி விதி சேர்க்க, Add Review,மதிப்பாய்வைச் சேர், @@ -4629,7 +4628,6 @@ A featured post must have a cover image,பிரத்யேக இடுகை Load More,அதிகமாக ஏற்று, Published on,அன்று வெளியிடப்பட்டது, Enable developer mode to create a standard Web Template,நிலையான வலை வார்ப்புருவை உருவாக்க டெவலப்பர் பயன்முறையை இயக்கவும், -Please select which module this Web Template belongs to.,இந்த வலை வார்ப்புரு எந்த தொகுதிக்கு சொந்தமானது என்பதைத் தேர்ந்தெடுக்கவும்., Was this article helpful?,இந்த கட்டுரை பயனுள்ளதாக இருந்ததா?, Thank you for your feedback!,உங்கள் கருத்துக்கு நன்றி!, New Mention on {0},Mentioned 0 on இல் புதிய குறிப்பு, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,இந Shared with the following Users with Read access:{0},வாசிப்பு அணுகலுடன் பின்வரும் பயனர்களுடன் பகிரப்பட்டது: {0}, Already in the following Users ToDo list:{0},ஏற்கனவே பின்வரும் பயனர்கள் செய்ய வேண்டிய பட்டியலில்: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1 on இல் உங்கள் பணி {2 by மூலம் நீக்கப்பட்டது, +Invalid Credentials,தவறான ஆவண சான்றுகள், Print UOM after Quantity,அளவுக்குப் பிறகு UOM ஐ அச்சிடுக, Uncaught Server Exception,அறியப்படாத சேவையக விதிவிலக்கு, There was an error building this page,இந்தப் பக்கத்தை உருவாக்குவதில் பிழை ஏற்பட்டது, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} விளக்கப்படத்தைச் சேர Currently you have {0} review points,தற்போது உங்களிடம் {0} மதிப்பாய்வு புள்ளிகள் உள்ளன, {0} is not a valid DocType for Dynamic Link,{0 Dyn டைனமிக் இணைப்பிற்கான சரியான டாக் டைப் அல்ல, via Assignment Rule,ஒதுக்கீட்டு விதி வழியாக, +Based on Field,புலம் அடிப்படையில், +Assign to the user set in this field,இந்த புலத்தில் அமைக்கப்பட்ட பயனருக்கு ஒதுக்கவும், +Log Setting User,பதிவு அமைத்தல் பயனர், +Log Settings,பதிவு அமைப்புகள், +Error Log Notification,பிழை பதிவு அறிவிப்பு, +Users To Notify,அறிவிக்க வேண்டிய பயனர்கள், +Log Cleanup,பதிவு சுத்தம், +Clear Error log After,பிழை பதிவை அழிக்கவும், +Clear Activity Log After,செயல்பாட்டு பதிவை அழிக்கவும், +Clear Email Queue After,மின்னஞ்சல் வரிசையை அழிக்கவும், +Please save to edit the template.,வார்ப்புருவைத் திருத்த தயவுசெய்து சேமிக்கவும்., +Google Analytics Anonymize IP,கூகிள் அனலிட்டிக்ஸ் ஐபி அநாமதேயமாக்குகிறது, +Incorrect email or password. Please check your login credentials.,தவறான மின்னஞ்சல் அல்லது கடவுச்சொல். உங்கள் உள்நுழைவு சான்றுகளை சரிபார்க்கவும்., +Incorrect Configuration,தவறான கட்டமைப்பு, +You are not allowed to delete Standard Report,நிலையான அறிக்கையை நீக்க உங்களுக்கு அனுமதி இல்லை, +You have unseen {0},நீங்கள் காணாத {0 have, +Log cleanup and notification configuration,பதிவுசெய்தல் மற்றும் அறிவிப்பு உள்ளமைவு, diff --git a/frappe/translations/te.csv b/frappe/translations/te.csv index d358dc9662..6b8f4c7ab0 100644 --- a/frappe/translations/te.csv +++ b/frappe/translations/te.csv @@ -336,7 +336,6 @@ Add Column,కాలమ్ జోడించండి, Add Contact,సంప్రదించండి జోడించండి, Add Contacts,పరిచయాలను జోడించు, Add Filter,వడపోత జోడించండి, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google Analytics ID జోడించండి: ఉదా. UA-89XXX57-1. మరింత సమాచారం కోసం Google Analytics సహాయం వెతుకు దయచేసి., Add Group,సమూహాన్ని జోడించండి, Add New Permission Rule,కొత్త అనుమతి నియమాన్ని జోడించండి, Add Review,సమీక్షను జోడించండి, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,ఫీచర్ చేసిన పో Load More,మరిన్ని లోడ్ చేయండి, Published on,ప్రచురించబడింది, Enable developer mode to create a standard Web Template,ప్రామాణిక వెబ్ మూసను సృష్టించడానికి డెవలపర్ మోడ్‌ను ప్రారంభించండి, -Please select which module this Web Template belongs to.,దయచేసి ఈ వెబ్ మూస ఏ మాడ్యూల్‌కు చెందినదో ఎంచుకోండి., Was this article helpful?,ఈ వ్యాసం సహాయపడిందా?, Thank you for your feedback!,మీ అభిప్రాయం తెలియచేసినందుకు ధన్యవాదములు!, New Mention on {0},Mentioned 0 on లో కొత్త ప్రస్తావన, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,దయ Shared with the following Users with Read access:{0},రీడ్ యాక్సెస్‌తో కింది వినియోగదారులతో భాగస్వామ్యం చేయబడింది: {0}, Already in the following Users ToDo list:{0},ఇప్పటికే కింది యూజర్స్ టోడో జాబితాలో: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1 on పై మీ నియామకం {2 by ద్వారా తొలగించబడింది, +Invalid Credentials,చెల్లని ఆధారాలు, Print UOM after Quantity,పరిమాణం తర్వాత UOM ను ముద్రించండి, Uncaught Server Exception,అన్‌కాట్ సర్వర్ మినహాయింపు, There was an error building this page,ఈ పేజీని నిర్మించడంలో లోపం ఉంది, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} చార్ట్ జోడించండి, Currently you have {0} review points,ప్రస్తుతం మీకు {0} సమీక్ష పాయింట్లు ఉన్నాయి, {0} is not a valid DocType for Dynamic Link,{0 D డైనమిక్ లింక్ కోసం చెల్లుబాటు అయ్యే డాక్ టైప్ కాదు, via Assignment Rule,అసైన్మెంట్ రూల్ ద్వారా, +Based on Field,ఫీల్డ్ ఆధారంగా, +Assign to the user set in this field,ఈ ఫీల్డ్‌లో సెట్ చేసిన వినియోగదారుకు కేటాయించండి, +Log Setting User,లాగ్ సెట్టింగ్ యూజర్, +Log Settings,లాగ్ సెట్టింగులు, +Error Log Notification,లోపం లాగ్ నోటిఫికేషన్, +Users To Notify,తెలియజేయవలసిన వినియోగదారులు, +Log Cleanup,లాగ్ క్లీనప్, +Clear Error log After,లోపం లాగ్ తర్వాత క్లియర్ చేయండి, +Clear Activity Log After,కార్యాచరణ లాగ్ తర్వాత క్లియర్ చేయండి, +Clear Email Queue After,ఇమెయిల్ క్యూ తర్వాత క్లియర్ చేయండి, +Please save to edit the template.,టెంప్లేట్‌ను సవరించడానికి దయచేసి సేవ్ చేయండి., +Google Analytics Anonymize IP,Google Analytics IP ని అనామకపరచండి, +Incorrect email or password. Please check your login credentials.,తప్పు ఇమెయిల్ లేదా పాస్‌వర్డ్. దయచేసి మీ లాగిన్ ఆధారాలను తనిఖీ చేయండి., +Incorrect Configuration,తప్పు కాన్ఫిగరేషన్, +You are not allowed to delete Standard Report,ప్రామాణిక నివేదికను తొలగించడానికి మీకు అనుమతి లేదు, +You have unseen {0},మీకు కనిపించని {0 have ఉంది, +Log cleanup and notification configuration,లాగ్ శుభ్రత మరియు నోటిఫికేషన్ కాన్ఫిగరేషన్, diff --git a/frappe/translations/th.csv b/frappe/translations/th.csv index fd34d8271d..9fbf140b93 100644 --- a/frappe/translations/th.csv +++ b/frappe/translations/th.csv @@ -336,7 +336,6 @@ Add Column,เพิ่มคอลัมน์, Add Contact,เพิ่มผู้ติดต่อ, Add Contacts,เพิ่มที่อยู่ติดต่อ, Add Filter,เพิ่มตัวกรอง, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,เพิ่ม Google Analytics ID: เช่น UA-89XXX57-1 กรุณาค้นหาความช่วยเหลือใน Google Analytics สำหรับข้อมูลเพิ่มเติม, Add Group,เพิ่มกลุ่ม, Add New Permission Rule,เพิ่มกฎการอนุญาตใหม่, Add Review,เพิ่มรีวิว, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,โพสต์แนะนำต้อ Load More,โหลดเพิ่มเติม, Published on,เผยแพร่เมื่อ, Enable developer mode to create a standard Web Template,เปิดใช้งานโหมดนักพัฒนาเพื่อสร้าง Web Template มาตรฐาน, -Please select which module this Web Template belongs to.,โปรดเลือกโมดูลที่เป็นของ Web Template, Was this article helpful?,บทความนี้เป็นประโยชน์หรือไม่?, Thank you for your feedback!,ขอบคุณสำหรับความคิดเห็นของคุณ!, New Mention on {0},กล่าวถึงใหม่ใน {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,โป Shared with the following Users with Read access:{0},แชร์กับผู้ใช้ต่อไปนี้ที่มีสิทธิ์ในการอ่าน: {0}, Already in the following Users ToDo list:{0},อยู่ในรายการสิ่งที่ต้องทำของผู้ใช้ต่อไปนี้: {0}, Your assignment on {0} {1} has been removed by {2},งานของคุณใน {0} {1} ถูกลบโดย {2}, +Invalid Credentials,ข้อมูลประจำตัวที่ไม่ถูกต้อง, Print UOM after Quantity,พิมพ์ UOM หลังจำนวน, Uncaught Server Exception,Uncaught ข้อยกเว้นเซิร์ฟเวอร์, There was an error building this page,เกิดข้อผิดพลาดในการสร้างเพจนี้, @@ -4680,3 +4679,20 @@ Add a {0} Chart,เพิ่มแผนภูมิ {0}, Currently you have {0} review points,ขณะนี้คุณมีคะแนนรีวิว {0} จุด, {0} is not a valid DocType for Dynamic Link,{0} ไม่ใช่ DocType ที่ถูกต้องสำหรับ Dynamic Link, via Assignment Rule,ผ่านกฎการมอบหมายงาน, +Based on Field,ขึ้นอยู่กับฟิลด์, +Assign to the user set in this field,กำหนดให้กับผู้ใช้ที่ตั้งค่าในฟิลด์นี้, +Log Setting User,ล็อกการตั้งค่าผู้ใช้, +Log Settings,การตั้งค่าบันทึก, +Error Log Notification,การแจ้งเตือนบันทึกข้อผิดพลาด, +Users To Notify,ผู้ใช้ที่จะแจ้งเตือน, +Log Cleanup,เข้าสู่ระบบการล้างข้อมูล, +Clear Error log After,ล้างบันทึกข้อผิดพลาดหลังจาก, +Clear Activity Log After,ล้างบันทึกกิจกรรมหลัง, +Clear Email Queue After,ล้างคิวอีเมลหลัง, +Please save to edit the template.,โปรดบันทึกเพื่อแก้ไขเทมเพลต, +Google Analytics Anonymize IP,Google Analytics Anonymous IP, +Incorrect email or password. Please check your login credentials.,อีเมลหรือรหัสผ่านไม่ถูกต้อง โปรดตรวจสอบข้อมูลรับรองการเข้าสู่ระบบของคุณ, +Incorrect Configuration,การกำหนดค่าไม่ถูกต้อง, +You are not allowed to delete Standard Report,คุณไม่ได้รับอนุญาตให้ลบ Standard Report, +You have unseen {0},คุณมองไม่เห็น {0}, +Log cleanup and notification configuration,บันทึกการล้างข้อมูลและการกำหนดค่าการแจ้งเตือน, diff --git a/frappe/translations/tr.csv b/frappe/translations/tr.csv index 34bb5b7b48..f0142e61a1 100644 --- a/frappe/translations/tr.csv +++ b/frappe/translations/tr.csv @@ -336,7 +336,6 @@ Add Column,Sütun ekle, Add Contact,Kişi ekle, Add Contacts,Kişileri ekleyin, Add Filter,Filtre Ekle, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google Analytics ID ekleyin: örn. UA-89XXX57-1. Daha fazla bilgi için Google Analytics yardım arayın., Add Group,Grup ekle, Add New Permission Rule,Yeni İzin Kuralı Ekle, Add Review,Yorum ekle, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Öne çıkan bir gönderinin kapak resmi Load More,Daha fazla yükle, Published on,yayınlandı, Enable developer mode to create a standard Web Template,Standart bir Web Şablonu oluşturmak için geliştirici modunu etkinleştirin, -Please select which module this Web Template belongs to.,Lütfen bu Web Şablonunun ait olduğu modülü seçin., Was this article helpful?,Bu makale yardımcı oldu mu?, Thank you for your feedback!,Geri bildiriminiz için teşekkür ederiz!, New Mention on {0},{0} tarihinde Yeni Bahsedildi, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Lütfen Shared with the following Users with Read access:{0},Aşağıdaki Okuma erişimine sahip Kullanıcılarla paylaşıldı: {0}, Already in the following Users ToDo list:{0},Zaten şu Yapılacaklar listesinde: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1} ile ilgili ödeviniz {2} tarafından kaldırıldı, +Invalid Credentials,Geçersiz kimlik bilgileri, Print UOM after Quantity,Miktardan Sonra UOM Yazdır, Uncaught Server Exception,Yakalanmamış Sunucu İstisnası, There was an error building this page,Bu sayfa oluşturulurken bir hata meydana geldi, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Bir {0} Grafiği ekleyin, Currently you have {0} review points,Şu anda {0} inceleme puanınız var, {0} is not a valid DocType for Dynamic Link,"{0}, Dinamik Bağlantı için geçerli bir DocType değil", via Assignment Rule,Atama Kuralı aracılığıyla, +Based on Field,Alana Göre, +Assign to the user set in this field,Bu alandaki kullanıcı setine atayın, +Log Setting User,Günlük Ayarı Kullanıcısı, +Log Settings,Günlük Ayarları, +Error Log Notification,Hata Günlüğü Bildirimi, +Users To Notify,Bildirilecek Kullanıcılar, +Log Cleanup,Günlük Temizleme, +Clear Error log After,Sonra Hata günlüğünü temizle, +Clear Activity Log After,Etkinlik Günlüğünü Daha Sonra Temizle, +Clear Email Queue After,E-posta Sırasını Sonra Sil, +Please save to edit the template.,Lütfen şablonu düzenlemek için kaydedin., +Google Analytics Anonymize IP,Google Analytics IP'yi Anonimleştir, +Incorrect email or password. Please check your login credentials.,Yanlış eposta adresi veya şifre. Lütfen giriş bilgilerinizi kontrol edin., +Incorrect Configuration,Yanlış Yapılandırma, +You are not allowed to delete Standard Report,Standart Raporu silmenize izin verilmiyor, +You have unseen {0},{0} görmediniz, +Log cleanup and notification configuration,Günlük temizleme ve bildirim yapılandırması, diff --git a/frappe/translations/uk.csv b/frappe/translations/uk.csv index 3c3a66445e..1e35f34c66 100644 --- a/frappe/translations/uk.csv +++ b/frappe/translations/uk.csv @@ -336,7 +336,6 @@ Add Column,Додати стовпець, Add Contact,Додати контакт, Add Contacts,Додати контакти, Add Filter,Додати фільтр, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,"Додати Google Analytics ID. Наприклад, UA-89XXX57-1. Для отримання додаткової інформації звертайтесь, будь ласка, до розділів довідки Google Analytics.", Add Group,Додати групу, Add New Permission Rule,Додати нове правило дозволу, Add Review,Додати відгук, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Рекомендована публік Load More,Завантажити ще, Published on,Опубліковано, Enable developer mode to create a standard Web Template,"Увімкніть режим розробника, щоб створити стандартний веб-шаблон", -Please select which module this Web Template belongs to.,"Виберіть, до якого модуля належить цей веб-шаблон.", Was this article helpful?,Чи була ця стаття корисною?, Thank you for your feedback!,Спасибі за ваш відгук!, New Mention on {0},Нова згадка про {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,Спер Shared with the following Users with Read access:{0},Спільний доступ із такими користувачами з доступом для читання: {0}, Already in the following Users ToDo list:{0},Вже в наведеному нижче списку завдань користувачів: {0}, Your assignment on {0} {1} has been removed by {2},Ваше призначення на {0} {1} було видалено користувачем {2}, +Invalid Credentials,Недійсні облікові дані, Print UOM after Quantity,Друк UOM після кількості, Uncaught Server Exception,Невихований виняток сервера, There was an error building this page,Під час створення цієї сторінки сталася помилка, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Додайте діаграму {0}, Currently you have {0} review points,На даний момент у вас є {0} балів, {0} is not a valid DocType for Dynamic Link,{0} не є дійсним DocType для Dynamic Link, via Assignment Rule,за допомогою правила призначення, +Based on Field,На основі поля, +Assign to the user set in this field,Призначити користувацькому набору в цьому полі, +Log Setting User,Користувач налаштування журналу, +Log Settings,Налаштування журналу, +Error Log Notification,Повідомлення про журнал помилок, +Users To Notify,Повідомлення користувачів, +Log Cleanup,Очищення журналу, +Clear Error log After,Очистити журнал помилок після, +Clear Activity Log After,Очистити журнал активності після, +Clear Email Queue After,Очистити чергу електронної пошти після, +Please save to edit the template.,"Збережіть, щоб редагувати шаблон.", +Google Analytics Anonymize IP,Google Analytics анонімізує IP, +Incorrect email or password. Please check your login credentials.,"Неправильна електронна адреса чи пароль. Будь ласка, перевірте свої дані для входу.", +Incorrect Configuration,Неправильна конфігурація, +You are not allowed to delete Standard Report,Вам не дозволяється видаляти Стандартний звіт, +You have unseen {0},Ви не бачили {0}, +Log cleanup and notification configuration,Очищення журналу та конфігурація сповіщень, diff --git a/frappe/translations/ur.csv b/frappe/translations/ur.csv index 714e916fa6..3b740fd152 100644 --- a/frappe/translations/ur.csv +++ b/frappe/translations/ur.csv @@ -336,7 +336,6 @@ Add Column,کالم کا اضافہ, Add Contact,رابطہ شامل کریں, Add Contacts,رابطہ شامل کریں, Add Filter,فلٹر شامل, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,گوگل کے تجزیات ID شامل کریں: مثال کے طور پر. UA-89XXX57-1. مزید معلومات کے لئے گوگل کے تجزیات پر مدد تلاش کریں., Add Group,گروپ شامل کریں۔, Add New Permission Rule,نیا اجازت اصول شامل, Add Review,جائزہ شامل کریں, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,ایک متمول پوسٹ میں ایک Load More,مزید لوڈ کریں, Published on,پر شائع ہوا, Enable developer mode to create a standard Web Template,معیاری ویب ٹیمپلیٹ بنانے کیلئے ڈیولپر وضع کو فعال کریں, -Please select which module this Web Template belongs to.,براہ کرم منتخب کریں کہ یہ ویب ٹیمپلیٹ کس ماڈیول سے ہے۔, Was this article helpful?,کیا یہ مضمون مددگار تھا؟, Thank you for your feedback!,آپ کے تبصرے کا شکریہ!, New Mention on {0},Men 0 on پر نیا تذکرہ, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,براہ Shared with the following Users with Read access:{0},پڑھنے تک رسائی والے مندرجہ ذیل صارفین کے ساتھ اشتراک کردہ: {0}, Already in the following Users ToDo list:{0},پہلے ہی درج ذیل صارفین میں ToDo فہرست: {0}, Your assignment on {0} {1} has been removed by {2},Your 0} {1 on پر آپ کی اسائنمنٹ کو {2 by نے ختم کردیا ہے, +Invalid Credentials,جعلی اسناد, Print UOM after Quantity,مقدار کے بعد UOM پرنٹ کریں, Uncaught Server Exception,بغیر پائے ہوئے سرور استثنیٰ, There was an error building this page,اس صفحے کو بنانے میں ایک خامی تھی, @@ -4680,3 +4679,20 @@ Add a {0} Chart,ایک {0} چارٹ شامل کریں, Currently you have {0} review points,فی الحال آپ کے پاس} 0} جائزہ پوائنٹس ہیں, {0} is not a valid DocType for Dynamic Link,متحرک لنک کے لئے {0 a درست دستاویز ٹائپ نہیں ہے, via Assignment Rule,تفویض اصول کے ذریعہ, +Based on Field,فیلڈ پر مبنی, +Assign to the user set in this field,اس فیلڈ میں صارف سیٹ کو تفویض کریں, +Log Setting User,لاگ سیٹ کرنے والا صارف, +Log Settings,لاگ سیٹنگیں, +Error Log Notification,غلطی لاگ اطلاع, +Users To Notify,صارفین کو مطلع کرنے کے لئے, +Log Cleanup,کلین اپ لاگ ان کریں, +Clear Error log After,صاف لاگ ان کے بعد لاگ ان کریں, +Clear Activity Log After,سرگرمی لاگ ان کے بعد صاف کریں, +Clear Email Queue After,ای میل کی صفائی کے بعد صاف کریں, +Please save to edit the template.,براہ کرم ٹیمپلیٹ میں ترمیم کرنے کیلئے محفوظ کریں۔, +Google Analytics Anonymize IP,گوگل کے تجزیات گمنامی IP, +Incorrect email or password. Please check your login credentials.,غلط ای میل یا پاس ورڈ. براہ کرم اپنے لاگ ان کی اسناد دیکھیں۔, +Incorrect Configuration,غلط کنفیگریشن, +You are not allowed to delete Standard Report,آپ کو معیاری رپورٹ کو حذف کرنے کی اجازت نہیں ہے, +You have unseen {0},آپ کو se 0 un نظر نہیں آتا ہے, +Log cleanup and notification configuration,لاگ ان صفائی اور اطلاعاتی ترتیب, diff --git a/frappe/translations/uz.csv b/frappe/translations/uz.csv index 5b04c98ce1..685eb1b13c 100644 --- a/frappe/translations/uz.csv +++ b/frappe/translations/uz.csv @@ -336,7 +336,6 @@ Add Column,Ustun qo'shish, Add Contact,Kontaktni qo'shish, Add Contacts,Kontaktlarni qo'shish, Add Filter,Filtrni qo'shish, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Google Analytics ID raqamini qo'shing: masalan. UA-89XXX57-1. Qo'shimcha ma'lumot uchun Google Analytics-da yordam so'rang., Add Group,Guruh qo'shish, Add New Permission Rule,Yangi ruxsatnoma qoidasini qo'shing, Add Review,Sharh qo'shish, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Taniqli postda muqovali rasm bo'lish Load More,Ko'proq yuklang, Published on,Nashr qilingan, Enable developer mode to create a standard Web Template,Standart veb-shablonni yaratish uchun ishlab chiquvchi rejimini yoqing, -Please select which module this Web Template belongs to.,Ushbu veb-shablon qaysi modulga tegishli ekanligini tanlang., Was this article helpful?,Ushbu maqola foydali bo'ldimi?, Thank you for your feedback!,Fikrlaringiz uchun tashakkur!, New Mention on {0},{0} da yangi eslatma, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Iltimos Shared with the following Users with Read access:{0},O'qish huquqiga ega bo'lgan quyidagi foydalanuvchilar bilan bo'lishilgan: {0}, Already in the following Users ToDo list:{0},Quyidagi foydalanuvchilar toDo ro'yxatida allaqachon mavjud: {0}, Your assignment on {0} {1} has been removed by {2},{0} {1} dagi topshiriqingiz {2} tomonidan olib tashlandi, +Invalid Credentials,Noto'g'ri ma'lumotnoma, Print UOM after Quantity,Miqdordan keyin UOMni chop eting, Uncaught Server Exception,Serverning istisno holati, There was an error building this page,Ushbu sahifani yaratishda xatolik yuz berdi, @@ -4680,3 +4679,20 @@ Add a {0} Chart,{0} Diagrammasini qo'shing, Currently you have {0} review points,Hozirda sizda {0} sharhlar mavjud, {0} is not a valid DocType for Dynamic Link,{0} Dynamic Link uchun haqiqiy DocType emas, via Assignment Rule,Topshiriq qoidasi orqali, +Based on Field,Maydonga asoslangan, +Assign to the user set in this field,Ushbu sohada foydalanuvchi to'plamiga tayinlang, +Log Setting User,Jurnalni sozlash uchun foydalanuvchi, +Log Settings,Kirish sozlamalari, +Error Log Notification,Xato haqida jurnalni xabardor qilish, +Users To Notify,Xabar berish uchun foydalanuvchilar, +Log Cleanup,Jurnalni tozalash, +Clear Error log After,Keyin xatolar jurnalini tozalash, +Clear Activity Log After,Faoliyat jurnalini keyin tozalash, +Clear Email Queue After,Keyin elektron pochta navbatini tozalash, +Please save to edit the template.,Shablonni tahrirlash uchun saqlang., +Google Analytics Anonymize IP,Google Analytics IP-ni anonimizatsiya qiladi, +Incorrect email or password. Please check your login credentials.,"Noto'g'ri elektron pochta yoki parol. Iltimos, kirish ma'lumotlarini tekshiring.", +Incorrect Configuration,Noto'g'ri konfiguratsiya, +You are not allowed to delete Standard Report,Standart hisobotni o'chirishga ruxsat berilmagan, +You have unseen {0},Sizda {0} ko'rilmagan, +Log cleanup and notification configuration,Jurnalni tozalash va bildirishnoma konfiguratsiyasi, diff --git a/frappe/translations/vi.csv b/frappe/translations/vi.csv index a7d12bf933..165661d9e9 100644 --- a/frappe/translations/vi.csv +++ b/frappe/translations/vi.csv @@ -336,7 +336,6 @@ Add Column,Thêm cột, Add Contact,Add Contact, Add Contacts,Thêm liên hệ, Add Filter,Thêm bộ lọc, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,Thêm Google Analytics ID: ví dụ. UA-89XXX57-1. Hãy tìm kiếm sự giúp đỡ về Google Analytics để biết thêm thông tin., Add Group,Thêm nhóm, Add New Permission Rule,Add New phép tắc, Add Review,Thêm nhận xét, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,Một bài đăng nổi bật phải có Load More,Tải thêm, Published on,Được xuất bản trên, Enable developer mode to create a standard Web Template,Bật chế độ nhà phát triển để tạo Mẫu web chuẩn, -Please select which module this Web Template belongs to.,Vui lòng chọn mô-đun Mẫu Web này thuộc về., Was this article helpful?,Bài viết này hữu ích không?, Thank you for your feedback!,Cảm ơn phản hôi của bạn!, New Mention on {0},Đề cập mới về {0}, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,"Trướ Shared with the following Users with Read access:{0},Được chia sẻ với những Người dùng sau có quyền truy cập Đọc: {0}, Already in the following Users ToDo list:{0},Đã có trong danh sách Việc cần làm của Người dùng sau: {0}, Your assignment on {0} {1} has been removed by {2},Bài tập của bạn trên {0} {1} đã bị xóa bởi {2}, +Invalid Credentials,Thông tin không hợp lệ, Print UOM after Quantity,In UOM sau số lượng, Uncaught Server Exception,Ngoại lệ máy chủ chưa được thông báo, There was an error building this page,Đã xảy ra lỗi khi xây dựng trang này, @@ -4680,3 +4679,20 @@ Add a {0} Chart,Thêm biểu đồ {0}, Currently you have {0} review points,Hiện tại bạn có {0} điểm đánh giá, {0} is not a valid DocType for Dynamic Link,{0} không phải là DocType hợp lệ cho Liên kết động, via Assignment Rule,thông qua Quy tắc phân công, +Based on Field,Dựa trên lĩnh vực, +Assign to the user set in this field,Gán cho tập người dùng trong trường này, +Log Setting User,Người dùng cài đặt nhật ký, +Log Settings,Cài đặt nhật ký, +Error Log Notification,Thông báo nhật ký lỗi, +Users To Notify,Người dùng thông báo, +Log Cleanup,Dọn dẹp nhật ký, +Clear Error log After,Xóa nhật ký lỗi Sau khi, +Clear Activity Log After,Xóa nhật ký hoạt động sau, +Clear Email Queue After,Xóa hàng đợi email sau, +Please save to edit the template.,Vui lòng lưu để chỉnh sửa mẫu., +Google Analytics Anonymize IP,IP ẩn danh của Google Analytics, +Incorrect email or password. Please check your login credentials.,Email hoặc mật khẩu không chính xác. Vui lòng kiểm tra thông tin đăng nhập của bạn., +Incorrect Configuration,Cấu hình không chính xác, +You are not allowed to delete Standard Report,Bạn không được phép xóa Báo cáo Chuẩn, +You have unseen {0},Bạn có {0} không nhìn thấy, +Log cleanup and notification configuration,Dọn dẹp nhật ký và cấu hình thông báo, diff --git a/frappe/translations/zh.csv b/frappe/translations/zh.csv index eb7548d59e..cef8cd74a4 100644 --- a/frappe/translations/zh.csv +++ b/frappe/translations/zh.csv @@ -336,7 +336,6 @@ Add Column,添加列, Add Contact,增加联系人, Add Contacts,添加联系人, Add Filter,添加过滤器, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,添加谷歌Analytics ID:例如 UA-89XXX57-1。请查看Analytics帮助以获取更多信息。, Add Group,添加组, Add New Permission Rule,新建权限规则, Add Review,添加评论, @@ -4629,7 +4628,6 @@ A featured post must have a cover image,精选帖子必须有封面图片, Load More,装载更多, Published on,发表于, Enable developer mode to create a standard Web Template,启用开发人员模式以创建标准的Web模板, -Please select which module this Web Template belongs to.,请选择此Web模板属于哪个模块。, Was this article helpful?,本文是否有帮助?, Thank you for your feedback!,感谢您的反馈意见!, New Mention on {0},关于{0}的新提及, @@ -4644,6 +4642,7 @@ Please set the following documents in this Dashboard as standard first.,请首 Shared with the following Users with Read access:{0},与具有读取权限的以下用户共享:{0}, Already in the following Users ToDo list:{0},在以下“用户待办事项”列表中:{0}, Your assignment on {0} {1} has been removed by {2},您在{0} {1}上的分配已被{2}删除, +Invalid Credentials,无效证件, Print UOM after Quantity,数量后打印UOM, Uncaught Server Exception,未捕获的服务器异常, There was an error building this page,建立此页面时发生错误, @@ -4680,3 +4679,20 @@ Add a {0} Chart,添加一个{0}图表, Currently you have {0} review points,目前您有{0}个评论点, {0} is not a valid DocType for Dynamic Link,{0}不是动态链接的有效DocType, via Assignment Rule,通过分配规则, +Based on Field,基于现场, +Assign to the user set in this field,分配给该字段中的用户集, +Log Setting User,日志设置用户, +Log Settings,日志设定, +Error Log Notification,错误日志通知, +Users To Notify,用户通知, +Log Cleanup,日志清理, +Clear Error log After,之后清除错误日志, +Clear Activity Log After,之后清除活动日志, +Clear Email Queue After,之后清除电子邮件队列, +Please save to edit the template.,请保存以编辑模板。, +Google Analytics Anonymize IP,Google Analytics(分析)匿名IP, +Incorrect email or password. Please check your login credentials.,错误的邮箱帐号或密码。请检查您的登录凭据。, +Incorrect Configuration,配置错误, +You are not allowed to delete Standard Report,您无权删除标准报告, +You have unseen {0},您看不见{0}, +Log cleanup and notification configuration,日志清理和通知配置, diff --git a/frappe/translations/zh_tw.csv b/frappe/translations/zh_tw.csv index b784d9f2f0..e7efb25389 100644 --- a/frappe/translations/zh_tw.csv +++ b/frappe/translations/zh_tw.csv @@ -283,7 +283,6 @@ Add Column,添加欄, Add Contact,增加聯繫人, Add Contacts,添加聯繫人, Add Filter,新增過濾器, -Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.,新增 Google Analytics ID:如UA-89XXX57-1。請搜尋Google Analytics相關文件以獲取更多訊息。, Add Group,添加組, Add New Permission Rule,添加新的權限規則, Add Review,添加評論, @@ -4131,7 +4130,6 @@ A featured post must have a cover image,精選帖子必須有封面圖片, Load More,裝載更多, Published on,發表於, Enable developer mode to create a standard Web Template,啟用開發人員模式以創建標準的Web模板, -Please select which module this Web Template belongs to.,請選擇此Web模板屬於哪個模塊。, Was this article helpful?,本文是否有幫助?, Thank you for your feedback!,感謝您的反饋意見!, New Mention on {0},關於{0}的新提及, @@ -4146,6 +4144,7 @@ Please set the following documents in this Dashboard as standard first.,請首 Shared with the following Users with Read access:{0},與具有讀取權限的以下用戶共享:{0}, Already in the following Users ToDo list:{0},在以下“用戶待辦事項”列表中:{0}, Your assignment on {0} {1} has been removed by {2},您在{0} {1}上的分配已被{2}刪除, +Invalid Credentials,無效證件, Print UOM after Quantity,數量後打印UOM, Uncaught Server Exception,未捕獲的服務器異常, There was an error building this page,建立此頁面時發生錯誤, @@ -4179,3 +4178,19 @@ Add a {0} Chart,添加一個{0}圖表, Currently you have {0} review points,目前您有{0}個評論點, {0} is not a valid DocType for Dynamic Link,{0}不是動態鏈接的有效DocType, via Assignment Rule,通過分配規則, +Based on Field,基於現場, +Assign to the user set in this field,分配給該字段中的用戶集, +Log Setting User,日誌設置用戶, +Log Settings,日誌設定, +Error Log Notification,錯誤日誌通知, +Users To Notify,用戶通知, +Log Cleanup,日誌清理, +Clear Error log After,之後清除錯誤日誌, +Clear Activity Log After,之後清除活動日誌, +Clear Email Queue After,之後清除電子郵件隊列, +Please save to edit the template.,請保存以編輯模板。, +Incorrect email or password. Please check your login credentials.,錯誤的郵箱帳號或密碼。請檢查您的登錄憑據。, +Incorrect Configuration,配置錯誤, +You are not allowed to delete Standard Report,您無權刪除標準報告, +You have unseen {0},您看不見{0}, +Log cleanup and notification configuration,日誌清理和通知配置, From 259d37584b966447028bbbcb897340116c2e825a Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Sun, 25 Oct 2020 11:01:37 +0530 Subject: [PATCH 17/46] Revert "fix(Request): Sanitize Error Report Email Message" (#11777) --- frappe/core/doctype/communication/email.py | 2 +- frappe/public/js/frappe/request.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/core/doctype/communication/email.py b/frappe/core/doctype/communication/email.py index c56a950fbd..4c531fbac6 100755 --- a/frappe/core/doctype/communication/email.py +++ b/frappe/core/doctype/communication/email.py @@ -55,7 +55,7 @@ def make(doctype=None, name=None, content=None, subject=None, sent_or_received = comm = frappe.get_doc({ "doctype":"Communication", "subject": subject, - "content": frappe.utils.sanitize_html(content), + "content": content, "sender": sender, "sender_full_name":sender_full_name, "recipients": recipients, diff --git a/frappe/public/js/frappe/request.js b/frappe/public/js/frappe/request.js index 485f2e7a62..5cf50bd0a3 100644 --- a/frappe/public/js/frappe/request.js +++ b/frappe/public/js/frappe/request.js @@ -443,7 +443,7 @@ frappe.request.report_error = function(xhr, request_opts) { var communication_composer = new frappe.views.CommunicationComposer({ subject: 'Error Report [' + frappe.datetime.nowdate() + ']', recipients: error_report_email, - message: frappe.utils.xss_sanitise(error_report_message), + message: error_report_message, doc: { doctype: "User", name: frappe.session.user From 8ec26175eded3345953f0a331e29811b33641c9d Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Sun, 25 Oct 2020 01:10:08 -0600 Subject: [PATCH 18/46] fix: update es.csv typos fixes (#11761) * fix: update es.csv typos fixes * fix: more typo fix in file es.csv --- frappe/translations/es.csv | 158 ++++++++++++++++++------------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/frappe/translations/es.csv b/frappe/translations/es.csv index 1c233c4113..ced78e1ed8 100644 --- a/frappe/translations/es.csv +++ b/frappe/translations/es.csv @@ -10,7 +10,7 @@ Actions,Acciones, Active,Activo, Add,Agregar, Add Comment,Agregar comentario, -Add Row,Añadir fila, +Add Row,Añadir Fila, Address,Dirección, Address Line 2,Dirección línea 2, Address Title,Dirección, @@ -54,7 +54,7 @@ Create,Crear, Created By,Creado por, Current,Corriente, Custom HTML,HTML Personalizado, -Custom?,Personalizado?, +Custom?,¿Personalizado?, Date Format,Formato de Fecha, Datetime,Fecha y Hora, Day,Día, @@ -70,7 +70,7 @@ Domain,Dominio, Domains,Dominios, Draft,Borrador, Edit,Editar, -Email Account,Cuentas de correo electrónico, +Email Account,Cuenta de correo electrónico, Email Address,Dirección de correo electrónico, Email ID,Identificación de correo, Email Sent,Correo Electrónico Enviado, @@ -85,12 +85,12 @@ Expand All,Expandir todo, Fail,Falla, Failed,Falló, Fax,Fax, -Feedback,Comentarios., +Feedback,Retroalimentación, Female,Femenino, Field Name,Nombre de Campo, Fieldname,Nombre del campo, Fields,Campos, -First Name,Nombre, +First Name,Primer Nombre, Frequency,Frecuencia, Friday,Viernes, From,Desde, @@ -138,8 +138,8 @@ Medium,Medio, Meeting,Reunión, Message Examples,Ejemplos de Mensaje, Method,Método, -Middle Name,Segundo nombre, -Middle Name (Optional),Segundo nombre (Opcional), +Middle Name,Segundo Nombre, +Middle Name (Optional),Segundo Nombre (Opcional), Monday,Lunes, Monthly,Mensual, More,Más, @@ -164,19 +164,19 @@ Operation,Operación, Options,Opciones, Other,Otro, Owner,Propietario, -Page Missing or Moved,Página no encontrada, +Page Missing or Moved,Página no encontrada o movida, Parameter,Parámetro, Password,Contraseña, Payment Gateway,Pasarela de Pago, Payment Gateway Name,Nombre de Pasarela de Pago, -Payments,Pagos., +Payments,Pagos, Period,Período, Pincode,Código PIN, Plan Name,Nombre del Plan, Please enable pop-ups,"Por favor, active los pop-ups", Please select Company,"Por favor, seleccione la empresa", Please select {0},"Por favor, seleccione {0}", -Please set Email Address,"Por favor, establece Dirección de correo electrónico", +Please set Email Address,"Por favor, configura Dirección de correo electrónico", Portal,Portal, Portal Settings,Configuración del portal, Preview,Vista Previa, @@ -218,12 +218,12 @@ Route,Ruta, Sales Manager,Gerente de ventas, Sales Master Manager,Gerente principal de ventas, Sales User,Usuario de ventas, -Salutation,Saludo., -Sample,Muestra., -Saturday,Sábado., -Saved,Guardado., +Salutation,Saludo, +Sample,Muestra, +Saturday,Sábado, +Saved,Guardado, Scan Barcode,Escanear Código de Barras, -Scheduled,Programado., +Scheduled,Programado, Search,Buscar, Secret Key,Llave secreta, Select,Seleccionar, @@ -231,10 +231,10 @@ Select DocType,Seleccione un 'DocType', Send Now,Enviar ahora, Sent,Enviado, Series {0} already used in {1},Secuencia {0} ya utilizada en {1}, -Service,Servicios, +Service,Servicio, Set as Default,Establecer como Predeterminado, Settings,Configuración, -Shipping,Envío., +Shipping,Envío, Short Name,Nombre corto, Slideshow,Presentación, Some information is missing,Falta información, @@ -244,19 +244,19 @@ Standard,Estándar, Start Date,Fecha de inicio, Start Import,Comience a Importar, State,Estado, -Stopped,Detenido., +Stopped,Detenido, Subject,Asunto, Submit,Validar, Successful,Exitoso, Summary,Resumen, -Sunday,Domingo., +Sunday,Domingo, System Manager,Administrador del sistema, Target,Objetivo, Task,Tarea, Tax Category,Categoría de impuestos, Test,Prueba, -Thank you,Gracias., -The page you are looking for is missing. This could be because it is moved or there is a typo in the link.,La página que está buscando no se encuentra. Esto podría ser debido a que fue movida o hay un error tipográfico en el enlace., +Thank you,Gracias, +The page you are looking for is missing. This could be because it is moved or there is a typo in the link.,La página que está buscando no se encuentra. Esto podría ser debido a que fue movida o hay un error en el enlace., Timespan,Espacio de tiempo, To,A, To Date,Hasta la fecha, @@ -278,7 +278,7 @@ Week,Semana, Weekdays,Días de la Semana, Weekly,Semanal, Welcome email sent,Correo electrónico de bienvenida enviado, -Workflow,Flujos de Trabajo, +Workflow,Flujo de Trabajo, You need to be logged in to access this page,Tiene que estar registrado para acceder a esta página, old_parent,old_parent, {0} is mandatory,{0} es obligatorio, @@ -317,7 +317,7 @@ API Username,Nombre de usuario de API, ASC,ASC, About Us Settings,Configuración de información de la compañía, About Us Team Member,Miembro del Equipo Acerca de Nosotros, -Accept Payment,acepte el pago, +Accept Payment,aceptar el pago, Access Key ID,ID de Clave de Acceso, Access Token URL,URL de Token de Acceso, Action Failed,Accion Fallida, @@ -355,7 +355,7 @@ Add custom javascript to forms.,Añadir javascript personalizado a los formulari Add fields to forms.,Agregar campos a los formularios., Add meta tags to your web pages,Agregue metaetiquetas a sus páginas web, Add script for Child Table,Agregar script para tabla secundaria, -Add to table,Agregar a la Mesa, +Add to table,Agregar a la Tabla, Add your own translations,Añada sus propias traducciones, "Added HTML in the <head> section of the web page, primarily used for website verification and SEO","HTML añadido en la sección <head> de la página web, utiliza sobre todo para la verificación de la web y SEO", Added {0},Añadido {0}, @@ -783,7 +783,7 @@ Custom Menu Items,Menú Items Personalizados, Custom Report,Informe personalizado, Custom Reports,Informes personalizados, Custom Role,Rol Personalizado, -Custom Script,Secuencia personalizada, +Custom Script,Secuencia de comando personalizada, Custom Sidebar Menu,Menú Lateral Personalizado, Custom Translations,Traducciones Personalizadas, Customization,Personalización, @@ -852,7 +852,7 @@ Delayed,Retrasado, Delete Data,Borrar datos, Delete comment?,¿Eliminar comentario?, Delete this record to allow sending to this email address,Eliminar este registro para permitir el envío a esta dirección de correo electrónico, -Delete {0} items permanently?,Eliminar {0} artículos de forma permanente?, +Delete {0} items permanently?,¿Eliminar {0} artículos de forma permanente?, Deleted,Eliminado, Deleted DocType,DocType eliminado, Deleted Document,documento eliminado, @@ -1044,7 +1044,7 @@ Everyone,Todos, Example,Ejemplo, Example Email Address,Dirección de correo electrónico de ejemplo, Example: {{ subject }},Ejemplo: {{subject}}, -Excel,Sobresalir, +Excel,Excel, Exception,Excepción, Exception Type,Tipo de excepción, Execution Time: {0} sec,Tiempo de ejecución: {0} segundos, @@ -1053,7 +1053,7 @@ Expiration time,Tiempo de expiración, Expire Notification On,Notificación Expirará en, Expires In,Expira en, Expiry time of QR Code Image Page,Tiempo de expiración de Pagina de Código QR, -Export All {0} rows?,Exportar todas las {0} filas?, +Export All {0} rows?,¿Exportar todas las {0} filas?, Export Custom Permissions,Exportar permisos personalizados, Export Customizations,Exportar Personalizaciones, Export Data,Exportar Datos, @@ -1565,7 +1565,7 @@ Message-id,Mensaje-id, Meta Tags,Metaetiquetas, Migration ID Field,Campo de ID de Migración, Milestone,Hito, -Milestone Tracker,Rastreador de hitos, +Milestone Tracker,Rastreador de Hitos, Minimum Password Score,Puntuación mínima de contraseña, Miss,Señorita, Missing Fields,Campos Faltantes, @@ -1590,10 +1590,10 @@ Move to Row Number,Mover al número de fila, Mr,Sr., Mrs,señora, Ms,Sra., -Multiple root nodes not allowed.,No se permiten múltiples nodos principales, +Multiple root nodes not allowed.,No se permiten múltiples nodos principales., Multiplier Field,Campo multiplicador, "Must be of type ""Attach Image""","Debe ser del tipo ""Adjuntar Imagen""", -Must have report permission to access this report.,Debe tener permisos de reporte para ver este documento, +Must have report permission to access this report.,Debe tener permisos de reporte para ver este documento., Must specify a Query to run,Debe especificar una consulta para poder ejecutar, Mute Sounds,Sonidos Silenciados, MyISAM,MyISAM, @@ -1622,7 +1622,7 @@ New Message from Website Contact Page,Nuevo mensaje desde la página de contacto New Name,Nuevo Nombre, New Newsletter,Nuevo Boletín, New Password,Nueva Contraseña, -New Password Required.,Nueva Contraseña Requerida, +New Password Required.,Nueva Contraseña Requerida., New Print Format Name,Nuevo nombre de formato de impresión, New Report name,Nuevo nombre de Informe, New Value,Nuevo Valor, @@ -1740,7 +1740,7 @@ OTP secret can only be reset by the Administrator.,OTP secreto sólo puede ser r Office,Oficina, Office 365,Office 365, Old Password,Contraseña anterior, -Old Password Required.,Contraseña Vieja Requerida, +Old Password Required.,Contraseña Vieja Requerida., Older backups will be automatically deleted,Copias de seguridad anteriores se eliminarán de forma automática, "On {0}, {1} wrote:","hace {0}, {1} escribió:", "Once submitted, submittable documents cannot be changed. They can only be Cancelled and Amended.","Una vez enviados, los documentos que se pueden enviar no se pueden cambiar. Solo pueden cancelarse y modificarse.", @@ -1830,13 +1830,13 @@ Payment Failed,Pago Fallido, Payment Success,Pago Exitoso, Pending Approval,Aprobación pendiente, Pending Verification,verificación pendiente, -Percent,Por ciento, +Percent,Porcentaje, Percent Complete,Porcentaje Completo, Perm Level,Nivel permitido, Permanent,Permanente, -Permanently Cancel {0}?,Cancelar permanentemente {0}?, -Permanently Submit {0}?,Validar permanentemente {0}?, -Permanently delete {0}?,"¿Eliminar permanentemente ""{0}""?", +Permanently Cancel {0}?,¿Cancelar permanentemente {0}?, +Permanently Submit {0}?,¿Validar permanentemente {0}?, +Permanently delete {0}?,¿Eliminar permanentemente {0}?, Permission Error,Error de Permiso, Permission Level,Nivel de permisos, Permission Levels,Niveles de permisos, @@ -2003,7 +2003,7 @@ Raw Email,Correo electrónico sin procesar, Raw Printing,Impresión en bruto, Razorpay Payment gateway settings,Configuración de la pasarela de pago Razorpay, Razorpay Settings,Ajustes Razorpay, -Re: ,Re:, +Re: ,Re: , Re: {0},Re: {0}, Read,Leer, Read Only,Sólo lectura, @@ -2027,7 +2027,7 @@ Reference DocType and Reference Name are required,'DocType' de referencia y nomb Reference Report,Informe de referencia, Reference: {0} {1},Referencia: {0} {1}, Refresh Form,Actualizar formulario, -Refreshing...,Refrescante..., +Refreshing...,Actualizando..., Register OAuth Client App,Register OAuth cliente de aplicación, Registered but disabled,Registrado pero discapacitados, Relapsed,Reincidido, @@ -2047,7 +2047,7 @@ Remove Field,Quitar Campo, Remove Filter,Eliminar filtro, Remove Section,Remover la sección, Remove Tag,Remover Etiqueta, -Remove all customizations?,Remover todas las personalizaciones?, +Remove all customizations?,¿Remover todas las personalizaciones?, Removed {0},Eliminado {0}, Rename many items by uploading a .csv file.,"Renombrar elementos del sistema, importando un archivo CVS", Rename {0},Cambiar el nombre {0}, @@ -2082,14 +2082,14 @@ Res: {0},Res: {0}, Reset OTP Secret,Restablecer OTP Secret, Reset Password,Restablecer contraseña, Reset Password Key,Restablecer contraseña/clave, -Reset Permissions for {0}?,Restablecer los permisos para {0}?, +Reset Permissions for {0}?,¿Restablecer los permisos para {0}?, Reset to defaults,Restablecer predeterminados, Reset your password,Restablecer su Contraseña, Response Type,Tipo de respuesta, Restore,Restaurar, Restore Original Permissions,Restaurar permisos originales, Restore or permanently delete a document.,Restaurar o eliminar permanentemente un documento., -Restore to default settings?,Restaurar a la configuración predeterminada?, +Restore to default settings?,¿Restaurar a la configuración predeterminada?, Restored,Restaurado, Restrict IP,Restringir la propiedad intelectual, Restrict To Domain,Restringir al dominio, @@ -2153,7 +2153,7 @@ SMTP Settings for outgoing emails,Configuración SMTP para los correos salientes SSL/TLS Mode,Modo SSL / TLS, Salesforce,Fuerza de Ventas, Same Field is entered more than once,El mismo Campo se ingresa más de una vez, -Save API Secret: ,Guardar API Secreto:, +Save API Secret: ,Guardar API Secreto: , Save As,Guardar como, Save Filter,Guardar Filtro, Save Report,Guardar reporte, @@ -2295,7 +2295,7 @@ Shared,Compartido, Shared With,Compartido con, Shared with everyone,Compartido con todos, Shared with {0},Compartido con {0}, -Shop,Tienda., +Shop,Tienda, Short keyboard patterns are easy to guess,patrones de teclado cortos son fáciles de adivinar, Show Attachments,Mostrar Archivos Adjuntos, Show Calendar,Mostrar Calendario, @@ -2382,9 +2382,9 @@ Start a conversation.,Iniciar una conversación., Start entering data below this line,Comience ingresando datos debajo de esta línea, Start new Format,Crear un nuevo formato, StartTLS,StartTLS, -Started,Empezado, -Starting Frappe ...,Comenzando Frappé ..., -Starts on,Comienza el, +Started,Iniciado, +Starting Frappe ...,Iniciando Frappe ..., +Starts on,Iniciar el, States,Estados, "States for workflow (e.g. Draft, Approved, Cancelled).","Diferentes estados para el flujo de trabajo (Por ejemplo: Borrador, Aprobado, Cancelado)", Static Parameters,Parámetros estáticos, @@ -2396,7 +2396,7 @@ Stores the JSON of last known versions of various installed apps. It is used to Straight rows of keys are easy to guess,Filas rectas de teclas son fáciles de adivinar, Stripe Settings,Configuración de Stripe, Stripe payment gateway settings,Ajustes de la pasarela de pago Stripe, -Style,Estilo., +Style,Estilo, Style Settings,Ajustes de Estilo, "Style represents the button color: Success - Green, Danger - Red, Inverse - Black, Primary - Dark Blue, Info - Light Blue, Warning - Orange","Estilo representa el color del botón: (Éxito-verde), (Peligro-rojo), (Inverso-negro), (Primario-azul oscuro), (Informativo-azul claro), (Advertencia-Naranja)", Stylesheets for Print Formats,Hojas de estilo para los Formatos de Impresión, @@ -2426,7 +2426,7 @@ Sum of {0},Suma de {0}, Support Email Address Not Specified,Dirección de correo electrónico de soporte no especificada, Suspend Sending,Suspender Envío, Switch To Desk,Pasar a Escritorio, -Symbol,Símbolo., +Symbol,Símbolo, Sync,Sincronización, Sync on Migrate,Sincronizar o Migrar, Syntax error in template,Error de sintaxis en la plantilla, @@ -2435,7 +2435,7 @@ System Page,Página del Sistema, System Settings,Configuración del Sistema, System User,Usuario del sistema, System and Website Users,Usuarios del sistema y del sitio web, -Table,Mesa, +Table,Tabla, Table Field,Campo de Tabla, Table HTML,Tabla HTML, Table MultiSelect,Tabla MultiSelect, @@ -2572,7 +2572,7 @@ Track Changes,Rastrear Cambios, Track Email Status,Seguir el Estado del Correo Electrónico, Track Field,Campo de la pista, Track Seen,Seguimiento de vistas, -Track Views,Trackear Vistas, +Track Views,Seguir Vistas, "Track if your email has been opened by the recipient.\n
    \nNote: If you're sending to multiple recipients, even if 1 recipient reads the email, it'll be considered ""Opened""","Haga un seguimiento de si su correo electrónico ha sido abierto por el destinatario.
    Nota: Si está enviando a varios destinatarios, incluso si un destinatario lee el correo electrónico, se considerará "Abierto".", Track milestones for any document,Seguimiento de hitos para cualquier documento, Transaction Hash,Hash de Transacción, @@ -2587,7 +2587,7 @@ Translation,Traducción, Translations,Traducciones, Trash,Basura, Tree,Árbol, -Trigger Method,Método de Activación, +Trigger Method,Método de Disparador, Trigger Name,Nombre del Disparador, "Trigger on valid methods like ""before_insert"", ""after_update"", etc (will depend on the DocType selected)","Disparo en métodos válidos como "before_insert", "after_update", etc (dependerá del tipo de documento seleccionado)", Try to avoid repeated words and characters,Trate de evitar las palabras y caracteres repetidos, @@ -2599,14 +2599,14 @@ Type:,Tipo:, UID,UID, UIDNEXT,UIDNEXT, UIDVALIDITY,UIDVALIDITY, -UNSEEN,INVISIBLE, +UNSEEN,NO VISTO, UPPER CASE,MAYÚSCULAS, "URIs for receiving authorization code once the user allows access, as well as failure responses. Typically a REST endpoint exposed by the Client App.\n
    e.g. http://hostname//api/method/frappe.www.login.login_via_facebook","URI para la recepción de código de autorización una vez que el usuario permite el acceso, así como las respuestas de fallo. Normalmente, un extremo REST expuesto por el cliente de la aplicación.
    por ejemplo, http: //hostname//api/method/frappe.www.login.login_via_facebook", URLs,URLs, Unable to find attachment {0},No es posible encontrar adjunto {0}, Unable to load camera.,No se puede cargar la cámara., Unable to load: {0},No se puede cargar: {0}, -Unable to open attached file. Did you export it as CSV?,No se puede abrir el archivo adjunto. Ha exportado como CSV?, +Unable to open attached file. Did you export it as CSV?,No se puede abrir el archivo adjunto. ¿Lo ha exportado como CSV?, Unable to read file format for {0},Incapaz de leer el formato de archivo para {0}, Unable to send emails at this time,No se pueden enviar mensajes de correo electrónico en este momento, Unable to update event,No se puede actualizar evento, @@ -2639,7 +2639,7 @@ Update records,Actualizar Registros, Updated,Actualizado, Updated successfully,Actualizado exitosamente, Updated {0}: {1},Actualizado {0}: {1}, -Updating,Actualización, +Updating,Actualizando, Updating {0},Actualizando {0}, Upload Failed,Subida fallida, Uploaded To Dropbox,Subido a Dropbox, @@ -2938,7 +2938,7 @@ leaf,hoja, lightblue,azul claro, list-alt,Listado, magnet,imán, -map-marker,mapa del marcador, +map-marker,marcador del mapa, merged {0} into {1},fusionado {0} en {1}, minus,menos, minus-sign,signo-menos, @@ -2960,7 +2960,7 @@ on_update_after_submit,on_update_after_submit, only.,solo., or,o, pause,pausa, -pencil,Lápiz, +pencil,lápiz, picture,imagen, plane,Plano, play,Iniciar, @@ -2988,7 +2988,7 @@ share-alt,share-alt, shopping-cart,carrito de compras, show,mostrar, signal,señal, -star,estrella., +star,estrella, star-empty,star-empty, step-backward,retroceder, step-forward,adelantar, @@ -3366,7 +3366,7 @@ Group By Type,Agrupar por tipo, Group By field is required to create a dashboard chart,Se requiere el campo Agrupar por para crear un cuadro de mandos, HH:mm,HH: mm, HH:mm:ss,HH: mm: ss, -HOOK-.####,GANCHO-.####, +HOOK-.####,HOOK-.####, HTML Page,Página HTML, Has Mapping,Tiene mapeo, Hourly Long,Cada hora, @@ -3439,7 +3439,7 @@ Mention,Mencionar, Modules,Módulos, Monthly Long,Largo mensual, Naming Series,Secuencias e identificadores, -Navigate Home,Navegar a casa, +Navigate Home,Navegar a Inicio, Navigate list down,Navegar por la lista hacia abajo, Navigate list up,Navegar lista arriba, New Notification,Nueva notificación, @@ -3474,11 +3474,11 @@ Number of Groups,Numero de grupos, OAuth Client ID,ID de cliente de OAuth, OTP setup using OTP App was not completed. Please contact Administrator.,"La configuración de OTP con la aplicación OTP no se completó. Por favor, póngase en contacto con el administrador.", Only one {0} can be set as primary.,Solo uno {0} se puede establecer como primario., -Open Awesomebar,Abrir Awesomebar, -Open Chat,Conversación abierta, +Open Awesomebar,Abrir barra de búsqueda, +Open Chat,Abrir Chat, Open Documents,Documentos abiertos, -Open Help,Ayuda abierta, -Open Settings,Configuración abierta, +Open Help,Abrir Ayuda, +Open Settings,Abrir Configuración, Open list item,Abrir elemento de lista, Organizational Unit for Users,Unidad Organizacional para Usuarios, Page Shortcuts,Atajos de página, @@ -3726,10 +3726,10 @@ Default,Predeterminado, Delete,Eliminar, Description,Descripción, Designation,Puesto, -Disabled,Discapacitado, +Disabled,Deshabilitado, Doctype,Doctype, Download Template,Descargar plantilla, -Dr,Dr, +Dr,Dr., Due Date,Fecha de vencimiento, Duplicate,Duplicar, Edit Profile,Editar perfil, @@ -3757,7 +3757,7 @@ In Progress,En Progreso, Intermediate,Intermedio, Invite as User,Invitar como usuario, "It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account.","Parece que hay un problema con la configuración de la banda del servidor. En caso de falla, la cantidad será reembolsada a su cuenta.", -Loading...,Cargando ..., +Loading...,Cargando..., Location,Ubicación, Looks like someone sent you to an incomplete URL. Please ask them to look into it.,"Parece que alguien le envió a una URL incompleta. Por favor, pídeles que revisen.", Master,Maestro, @@ -3839,7 +3839,7 @@ Center,Centro, Clear,Claro, Comment,Comentario, Comments,Comentarios, -DRAFT,Borrador, +DRAFT,BORRADOR, Dashboard,Tablero, DocType,DocType, Download,Descargar, @@ -3944,7 +3944,7 @@ email inbox,bandeja de entrada de email, file,archivo, filter,Filtro, flag,bandera, -font,Fuente., +font,Fuente, forward,adelante, green,verde, home,Inicio, @@ -3976,7 +3976,7 @@ search,buscar, share,cuota, stop,detener, success,éxito, -tag,Etiqueta., +tag,Etiqueta, tags,etiquetas, tasks,Tareas, time,Tiempo, @@ -4390,12 +4390,12 @@ Show Form Tour,Mostrar recorrido de formulario, View Report,Vista del informe, Go to Page,Ir a la pagina, Watch Video,Ver video, -Show Full Form?,¿Mostrar forma completa?, +Show Full Form?,¿Mostrar formulario completo?, Show full form instead of a quick entry modal,Mostrar formulario completo en lugar de un modal de entrada rápida, Report Reference Doctype,Tipo de documento de referencia del informe, Report Description,Descripción del reporte, This will be shown to the user in a dialog after routing to the report,Esto se mostrará al usuario en un cuadro de diálogo después de enviarlo al informe., -Example: #Tree/Account,Ejemplo: # Árbol / Cuenta, +Example: #Tree/Account,Ejemplo: #Tree/Account, Callback Title,Título de devolución de llamada, Callback Message,Mensaje de devolución de llamada, This will be shown in a modal after routing,Esto se mostrará en un modal después del enrutamiento., @@ -4429,7 +4429,7 @@ Send System Notification,Enviar notificación del sistema, Send To All Assignees,Enviar a todos los cesionarios, Receiver By Document Field,Receptor por campo de documento, Receiver By Role,Receptor por función, -Child Table,Mesa infantil, +Child Table,Tabla hija, Remote Value Filters,Filtros de valor remoto, API Key of the user(Event Subscriber) on the producer site,Clave API del usuario (suscriptor del evento) en el sitio del productor, API Secret of the user(Event Subscriber) on the producer site,API Secreto del usuario (suscriptor del evento) en el sitio del productor, @@ -4457,7 +4457,7 @@ CTA,CTA, CTA Label,Etiqueta de CTA, CTA URL,URL de CTA, Default Portal Home,Inicio del portal predeterminado, -"Example: ""/desk""",Ejemplo: "/ escritorio", +"Example: ""/desk""",Ejemplo: "/desk", Social Link Settings,Configuración de enlaces sociales, Social Link Type,Tipo de enlace social, facebook,Facebook, @@ -4491,7 +4491,7 @@ Add Space on Top,Agregar espacio en la parte superior, Add Space on Bottom,Agregar espacio en la parte inferior, Is Unique,Es único, User Agent,Agente de usuario, -Table Break,Rotura de mesa, +Table Break,Salto de Tabla, Hide Login,Ocultar inicio de sesión, Navbar Template,Plantilla de barra de navegación, Navbar Template Values,Valores de la plantilla de la barra de navegación, @@ -4653,10 +4653,10 @@ New module created {0},Nuevo módulo creado {0}, There are documents which have workflow states that do not exist in this Workflow. It is recommended that you add these states to the Workflow and change their states before removing these states.,Hay documentos que tienen estados de flujo de trabajo que no existen en este flujo de trabajo. Se recomienda que agregue estos estados al flujo de trabajo y cambie sus estados antes de eliminarlos., Worflow States Don't Exist,Los estados de flujo de trabajo no existen, Save Anyway,Guardar de todos modos, -Energy Points:,Puntos de energía:, -Review Points:,Puntos de revisión:, -Rank:,Rango:, -Monthly Rank:,Rango mensual:, +Energy Points:,Puntos de energía: , +Review Points:,Puntos de revisión: , +Rank:,Rango: , +Monthly Rank:,Rango mensual: , Invalid expression set in filter {0} ({1}),Conjunto de expresión no válida en el filtro {0} ({1}), Invalid expression set in filter {0},Conjunto de expresión no válida en el filtro {0}, {0} {1} added to Dashboard {2},{0} {1} agregado al panel {2}, From 1e48ced097066161a6567e1e4ed2cb186a66b14a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 24 Sep 2020 18:19:32 +0530 Subject: [PATCH 19/46] feat(customize form): add links and actions to customize form and cleanup code --- frappe/__init__.py | 1 + frappe/app.py | 1 + .../doctype_action/doctype_action.json | 12 +- .../doctype/doctype_link/doctype_link.json | 21 +- .../doctype/customize_form/customize_form.js | 73 +- .../customize_form/customize_form.json | 92 +- .../doctype/customize_form/customize_form.py | 818 ++++++++++-------- .../customize_form_field.json | 11 +- .../property_setter/property_setter.json | 451 +++------- .../property_setter/property_setter.py | 8 +- .../email/doctype/email_group/email_group.js | 5 - .../doctype/email_group/email_group.json | 12 +- frappe/model/dynamic_links.py | 9 +- frappe/model/meta.py | 65 +- 14 files changed, 811 insertions(+), 768 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index a6a5067ea2..c5f13f2295 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -1154,6 +1154,7 @@ def make_property_setter(args, ignore_validate=False, validate_fields_for_doctyp 'doctype_or_field': args.doctype_or_field, 'doc_type': doctype, 'field_name': args.fieldname, + 'row_name': args.row_name, 'property': args.property, 'value': args.value, 'property_type': args.property_type or "Data", diff --git a/frappe/app.py b/frappe/app.py index c4d6a0235a..2c8dcec26b 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -159,6 +159,7 @@ def handle_exception(e): response = None http_status_code = getattr(e, "http_status_code", 500) return_as_message = False + print(frappe.get_traceback()) if frappe.get_request_header('Accept') and (frappe.local.is_ajax or 'application/json' in frappe.get_request_header('Accept')): # handle ajax responses first diff --git a/frappe/core/doctype/doctype_action/doctype_action.json b/frappe/core/doctype/doctype_action/doctype_action.json index 0f9da802eb..080755c479 100644 --- a/frappe/core/doctype/doctype_action/doctype_action.json +++ b/frappe/core/doctype/doctype_action/doctype_action.json @@ -9,7 +9,8 @@ "action_type", "action", "group", - "hidden" + "hidden", + "custom" ], "fields": [ { @@ -48,12 +49,19 @@ "fieldname": "hidden", "fieldtype": "Check", "label": "Hidden" + }, + { + "default": "0", + "fieldname": "custom", + "fieldtype": "Check", + "hidden": 1, + "label": "Custom" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-08-21 14:44:03.845315", + "modified": "2020-09-24 14:19:05.549835", "modified_by": "Administrator", "module": "Core", "name": "DocType Action", diff --git a/frappe/core/doctype/doctype_link/doctype_link.json b/frappe/core/doctype/doctype_link/doctype_link.json index 752b4bb5da..2adfd4a6c3 100644 --- a/frappe/core/doctype/doctype_link/doctype_link.json +++ b/frappe/core/doctype/doctype_link/doctype_link.json @@ -7,7 +7,9 @@ "field_order": [ "link_doctype", "link_fieldname", - "group" + "group", + "hidden", + "custom" ], "fields": [ { @@ -30,10 +32,25 @@ "fieldtype": "Data", "in_list_view": 1, "label": "Group" + }, + { + "default": "0", + "fieldname": "hidden", + "fieldtype": "Check", + "label": "Hidden" + }, + { + "default": "0", + "fieldname": "custom", + "fieldtype": "Check", + "hidden": 1, + "label": "Custom" } ], + "index_web_pages_for_search": 1, "istable": 1, - "modified": "2019-09-24 11:41:25.291377", + "links": [], + "modified": "2020-09-24 14:19:23.189511", "modified_by": "Administrator", "module": "Core", "name": "DocType Link", diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index b1743a96a5..7dfec0b0b0 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -5,13 +5,14 @@ frappe.provide("frappe.customize_form"); frappe.ui.form.on("Customize Form", { onload: function(frm) { + frm.disable_save(); frm.set_query("doc_type", function() { return { translate_values: false, filters: [ ['DocType', 'issingle', '=', 0], ['DocType', 'custom', '=', 0], - ['DocType', 'name', 'not in', frappe.model.core_doctypes_list], + //['DocType', 'name', 'not in', frappe.model.core_doctypes_list], ['DocType', 'restrict_to_domain', 'in', frappe.boot.active_domains] ] }; @@ -27,7 +28,7 @@ frappe.ui.form.on("Customize Form", { }); $(frm.wrapper).on("grid-row-render", function(e, grid_row) { - if(grid_row.doc && grid_row.doc.fieldtype=="Section Break") { + if (grid_row.doc && grid_row.doc.fieldtype=="Section Break") { $(grid_row.row).css({"font-weight": "bold"}); } }); @@ -40,19 +41,25 @@ frappe.ui.form.on("Customize Form", { frm.trigger("setup_sortable"); }); + if (localStorage['customize_doctype']) { + // set default value from customize form + frm.set_value('doc_type', localStorage['customize_doctype']); + } + }, doc_type: function(frm) { - if(frm.doc.doc_type) { + if (frm.doc.doc_type) { return frm.call({ method: "fetch_to_customize", doc: frm.doc, freeze: true, callback: function(r) { - if(r) { - if(r._server_messages && r._server_messages.length) { + if (r) { + if (r._server_messages && r._server_messages.length) { frm.set_value("doc_type", ""); } else { + localStorage['customize_doctype'] = frm.doc.doc_type; frm.refresh(); frm.trigger("setup_sortable"); } @@ -69,7 +76,7 @@ frappe.ui.form.on("Customize Form", { frm.doc.fields.forEach(function(f, i) { var data_row = frm.page.body.find('[data-fieldname="fields"] [data-idx="'+ f.idx +'"] .data-row'); - if(f.is_custom_field) { + if (f.is_custom_field) { data_row.addClass("highlight"); } else { f._sortable = false; @@ -82,7 +89,7 @@ frappe.ui.form.on("Customize Form", { frm.disable_save(); frm.page.clear_icons(); - if(frm.doc.doc_type) { + if (frm.doc.doc_type) { frappe.customize_form.set_primary_action(frm); frm.add_custom_button(__('Go to {0} List', [frm.doc.doc_type]), function() { @@ -101,7 +108,7 @@ frappe.ui.form.on("Customize Form", { frappe.set_route('permission-manager', frm.doc.doc_type); }, "fa fa-lock", "btn-default"); - if(frappe.boot.developer_mode) { + if (frappe.boot.developer_mode) { frm.add_custom_button(__('Export Customizations'), function() { frappe.prompt( [ @@ -129,29 +136,29 @@ frappe.ui.form.on("Customize Form", { } // sort order select - if(frm.doc.doc_type) { + if (frm.doc.doc_type) { var fields = $.map(frm.doc.fields, - function(df) { return frappe.model.is_value_type(df.fieldtype) ? df.fieldname : null; }); + function(df) { return frappe.model.is_value_type(df.fieldtype) ? df.fieldname : null; }); fields = ["", "name", "modified"].concat(fields); frm.set_df_property("sort_field", "options", fields); } - if(frappe.route_options && frappe.route_options.doc_type) { + if (frappe.route_options && frappe.route_options.doc_type) { setTimeout(function() { frm.set_value("doc_type", frappe.route_options.doc_type); frappe.route_options = null; }, 1000); } - } }); +// can't delete standard fields frappe.ui.form.on("Customize Form Field", { before_fields_remove: function(frm, doctype, name) { var row = frappe.get_doc(doctype, name); - if(!(row.is_custom_field || row.__islocal)) { + if (!(row.is_custom_field || row.__islocal)) { frappe.msgprint(__("Cannot delete standard field. You can hide it if you want")); - throw "cannot delete custom field"; + throw "cannot delete standard field"; } }, fields_add: function(frm, cdt, cdn) { @@ -160,16 +167,46 @@ frappe.ui.form.on("Customize Form Field", { } }); +// can't delete standard links +frappe.ui.form.on("DocType Link", { + before_links_remove: function(frm, doctype, name) { + let row = frappe.get_doc(doctype, name); + if (!(row.custom || row.__islocal)) { + frappe.msgprint(__("Cannot delete standard link. You can hide it if you want")); + throw "cannot delete standard link"; + } + }, + links_add: function(frm, cdt, cdn) { + let f = frappe.model.get_doc(cdt, cdn); + f.custom = 1; + } +}); + +// can't delete standard actions +frappe.ui.form.on("DocType Action", { + before_actions_remove: function(frm, doctype, name) { + let row = frappe.get_doc(doctype, name); + if (!(row.custom || row.__islocal)) { + frappe.msgprint(__("Cannot delete standard action. You can hide it if you want")); + throw "cannot delete standard action"; + } + }, + actions_add: function(frm, cdt, cdn) { + let f = frappe.model.get_doc(cdt, cdn); + f.custom = 1; + } +}); + frappe.customize_form.set_primary_action = function(frm) { frm.page.set_primary_action(__("Update"), function() { - if(frm.doc.doc_type) { + if (frm.doc.doc_type) { return frm.call({ doc: frm.doc, freeze: true, btn: frm.page.btn_primary, method: "save_customization", callback: function(r) { - if(!r.exc) { + if (!r.exc) { frappe.customize_form.clear_locals_and_refresh(frm); frm.script_manager.trigger("doc_type"); } @@ -180,7 +217,7 @@ frappe.customize_form.set_primary_action = function(frm) { }; frappe.customize_form.confirm = function(msg, frm) { - if(!frm.doc.doc_type) return; + if (!frm.doc.doc_type) return; var d = new frappe.ui.Dialog({ title: 'Reset To Defaults', @@ -192,7 +229,7 @@ frappe.customize_form.confirm = function(msg, frm) { doc: frm.doc, method: "reset_to_defaults", callback: function(r) { - if(r.exc) { + if (r.exc) { frappe.msgprint(r.exc); } else { d.hide(); diff --git a/frappe/custom/doctype/customize_form/customize_form.json b/frappe/custom/doctype/customize_form/customize_form.json index cd57aa23fe..ff102b3c08 100644 --- a/frappe/custom/doctype/customize_form/customize_form.json +++ b/frappe/custom/doctype/customize_form/customize_form.json @@ -10,8 +10,9 @@ "doc_type", "properties", "label", - "default_print_format", "max_attachments", + "search_fields", + "column_break_5", "allow_copy", "istable", "editable_grid", @@ -20,22 +21,27 @@ "track_views", "allow_auto_repeat", "allow_import", - "show_preview_popup", - "image_view", - "column_break_5", + "fields_section_break", + "fields", + "view_settings_section", "title_field", "image_field", - "search_fields", - "section_break_8", - "sort_field", - "column_break_10", - "sort_order", - "section_break_23", + "default_print_format", + "column_break_29", + "show_preview_popup", + "image_view", + "email_settings_section", "email_append_to", "sender_field", "subject_field", - "fields_section_break", - "fields" + "document_actions_section", + "actions", + "document_links_section", + "links", + "section_break_8", + "sort_field", + "column_break_10", + "sort_order" ], "fields": [ { @@ -130,9 +136,11 @@ "label": "Search Fields" }, { + "collapsible": 1, "depends_on": "doc_type", "fieldname": "section_break_8", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "label": "List Settings" }, { "fieldname": "sort_field", @@ -161,7 +169,8 @@ "fieldname": "fields", "fieldtype": "Table", "label": "Fields", - "options": "Customize Form Field" + "options": "Customize Form Field", + "reqd": 1 }, { "default": "0", @@ -200,24 +209,67 @@ "fieldtype": "Check", "label": "Allow document creation via Email" }, - { - "depends_on": "doc_type", - "fieldname": "section_break_23", - "fieldtype": "Section Break" - }, { "default": "0", "fieldname": "show_preview_popup", "fieldtype": "Check", "label": "Show Preview Popup" + }, + { + "collapsible": 1, + "depends_on": "doc_type", + "fieldname": "view_settings_section", + "fieldtype": "Section Break", + "label": "View Settings" + }, + { + "fieldname": "column_break_29", + "fieldtype": "Column Break" + }, + { + "collapsible": 1, + "collapsible_depends_on": "email_append_to", + "depends_on": "doc_type", + "fieldname": "email_settings_section", + "fieldtype": "Section Break", + "label": "Email Settings" + }, + { + "collapsible": 1, + "collapsible_depends_on": "links", + "depends_on": "doc_type", + "fieldname": "document_links_section", + "fieldtype": "Section Break", + "label": "Document Links" + }, + { + "fieldname": "links", + "fieldtype": "Table", + "label": "Links", + "options": "DocType Link" + }, + { + "collapsible": 1, + "collapsible_depends_on": "actions", + "depends_on": "doc_type", + "fieldname": "document_actions_section", + "fieldtype": "Section Break", + "label": "Document Actions" + }, + { + "fieldname": "actions", + "fieldtype": "Table", + "label": "Actions", + "options": "DocType Action" } ], "hide_toolbar": 1, "icon": "fa fa-glass", "idx": 1, + "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2020-04-10 12:16:01.320411", + "modified": "2020-09-24 14:16:49.594012", "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 5c4e16fad7..7f841631e5 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -6,9 +6,10 @@ from __future__ import unicode_literals Customize Form is a Single DocType used to mask the Property Setter Thus providing a better UI from user perspective """ +import json import frappe import frappe.translate -from frappe import _ +from frappe import _, scrub from frappe.utils import cint from frappe.model.document import Document from frappe.model import no_value_fields, core_doctypes_list @@ -16,6 +17,440 @@ from frappe.core.doctype.doctype.doctype import validate_fields_for_doctype, che from frappe.custom.doctype.custom_field.custom_field import create_custom_field from frappe.model.docfield import supports_translation +class CustomizeForm(Document): + def on_update(self): + frappe.db.sql("delete from tabSingles where doctype='Customize Form'") + frappe.db.sql("delete from `tabCustomize Form Field`") + + def fetch_to_customize(self): + self.clear_existing_doc() + if not self.doc_type: + return + + meta = frappe.get_meta(self.doc_type) + + self.validate_doctype(meta) + + # load the meta properties on the customize (self) object + self.load_properties(meta) + + # load custom translation + translation = self.get_name_translation() + self.label = translation.translated_text if translation else '' + + self.create_auto_repeat_custom_field_if_requried(meta) + + # NOTE doc (self) is sent to clientside by run_method + + def validate_doctype(self, meta): + ''' + Check if the doctype is allowed to be customized. + ''' + #if self.doc_type in core_doctypes_list: + # frappe.throw(_("Core DocTypes cannot be customized.")) + + if meta.issingle: + frappe.throw(_("Single DocTypes cannot be customized.")) + + if meta.custom: + frappe.throw(_("Only standard DocTypes are allowed to be customized from Customize Form.")) + + def load_properties(self, meta): + ''' + Load the customize object (this) with the metadata properties + ''' + # doctype properties + for prop in doctype_properties: + self.set(prop, meta.get(prop)) + + for d in meta.get("fields"): + new_d = {"fieldname": d.fieldname, "is_custom_field": d.get("is_custom_field"), "name": d.name} + for prop in docfield_properties: + new_d[prop] = d.get(prop) + self.append("fields", new_d) + + for fieldname in ('links', 'actions'): + for d in meta.get(fieldname): + self.append(fieldname, d) + + def create_auto_repeat_custom_field_if_requried(self, meta): + if self.allow_auto_repeat: + if not frappe.db.exists('Custom Field', {'fieldname': 'auto_repeat', + 'dt': self.doc_type}): + insert_after = self.fields[len(self.fields) - 1].fieldname + df = dict( + fieldname='auto_repeat', + label='Auto Repeat', + fieldtype='Link', + options='Auto Repeat', + insert_after=insert_after, + read_only=1, no_copy=1, print_hide=1) + create_custom_field(self.doc_type, df) + + + def get_name_translation(self): + '''Get translation object if exists of current doctype name in the default language''' + return frappe.get_value('Translation', { + 'source_text': self.doc_type, + 'language': frappe.local.lang or 'en' + }, ['name', 'translated_text'], as_dict=True) + + def set_name_translation(self): + '''Create, update custom translation for this doctype''' + current = self.get_name_translation() + if current: + if self.label and current.translated_text != self.label: + frappe.db.set_value('Translation', current.name, 'translated_text', self.label) + frappe.translate.clear_cache() + else: + # clear translation + frappe.delete_doc('Translation', current.name) + + else: + if self.label: + frappe.get_doc(dict(doctype='Translation', + source_text=self.doc_type, + translated_text=self.label, + language_code=frappe.local.lang or 'en')).insert() + + def clear_existing_doc(self): + doc_type = self.doc_type + + for fieldname in self.meta.get_valid_columns(): + self.set(fieldname, None) + + for df in self.meta.get_table_fields(): + self.set(df.fieldname, []) + + self.doc_type = doc_type + self.name = "Customize Form" + + def save_customization(self): + if not self.doc_type: + return + + self.flags.update_db = False + self.flags.rebuild_doctype_for_global_search = False + self.set_property_setters() + self.update_custom_fields() + self.set_name_translation() + validate_fields_for_doctype(self.doc_type) + check_email_append_to(self) + + if self.flags.update_db: + frappe.db.updatedb(self.doc_type) + + if not hasattr(self, 'hide_success') or not self.hide_success: + frappe.msgprint(_("{0} updated").format(_(self.doc_type)), alert=True) + frappe.clear_cache(doctype=self.doc_type) + self.fetch_to_customize() + + if self.flags.rebuild_doctype_for_global_search: + frappe.enqueue('frappe.utils.global_search.rebuild_for_doctype', + now=True, doctype=self.doc_type) + + def set_property_setters(self): + meta = frappe.get_meta(self.doc_type) + + # doctype + self.set_property_setters_for_doctype(meta) + + # docfield + for df in self.get("fields"): + meta_df = meta.get("fields", {"fieldname": df.fieldname}) + if not meta_df or meta_df[0].get("is_custom_field"): + continue + self.set_property_setters_for_docfield(meta, df, meta_df) + + # action and links + self.set_property_setters_for_actions_and_links(meta) + + def set_property_setters_for_doctype(self, meta): + for prop, prop_type in doctype_properties.items(): + if self.get(prop) != meta.get(prop): + print(prop, self.get(prop), prop_type) + self.make_property_setter(prop, self.get(prop), prop_type) + + def set_property_setters_for_docfield(self, meta, df, meta_df): + for prop, prop_type in docfield_properties.items(): + if prop != "idx" and (df.get(prop) or '') != (meta_df[0].get(prop) or ''): + if not self.allow_property_change(prop, meta_df, df): + continue + + self.make_property_setter(prop, df.get(prop), prop_type, + fieldname=df.fieldname) + + def allow_property_change(self, prop, meta_df, df): + if prop == "fieldtype": + self.validate_fieldtype_change(df, meta_df[0].get(prop), df.get(prop)) + + elif prop == "allow_on_submit" and df.get(prop): + if not frappe.db.get_value("DocField", + {"parent": self.doc_type, "fieldname": df.fieldname}, "allow_on_submit"): + frappe.msgprint(_("Row {0}: Not allowed to enable Allow on Submit for standard fields")\ + .format(df.idx)) + return False + + elif prop == "reqd" and \ + ((frappe.db.get_value("DocField", + {"parent":self.doc_type,"fieldname":df.fieldname}, "reqd") == 1) \ + and (df.get(prop) == 0)): + frappe.msgprint(_("Row {0}: Not allowed to disable Mandatory for standard fields")\ + .format(df.idx)) + return False + + elif prop == "in_list_view" and df.get(prop) \ + and df.fieldtype!="Attach Image" and df.fieldtype in no_value_fields: + frappe.msgprint(_("'In List View' not allowed for type {0} in row {1}") + .format(df.fieldtype, df.idx)) + return False + + elif prop == "precision" and cint(df.get("precision")) > 6 \ + and cint(df.get("precision")) > cint(meta_df[0].get("precision")): + self.flags.update_db = True + + elif prop == "unique": + self.flags.update_db = True + + elif (prop == "read_only" and cint(df.get("read_only"))==0 + and frappe.db.get_value("DocField", {"parent": self.doc_type, + "fieldname": df.fieldname}, "read_only")==1): + # if docfield has read_only checked and user is trying to make it editable, don't allow it + frappe.msgprint(_("You cannot unset 'Read Only' for field {0}").format(df.label)) + return False + + elif prop == "options" and df.get("fieldtype") not in ALLOWED_OPTIONS_CHANGE: + frappe.msgprint(_("You can't set 'Options' for field {0}").format(df.label)) + return False + + elif prop == 'translatable' and not supports_translation(df.get('fieldtype')): + frappe.msgprint(_("You can't set 'Translatable' for field {0}").format(df.label)) + return False + + elif (prop == 'in_global_search' and + df.in_global_search != meta_df[0].get("in_global_search")): + self.flags.rebuild_doctype_for_global_search = True + + return True + + def set_property_setters_for_actions_and_links(self, meta): + ''' + Apply property setters or create custom records for DocType Action and DocType Link + ''' + for doctype, fieldname, field_map in ( + ('DocType Link', 'links', doctype_link_properties), + ('DocType Action', 'actions', doctype_action_properties) + ): + has_custom = False + for d in self.get(fieldname): + if not (d.custom and frappe.db.exists(doctype, d.name)): + # check property and apply property setter + original = frappe.get_doc(doctype, d.name) + for prop, prop_type in field_map.items(): + if d.get(prop) != original.get(prop): + self.make_property_setter(prop, d.get(prop), prop_type, + apply_on=doctype, row_name=d.name) + else: + # add or update custom object + if frappe.db.exists(doctype, d.name): + doc = frappe.get_doc(doctype, d.name) + else: + doc = frappe.new_doc(doctype) + doc.parent = self.doc_type + doc.parenttype = '_Custom' # dummy parenttype since its mandatory + doc.custom = 1 + + for prop, prop_type in field_map.items(): + doc.set(prop, d.get(prop)) + + doc.save(ignore_permissions=True) + has_custom = True + + if has_custom: + # save the order of the actions and links + self.make_property_setter('{}_order'.format(fieldname), + json.dumps([d.name for d in self.get(fieldname)]), 'Small Text') + + + def update_custom_fields(self): + for i, df in enumerate(self.get("fields")): + if df.get("is_custom_field"): + if not frappe.db.exists('Custom Field', {'dt': self.doc_type, 'fieldname': df.fieldname}): + self.add_custom_field(df, i) + self.flags.update_db = True + else: + self.update_in_custom_field(df, i) + + self.delete_custom_fields() + + def add_custom_field(self, df, i): + d = frappe.new_doc("Custom Field") + + d.dt = self.doc_type + + for prop in docfield_properties: + d.set(prop, df.get(prop)) + + if i!=0: + d.insert_after = self.fields[i-1].fieldname + d.idx = i + + d.insert() + df.fieldname = d.fieldname + + def update_in_custom_field(self, df, i): + meta = frappe.get_meta(self.doc_type) + meta_df = meta.get("fields", {"fieldname": df.fieldname}) + if not (meta_df and meta_df[0].get("is_custom_field")): + # not a custom field + return + + custom_field = frappe.get_doc("Custom Field", meta_df[0].name) + changed = False + for prop in docfield_properties: + if df.get(prop) != custom_field.get(prop): + if prop == "fieldtype": + self.validate_fieldtype_change(df, meta_df[0].get(prop), df.get(prop)) + + custom_field.set(prop, df.get(prop)) + changed = True + + # check and update `insert_after` property + if i!=0: + insert_after = self.fields[i-1].fieldname + if custom_field.insert_after != insert_after: + custom_field.insert_after = insert_after + custom_field.idx = i + changed = True + + if changed: + custom_field.db_update() + self.flags.update_db = True + #custom_field.save() + + def delete_custom_fields(self): + meta = frappe.get_meta(self.doc_type) + fields_to_remove = (set([df.fieldname for df in meta.get("fields")]) + - set(df.fieldname for df in self.get("fields"))) + + for fieldname in fields_to_remove: + df = meta.get("fields", {"fieldname": fieldname})[0] + if df.get("is_custom_field"): + frappe.delete_doc("Custom Field", df.name) + + def make_property_setter(self, prop, value, property_type, fieldname=None, + apply_on=None, row_name = None): + self.delete_existing_property_setter(prop, fieldname) + + property_value = self.get_existing_property_value(prop, fieldname) + + if property_value==value: + return + + if not apply_on: + apply_on = "DocField" if fieldname else "DocType" + + # create a new property setter + # ignore validation becuase it will be done at end + frappe.make_property_setter({ + "doctype": self.doc_type, + "doctype_or_field": apply_on, + "fieldname": fieldname, + "row_name": row_name, + "property": prop, + "value": value, + "property_type": property_type + }, ignore_validate=True) + + def delete_existing_property_setter(self, prop, fieldname=None): + # first delete existing property setter + existing_property_setter = frappe.db.get_value("Property Setter", {"doc_type": self.doc_type, + "property": prop, "field_name['']": fieldname or ''}) + + if existing_property_setter: + frappe.db.sql("delete from `tabProperty Setter` where name=%s", existing_property_setter) + + def get_existing_property_value(self, property_name, fieldname=None): + # check if there is any need to make property setter! + if fieldname: + property_value = frappe.db.get_value("DocField", {"parent": self.doc_type, + "fieldname": fieldname}, property_name) + else: + try: + property_value = frappe.db.get_value("DocType", self.doc_type, property_name) + except Exception as e: + if frappe.db.is_column_missing(e): + property_value = None + else: + raise + + return property_value + + def validate_fieldtype_change(self, df, old_value, new_value): + allowed = False + self.check_length_for_fieldtypes = [] + for allowed_changes in ALLOWED_FIELDTYPE_CHANGE: + if (old_value in allowed_changes and new_value in allowed_changes): + allowed = True + old_value_length = cint(frappe.db.type_map.get(old_value)[1]) + new_value_length = cint(frappe.db.type_map.get(new_value)[1]) + + # Ignore fieldtype check validation if new field type has unspecified maxlength + # Changes like DATA to TEXT, where new_value_lenth equals 0 will not be validated + if new_value_length and (old_value_length > new_value_length): + self.check_length_for_fieldtypes.append({'df': df, 'old_value': old_value}) + self.validate_fieldtype_length() + else: + self.flags.update_db = True + break + if not allowed: + frappe.throw(_("Fieldtype cannot be changed from {0} to {1} in row {2}").format(old_value, new_value, df.idx)) + + def validate_fieldtype_length(self): + for field in self.check_length_for_fieldtypes: + df = field.get('df') + max_length = cint(frappe.db.type_map.get(df.fieldtype)[1]) + fieldname = df.fieldname + docs = frappe.db.sql(''' + SELECT name, {fieldname}, LENGTH({fieldname}) AS len + FROM `tab{doctype}` + WHERE LENGTH({fieldname}) > {max_length} + '''.format( + fieldname=fieldname, + doctype=self.doc_type, + max_length=max_length + ), as_dict=True) + links = [] + label = df.label + for doc in docs: + links.append(frappe.utils.get_link_to_form(self.doc_type, doc.name)) + links_str = ', '.join(links) + + if docs: + frappe.throw(_('Value for field {0} is too long in {1}. Length should be lesser than {2} characters') + .format( + frappe.bold(label), + links_str, + frappe.bold(max_length) + ), title=_('Data Too Long'), is_minimizable=len(docs) > 1) + + self.flags.update_db = True + + def reset_to_defaults(self): + if not self.doc_type: + return + + reset_customization(self.doc_type) + self.fetch_to_customize() + +def reset_customization(doctype): + frappe.db.sql(""" + DELETE FROM `tabProperty Setter` WHERE doc_type=%s + and `field_name`!='naming_series' + and `property`!='options' + """, doctype) + frappe.clear_cache(doctype=doctype) + doctype_properties = { 'search_fields': 'Data', 'title_field': 'Data', @@ -82,356 +517,31 @@ docfield_properties = { 'hide_seconds': 'Check' } -allowed_fieldtype_change = (('Currency', 'Float', 'Percent'), ('Small Text', 'Data'), - ('Text', 'Data'), ('Text', 'Text Editor', 'Code', 'Signature', 'HTML Editor'), ('Data', 'Select'), - ('Text', 'Small Text'), ('Text', 'Data', 'Barcode'), ('Code', 'Geolocation'), ('Table', 'Table MultiSelect')) - -allowed_fieldtype_for_options_change = ('Read Only', 'HTML', 'Select', 'Data') - -class CustomizeForm(Document): - def on_update(self): - frappe.db.sql("delete from tabSingles where doctype='Customize Form'") - frappe.db.sql("delete from `tabCustomize Form Field`") - - def fetch_to_customize(self): - self.clear_existing_doc() - if not self.doc_type: - return - - meta = frappe.get_meta(self.doc_type) - - if self.doc_type in core_doctypes_list: - return frappe.msgprint(_("Core DocTypes cannot be customized.")) - - if meta.issingle: - return frappe.msgprint(_("Single DocTypes cannot be customized.")) - - if meta.custom: - return frappe.msgprint(_("Only standard DocTypes are allowed to be customized from Customize Form.")) - - # doctype properties - for property in doctype_properties: - self.set(property, meta.get(property)) - - for d in meta.get("fields"): - new_d = {"fieldname": d.fieldname, "is_custom_field": d.get("is_custom_field"), "name": d.name} - for property in docfield_properties: - new_d[property] = d.get(property) - self.append("fields", new_d) - - # load custom translation - translation = self.get_name_translation() - self.label = translation.translated_text if translation else '' - - #If allow_auto_repeat is set, add auto_repeat custom field. - if self.allow_auto_repeat: - if not frappe.db.exists('Custom Field', {'fieldname': 'auto_repeat', 'dt': self.doc_type}): - insert_after = self.fields[len(self.fields) - 1].fieldname - df = dict(fieldname='auto_repeat', label='Auto Repeat', fieldtype='Link', options='Auto Repeat', insert_after=insert_after, read_only=1, no_copy=1, print_hide=1) - create_custom_field(self.doc_type, df) - - # NOTE doc is sent to clientside by run_method - - def get_name_translation(self): - '''Get translation object if exists of current doctype name in the default language''' - return frappe.get_value('Translation', { - 'source_text': self.doc_type, - 'language': frappe.local.lang or 'en' - }, ['name', 'translated_text'], as_dict=True) - - def set_name_translation(self): - '''Create, update custom translation for this doctype''' - current = self.get_name_translation() - if current: - if self.label and current.translated_text != self.label: - frappe.db.set_value('Translation', current.name, 'translated_text', self.label) - frappe.translate.clear_cache() - else: - # clear translation - frappe.delete_doc('Translation', current.name) - - else: - if self.label: - frappe.get_doc(dict(doctype='Translation', - source_text=self.doc_type, - translated_text=self.label, - language_code=frappe.local.lang or 'en')).insert() - - def clear_existing_doc(self): - doc_type = self.doc_type - - for fieldname in self.meta.get_valid_columns(): - self.set(fieldname, None) - - for df in self.meta.get_table_fields(): - self.set(df.fieldname, []) - - self.doc_type = doc_type - self.name = "Customize Form" - - def save_customization(self): - if not self.doc_type: - return - - self.flags.update_db = False - self.flags.rebuild_doctype_for_global_search = False - self.set_property_setters() - self.update_custom_fields() - self.set_name_translation() - validate_fields_for_doctype(self.doc_type) - check_email_append_to(self) - - if self.flags.update_db: - frappe.db.updatedb(self.doc_type) - - if not hasattr(self, 'hide_success') or not self.hide_success: - frappe.msgprint(_("{0} updated").format(_(self.doc_type)), alert=True) - frappe.clear_cache(doctype=self.doc_type) - self.fetch_to_customize() - - if self.flags.rebuild_doctype_for_global_search: - frappe.enqueue('frappe.utils.global_search.rebuild_for_doctype', - now=True, doctype=self.doc_type) - - def set_property_setters(self): - meta = frappe.get_meta(self.doc_type) - # doctype property setters - - for property in doctype_properties: - if self.get(property) != meta.get(property): - self.make_property_setter(property=property, value=self.get(property), - property_type=doctype_properties[property]) - - for df in self.get("fields"): - meta_df = meta.get("fields", {"fieldname": df.fieldname}) - - if not meta_df or meta_df[0].get("is_custom_field"): - continue - - for property in docfield_properties: - if property != "idx" and (df.get(property) or '') != (meta_df[0].get(property) or ''): - if property == "fieldtype": - self.validate_fieldtype_change(df, meta_df[0].get(property), df.get(property)) - - elif property == "allow_on_submit" and df.get(property): - if not frappe.db.get_value("DocField", - {"parent": self.doc_type, "fieldname": df.fieldname}, "allow_on_submit"): - frappe.msgprint(_("Row {0}: Not allowed to enable Allow on Submit for standard fields")\ - .format(df.idx)) - continue - - elif property == "reqd" and \ - ((frappe.db.get_value("DocField", - {"parent":self.doc_type,"fieldname":df.fieldname}, "reqd") == 1) \ - and (df.get(property) == 0)): - frappe.msgprint(_("Row {0}: Not allowed to disable Mandatory for standard fields")\ - .format(df.idx)) - continue - - elif property == "in_list_view" and df.get(property) \ - and df.fieldtype!="Attach Image" and df.fieldtype in no_value_fields: - frappe.msgprint(_("'In List View' not allowed for type {0} in row {1}") - .format(df.fieldtype, df.idx)) - continue - - elif property == "precision" and cint(df.get("precision")) > 6 \ - and cint(df.get("precision")) > cint(meta_df[0].get("precision")): - self.flags.update_db = True - - elif property == "unique": - self.flags.update_db = True - - elif (property == "read_only" and cint(df.get("read_only"))==0 - and frappe.db.get_value("DocField", {"parent": self.doc_type, "fieldname": df.fieldname}, "read_only")==1): - # if docfield has read_only checked and user is trying to make it editable, don't allow it - frappe.msgprint(_("You cannot unset 'Read Only' for field {0}").format(df.label)) - continue - - elif property == "options" and df.get("fieldtype") not in allowed_fieldtype_for_options_change: - frappe.msgprint(_("You can't set 'Options' for field {0}").format(df.label)) - continue - - elif property == 'translatable' and not supports_translation(df.get('fieldtype')): - frappe.msgprint(_("You can't set 'Translatable' for field {0}").format(df.label)) - continue - - elif (property == 'in_global_search' and - df.in_global_search != meta_df[0].get("in_global_search")): - self.flags.rebuild_doctype_for_global_search = True - - self.make_property_setter(property=property, value=df.get(property), - property_type=docfield_properties[property], fieldname=df.fieldname) - - def update_custom_fields(self): - for i, df in enumerate(self.get("fields")): - if df.get("is_custom_field"): - if not frappe.db.exists('Custom Field', {'dt': self.doc_type, 'fieldname': df.fieldname}): - self.add_custom_field(df, i) - self.flags.update_db = True - else: - self.update_in_custom_field(df, i) - - self.delete_custom_fields() - - def add_custom_field(self, df, i): - d = frappe.new_doc("Custom Field") - - d.dt = self.doc_type - - for property in docfield_properties: - d.set(property, df.get(property)) - - if i!=0: - d.insert_after = self.fields[i-1].fieldname - d.idx = i - - d.insert() - df.fieldname = d.fieldname - - def update_in_custom_field(self, df, i): - meta = frappe.get_meta(self.doc_type) - meta_df = meta.get("fields", {"fieldname": df.fieldname}) - if not (meta_df and meta_df[0].get("is_custom_field")): - # not a custom field - return - - custom_field = frappe.get_doc("Custom Field", meta_df[0].name) - changed = False - for property in docfield_properties: - if df.get(property) != custom_field.get(property): - if property == "fieldtype": - self.validate_fieldtype_change(df, meta_df[0].get(property), df.get(property)) - - custom_field.set(property, df.get(property)) - changed = True - - # check and update `insert_after` property - if i!=0: - insert_after = self.fields[i-1].fieldname - if custom_field.insert_after != insert_after: - custom_field.insert_after = insert_after - custom_field.idx = i - changed = True - - if changed: - custom_field.db_update() - self.flags.update_db = True - #custom_field.save() - - def delete_custom_fields(self): - meta = frappe.get_meta(self.doc_type) - fields_to_remove = (set([df.fieldname for df in meta.get("fields")]) - - set(df.fieldname for df in self.get("fields"))) - - for fieldname in fields_to_remove: - df = meta.get("fields", {"fieldname": fieldname})[0] - if df.get("is_custom_field"): - frappe.delete_doc("Custom Field", df.name) - - def make_property_setter(self, property, value, property_type, fieldname=None): - self.delete_existing_property_setter(property, fieldname) - - property_value = self.get_existing_property_value(property, fieldname) - - if property_value==value: - return - - # create a new property setter - # ignore validation becuase it will be done at end - frappe.make_property_setter({ - "doctype": self.doc_type, - "doctype_or_field": "DocField" if fieldname else "DocType", - "fieldname": fieldname, - "property": property, - "value": value, - "property_type": property_type - }, ignore_validate=True) - - def delete_existing_property_setter(self, property, fieldname=None): - # first delete existing property setter - existing_property_setter = frappe.db.get_value("Property Setter", {"doc_type": self.doc_type, - "property": property, "field_name['']": fieldname or ''}) - - if existing_property_setter: - frappe.db.sql("delete from `tabProperty Setter` where name=%s", existing_property_setter) - - def get_existing_property_value(self, property_name, fieldname=None): - # check if there is any need to make property setter! - if fieldname: - property_value = frappe.db.get_value("DocField", {"parent": self.doc_type, - "fieldname": fieldname}, property_name) - else: - try: - property_value = frappe.db.get_value("DocType", self.doc_type, property_name) - except Exception as e: - if frappe.db.is_column_missing(e): - property_value = None - else: - raise - - return property_value - - def validate_fieldtype_change(self, df, old_value, new_value): - allowed = False - self.check_length_for_fieldtypes = [] - for allowed_changes in allowed_fieldtype_change: - if (old_value in allowed_changes and new_value in allowed_changes): - allowed = True - old_value_length = cint(frappe.db.type_map.get(old_value)[1]) - new_value_length = cint(frappe.db.type_map.get(new_value)[1]) - - # Ignore fieldtype check validation if new field type has unspecified maxlength - # Changes like DATA to TEXT, where new_value_lenth equals 0 will not be validated - if new_value_length and (old_value_length > new_value_length): - self.check_length_for_fieldtypes.append({'df': df, 'old_value': old_value}) - self.validate_fieldtype_length() - else: - self.flags.update_db = True - break - if not allowed: - frappe.throw(_("Fieldtype cannot be changed from {0} to {1} in row {2}").format(old_value, new_value, df.idx)) - - def validate_fieldtype_length(self): - for field in self.check_length_for_fieldtypes: - df = field.get('df') - max_length = cint(frappe.db.type_map.get(df.fieldtype)[1]) - fieldname = df.fieldname - docs = frappe.db.sql(''' - SELECT name, {fieldname}, LENGTH({fieldname}) AS len - FROM `tab{doctype}` - WHERE LENGTH({fieldname}) > {max_length} - '''.format( - fieldname=fieldname, - doctype=self.doc_type, - max_length=max_length - ), as_dict=True) - links = [] - label = df.label - for doc in docs: - links.append(frappe.utils.get_link_to_form(self.doc_type, doc.name)) - links_str = ', '.join(links) - - if docs: - frappe.throw(_('Value for field {0} is too long in {1}. Length should be lesser than {2} characters') - .format( - frappe.bold(label), - links_str, - frappe.bold(max_length) - ), title=_('Data Too Long'), is_minimizable=len(docs) > 1) - - self.flags.update_db = True - - def reset_to_defaults(self): - if not self.doc_type: - return - - reset_customization(self.doc_type) - self.fetch_to_customize() - -def reset_customization(doctype): - frappe.db.sql(""" - DELETE FROM `tabProperty Setter` WHERE doc_type=%s - and `field_name`!='naming_series' - and `property`!='options' - """, doctype) - frappe.clear_cache(doctype=doctype) \ No newline at end of file +doctype_link_properties = { + 'link_doctype': 'Link', + 'link_fieldname': 'Data', + 'group': 'Data', + 'hidden': 'Check' +} + +doctype_action_properties = { + 'label': 'Link', + 'action_type': 'Select', + 'action': 'Small Text', + 'group': 'Data', + 'hidden': 'Check' +} + + +ALLOWED_FIELDTYPE_CHANGE = ( + ('Currency', 'Float', 'Percent'), + ('Small Text', 'Data'), + ('Text', 'Data'), + ('Text', 'Text Editor', 'Code', 'Signature', 'HTML Editor'), + ('Data', 'Select'), + ('Text', 'Small Text'), + ('Text', 'Data', 'Barcode'), + ('Code', 'Geolocation'), + ('Table', 'Table MultiSelect')) + +ALLOWED_OPTIONS_CHANGE = ('Read Only', 'HTML', 'Select', 'Data') diff --git a/frappe/custom/doctype/customize_form_field/customize_form_field.json b/frappe/custom/doctype/customize_form_field/customize_form_field.json index 1c7349ef01..1d71e1d1e3 100644 --- a/frappe/custom/doctype/customize_form_field/customize_form_field.json +++ b/frappe/custom/doctype/customize_form_field/customize_form_field.json @@ -11,8 +11,6 @@ "label", "fieldtype", "fieldname", - "hide_seconds", - "hide_days", "reqd", "unique", "in_list_view", @@ -23,6 +21,7 @@ "allow_in_quick_entry", "translatable", "column_break_7", + "default", "precision", "length", "options", @@ -47,8 +46,9 @@ "column_break_33", "read_only_depends_on", "display", - "default", "in_filter", + "hide_seconds", + "hide_days", "column_break_21", "description", "print_hide", @@ -100,6 +100,7 @@ "depends_on": "eval:!in_list([\"Section Break\", \"Column Break\", \"Button\", \"HTML\"], doc.fieldtype)", "fieldname": "reqd", "fieldtype": "Check", + "in_list_view": 1, "label": "Mandatory", "oldfieldname": "reqd", "oldfieldtype": "Check", @@ -283,7 +284,7 @@ }, { "fieldname": "default", - "fieldtype": "Text", + "fieldtype": "Small Text", "label": "Default", "oldfieldname": "default", "oldfieldtype": "Text" @@ -419,7 +420,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-08-28 11:28:59.084060", + "modified": "2020-09-24 14:05:31.093927", "modified_by": "Administrator", "module": "Custom", "name": "Customize Form Field", diff --git a/frappe/custom/doctype/property_setter/property_setter.json b/frappe/custom/doctype/property_setter/property_setter.json index 5888e11969..b318d92c5a 100644 --- a/frappe/custom/doctype/property_setter/property_setter.json +++ b/frappe/custom/doctype/property_setter/property_setter.json @@ -1,358 +1,133 @@ { - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "beta": 0, - "creation": "2013-01-10 16:34:04", - "custom": 0, - "description": "Property Setter overrides a standard DocType or Field property", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Setup", - "editable_grid": 0, - "engine": "InnoDB", + "actions": [], + "creation": "2013-01-10 16:34:04", + "description": "Property Setter overrides a standard DocType or Field property", + "doctype": "DocType", + "document_type": "Setup", + "engine": "InnoDB", + "field_order": [ + "help", + "sb0", + "doctype_or_field", + "doc_type", + "field_name", + "row_name", + "column_break0", + "property", + "property_type", + "value", + "default_value" + ], "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "help", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Help", - "length": 0, - "no_copy": 0, - "options": "
    Please don't update it as it can mess up your form. Use the Customize Form View and Custom Fields to set properties!
    ", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "help", + "fieldtype": "HTML", + "label": "Help", + "options": "
    Please don't update it as it can mess up your form. Use the Customize Form View and Custom Fields to set properties!
    " + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "sb0", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "sb0", + "fieldtype": "Section Break" + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "eval:doc.__islocal", - "fieldname": "doctype_or_field", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "in_standard_filter": 1, - "label": "DocType or Field", - "length": 0, - "no_copy": 0, - "options": "\nDocField\nDocType", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "doctype_or_field", + "fieldtype": "Select", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Applied On", + "options": "\nDocField\nDocType\nDocType Link\nDocType Action", + "read_only_depends_on": "eval:!doc.__islocal", + "reqd": 1 + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "New value to be set", - "fieldname": "value", - "fieldtype": "Text", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Set Value", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "description": "New value to be set", + "fieldname": "value", + "fieldtype": "Small Text", + "in_list_view": 1, + "label": "Set Value" + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break0", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "column_break0", + "fieldtype": "Column Break" + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "doc_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 1, - "label": "DocType", - "length": 0, - "no_copy": 0, - "options": "DocType", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "doc_type", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "DocType", + "options": "DocType", + "reqd": 1, + "search_index": 1 + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "eval:doc.doctype_or_field=='DocField'", - "description": "ID (name) of the entity whose property is to be set", - "fieldname": "field_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 1, - "label": "Field Name", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, - "unique": 0 - }, + "depends_on": "eval:doc.doctype_or_field=='DocField'", + "description": "ID (name) of the entity whose property is to be set", + "fieldname": "field_name", + "fieldtype": "Data", + "in_standard_filter": 1, + "label": "Field Name", + "search_index": 1 + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "property", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 1, - "label": "Property", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "property", + "fieldtype": "Data", + "in_standard_filter": 1, + "label": "Property", + "reqd": 1, + "search_index": 1 + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "property_type", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Property Type", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "property_type", + "fieldtype": "Data", + "label": "Property Type" + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "default_value", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Default Value", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 + "fieldname": "default_value", + "fieldtype": "Data", + "label": "Default Value" + }, + { + "description": "For DocType Link / DocType Action", + "fieldname": "row_name", + "fieldtype": "Data", + "label": "Row Name" } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "fa fa-glass", - "idx": 1, - "image_view": 0, - "in_create": 0, - - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2016-12-29 14:39:50.172883", - "modified_by": "Administrator", - "module": "Custom", - "name": "Property Setter", - "owner": "Administrator", + ], + "icon": "fa fa-glass", + "idx": 1, + "index_web_pages_for_search": 1, + "links": [], + "modified": "2020-09-24 14:42:38.599684", + "modified_by": "Administrator", + "module": "Custom", + "name": "Property Setter", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "is_custom": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Administrator", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Administrator", + "share": 1, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "is_custom": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, "write": 1 } - ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "search_fields": "doc_type,property", - "sort_order": "DESC", - "track_changes": 1, - "track_seen": 0 + ], + "search_fields": "doc_type,property", + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 } \ No newline at end of file diff --git a/frappe/custom/doctype/property_setter/property_setter.py b/frappe/custom/doctype/property_setter/property_setter.py index d8ab5ede73..9ffa48b084 100644 --- a/frappe/custom/doctype/property_setter/property_setter.py +++ b/frappe/custom/doctype/property_setter/property_setter.py @@ -11,9 +11,11 @@ not_allowed_fieldtype_change = ['naming_series'] class PropertySetter(Document): def autoname(self): - self.name = self.doc_type + "-" \ - + (self.field_name and (self.field_name + "-") or "") \ - + self.property + self.name = '{doctype}-{field}-{property}'.format( + doctype = self.doc_type, + field = self.field_name or self.row_name or 'main', + property = self.property + ) def validate(self): self.validate_fieldtype_change() diff --git a/frappe/email/doctype/email_group/email_group.js b/frappe/email/doctype/email_group/email_group.js index 63c3832b47..404600c97d 100644 --- a/frappe/email/doctype/email_group/email_group.js +++ b/frappe/email/doctype/email_group/email_group.js @@ -3,11 +3,6 @@ frappe.ui.form.on("Email Group", "refresh", function(frm) { if(!frm.is_new()) { - frm.add_custom_button(__("View Subscribers"), function() { - frappe.route_options = {"email_group": frm.doc.name}; - frappe.set_route("List", "Email Group Member"); - }, __("View")); - frm.add_custom_button(__("Import Subscribers"), function() { frappe.prompt({fieldtype:"Select", options: frm.doc.__onload.import_types, label:__("Import Email From"), fieldname:"doctype", reqd:1}, diff --git a/frappe/email/doctype/email_group/email_group.json b/frappe/email/doctype/email_group/email_group.json index 0d784d409a..c49de841e6 100644 --- a/frappe/email/doctype/email_group/email_group.json +++ b/frappe/email/doctype/email_group/email_group.json @@ -5,6 +5,7 @@ "creation": "2015-03-18 06:08:32.729800", "doctype": "DocType", "document_type": "Setup", + "engine": "InnoDB", "field_order": [ "title", "total_subscribers", @@ -41,8 +42,15 @@ "options": "Email Template" } ], - "links": [], - "modified": "2020-02-21 14:12:48.884738", + "index_web_pages_for_search": 1, + "links": [ + { + "group": "Members", + "link_doctype": "Email Group Member", + "link_fieldname": "email_group" + } + ], + "modified": "2020-09-24 16:41:55.286377", "modified_by": "Administrator", "module": "Email", "name": "Email Group", diff --git a/frappe/model/dynamic_links.py b/frappe/model/dynamic_links.py index e5ce9102e2..7404ba407e 100644 --- a/frappe/model/dynamic_links.py +++ b/frappe/model/dynamic_links.py @@ -42,9 +42,12 @@ def get_dynamic_link_map(for_delete=False): # always check in Single DocTypes dynamic_link_map.setdefault(meta.name, []).append(df) else: - links = frappe.db.sql_list("""select distinct {options} from `tab{parent}`""".format(**df)) - for doctype in links: - dynamic_link_map.setdefault(doctype, []).append(df) + try: + links = frappe.db.sql_list("""select distinct {options} from `tab{parent}`""".format(**df)) + for doctype in links: + dynamic_link_map.setdefault(doctype, []).append(df) + except frappe.db.TableMissingError: # noqa: E722 + pass frappe.local.dynamic_link_map = dynamic_link_map return frappe.local.dynamic_link_map diff --git a/frappe/model/meta.py b/frappe/model/meta.py index 1cc3abba5b..18b781519f 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -19,7 +19,7 @@ from __future__ import unicode_literals, print_function from datetime import datetime from six.moves import range import frappe, json, os -from frappe.utils import cstr, cint +from frappe.utils import cstr, cint, cast_fieldtype from frappe.model import default_fields, no_value_fields, optional_fields, data_fieldtypes, table_fields from frappe.model.document import Document from frappe.model.base_document import BaseDocument @@ -103,6 +103,7 @@ class Meta(Document): self.sort_fields() self.get_valid_columns() self.set_custom_permissions() + self.add_custom_links_and_actions() def as_dict(self, no_nulls = False): def serialize(doc): @@ -305,6 +306,11 @@ class Meta(Document): self.extend("fields", custom_fields) def apply_property_setters(self): + """ + Property Setters are set via Customize Form. They override standard properties + of the doctype or its child properties like fields, links etc. This method + applies the customized properties over the standard meta object + """ if not frappe.db.table_exists('Property Setter'): return @@ -313,26 +319,50 @@ class Meta(Document): if not property_setters: return - integer_docfield_properties = [d.fieldname for d in frappe.get_meta('DocField').fields - if d.fieldtype in ('Int', 'Check')] - for ps in property_setters: if ps.doctype_or_field=='DocType': - if ps.property_type in ('Int', 'Check'): - ps.value = cint(ps.value) + self.set(ps.property, cast_fieldtype(ps.property_type, ps.value)) - self.set(ps.property, ps.value) - else: - docfield = self.get("fields", {"fieldname":ps.field_name}, limit=1) - if docfield: - docfield = docfield[0] - else: - continue + elif ps.doctype_or_field=='DocField': + for d in self.fields: + if d.fieldname == ps.fieldname: + d.set(ps.property, cast_fieldtype(ps.property_type, ps.value)) + break - if ps.property in integer_docfield_properties: - ps.value = cint(ps.value) + elif ps.doctype_or_field=='DocType Link': + for d in self.links: + if d.name == ps.row_name: + d.set(ps.property, cast_fieldtype(ps.property_type, ps.value)) + break - docfield.set(ps.property, ps.value) + elif ps.doctype_or_field=='DocType Action': + for d in self.actions: + if d.name == ps.row_name: + d.set(ps.property, cast_fieldtype(ps.property_type, ps.value)) + break + + def add_custom_links_and_actions(self): + for doctype, fieldname in (('DocType Link', 'links'), ('DocType Action', 'actions')): + for d in frappe.get_all(doctype, dict(parent=self.name, custom=1)): + self.get(fieldname).append(d) + + # set the fields in order if specified + # order is saved as `links_order` + order = json.loads(self.get('{}_order'.format(fieldname)) or '[]') + if order: + name_map = {d.name:d for d in self.get(fieldname)} + new_list = [] + for name in order: + new_list.append(name_map[name]) + name_map[name].__added = True + + # add the missing items that have not be added + # maybe these items were added to the standard product + # after the customization was done + for d in self.get(fieldname): + if not d.__added: new_list.append(d) + + self.set(fieldname, new_list) def sort_fields(self): """sort on basis of insert_after""" @@ -458,6 +488,9 @@ class Meta(Document): for link in dashboard_links: link.added = False + if link.hidden: + continue + for group in data.transactions: group = frappe._dict(group) # group found From 77e79c050f143e844f27eab1e38cadef64992339 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 29 Sep 2020 10:46:44 +0530 Subject: [PATCH 20/46] fix(linting) --- frappe/app.py | 2 +- frappe/custom/doctype/customize_form/customize_form.js | 4 +++- frappe/custom/doctype/customize_form/customize_form.py | 2 +- frappe/website/doctype/blog_category/blog_category.json | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/frappe/app.py b/frappe/app.py index 2c8dcec26b..1dccb3e7e2 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -159,7 +159,7 @@ def handle_exception(e): response = None http_status_code = getattr(e, "http_status_code", 500) return_as_message = False - print(frappe.get_traceback()) + # print(frappe.get_traceback()) if frappe.get_request_header('Accept') and (frappe.local.is_ajax or 'application/json' in frappe.get_request_header('Accept')): # handle ajax responses first diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index 7dfec0b0b0..0a2b02e6c7 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -138,7 +138,9 @@ frappe.ui.form.on("Customize Form", { // sort order select if (frm.doc.doc_type) { var fields = $.map(frm.doc.fields, - function(df) { return frappe.model.is_value_type(df.fieldtype) ? df.fieldname : null; }); + function(df) { + return frappe.model.is_value_type(df.fieldtype) ? df.fieldname : null; + }); fields = ["", "name", "modified"].concat(fields); frm.set_df_property("sort_field", "options", fields); } diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 7f841631e5..fb4ba1bcd6 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -9,7 +9,7 @@ from __future__ import unicode_literals import json import frappe import frappe.translate -from frappe import _, scrub +from frappe import _ from frappe.utils import cint from frappe.model.document import Document from frappe.model import no_value_fields, core_doctypes_list diff --git a/frappe/website/doctype/blog_category/blog_category.json b/frappe/website/doctype/blog_category/blog_category.json index 67e17f49fb..2931107d8f 100644 --- a/frappe/website/doctype/blog_category/blog_category.json +++ b/frappe/website/doctype/blog_category/blog_category.json @@ -43,7 +43,7 @@ "index_web_pages_for_search": 1, "is_published_field": "published", "links": [], - "modified": "2020-08-21 11:40:36.919321", + "modified": "2020-09-29 10:45:48.810348", "modified_by": "Administrator", "module": "Website", "name": "Blog Category", @@ -69,6 +69,7 @@ } ], "quick_entry": 1, + "route": "/category", "sort_field": "modified", "sort_order": "DESC", "title_field": "title", From b5cb39bdb12e5c36f3146ee13384887e1eae368b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 29 Sep 2020 16:41:39 +0530 Subject: [PATCH 21/46] fix(minor): fix fieldame in apply_property_setters in model/meta.py --- frappe/model/meta.py | 2 +- frappe/patches/v13_0/web_template_set_module.py | 5 +++++ frappe/tests/test_form_load.py | 5 ++++- frappe/website/doctype/blog_category/blog_category.json | 3 +-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frappe/model/meta.py b/frappe/model/meta.py index 18b781519f..af0f574fcf 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -325,7 +325,7 @@ class Meta(Document): elif ps.doctype_or_field=='DocField': for d in self.fields: - if d.fieldname == ps.fieldname: + if d.fieldname == ps.field_name: d.set(ps.property, cast_fieldtype(ps.property_type, ps.value)) break diff --git a/frappe/patches/v13_0/web_template_set_module.py b/frappe/patches/v13_0/web_template_set_module.py index df008557d8..10e80eeffc 100644 --- a/frappe/patches/v13_0/web_template_set_module.py +++ b/frappe/patches/v13_0/web_template_set_module.py @@ -6,9 +6,14 @@ import frappe def execute(): """Set default module for standard Web Template, if none.""" +<<<<<<< d5ee3032d494ed35a409a36116679a3d3cb96103 frappe.reload_doc('website', 'doctype', 'Web Template Field') frappe.reload_doc('website', 'doctype', 'web_template') +======= + frappe.reload_doc('website', 'doctype', 'Web Template') + frappe.reload_doc('website', 'doctype', 'Web Template Field') +>>>>>>> fix(minor): fix fieldame in apply_property_setters in model/meta.py standard_templates = frappe.get_list('Web Template', {'standard': 1}) for template in standard_templates: doc = frappe.get_doc('Web Template', template.name) diff --git a/frappe/tests/test_form_load.py b/frappe/tests/test_form_load.py index 78562e1055..c962b192b3 100644 --- a/frappe/tests/test_form_load.py +++ b/frappe/tests/test_form_load.py @@ -57,6 +57,7 @@ class TestFormLoad(unittest.TestCase): # have write access on `published` field (or on permlevel 1 fields) blog_doc.published = 1 blog_doc.save() + # since published field has higher permlevel self.assertEqual(blog_doc.published, 0) @@ -94,7 +95,7 @@ class TestFormLoad(unittest.TestCase): user.remove_roles(*user_roles) user.add_roles('Accounts User') - make_property_setter('Contact Phone', 'phone', 'permlevel', 1, 'Data') + make_property_setter('Contact Phone', 'phone', 'permlevel', 1, 'Int') reset('Contact Phone') add('Contact', 'Sales User', 1) update('Contact', 'Sales User', 1, 'write', 1) @@ -124,6 +125,8 @@ class TestFormLoad(unittest.TestCase): user.remove_roles('Accounts User', 'Sales User') user.add_roles(*user_roles) + contact.delete() + def get_blog(blog_name): frappe.response.docs = [] diff --git a/frappe/website/doctype/blog_category/blog_category.json b/frappe/website/doctype/blog_category/blog_category.json index 2931107d8f..a65a7cba29 100644 --- a/frappe/website/doctype/blog_category/blog_category.json +++ b/frappe/website/doctype/blog_category/blog_category.json @@ -43,7 +43,7 @@ "index_web_pages_for_search": 1, "is_published_field": "published", "links": [], - "modified": "2020-09-29 10:45:48.810348", + "modified": "2020-09-29 10:48:36.886753", "modified_by": "Administrator", "module": "Website", "name": "Blog Category", @@ -69,7 +69,6 @@ } ], "quick_entry": 1, - "route": "/category", "sort_field": "modified", "sort_order": "DESC", "title_field": "title", From 8a198f363bd0a62b74b62f36f1418d17940c0036 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 29 Sep 2020 23:27:00 +0530 Subject: [PATCH 22/46] fix(default): cast as string as required --- frappe/core/doctype/doctype/doctype.py | 4 ++-- frappe/database/schema.py | 2 +- frappe/model/create_new.py | 6 +++--- frappe/tests/test_db_update.py | 3 ++- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py index 1aa6beb6a6..92b27e410d 100644 --- a/frappe/core/doctype/doctype/doctype.py +++ b/frappe/core/doctype/doctype/doctype.py @@ -752,8 +752,8 @@ def validate_fields(meta): def check_illegal_default(d): if d.fieldtype == "Check" and not d.default: d.default = '0' - if d.fieldtype == "Check" and d.default not in ('0', '1'): - frappe.throw(_("Default for 'Check' type of field must be either '0' or '1'")) + if d.fieldtype == "Check" and cint(d.default) not in (0, 1): + frappe.throw(_("Default for 'Check' type of field {0} must be either '0' or '1'".format(frappe.bold(d.fieldname)))) if d.fieldtype == "Select" and d.default: if not d.options: frappe.throw(_("Options for {0} must be set before setting the default value.").format(frappe.bold(d.fieldname))) diff --git a/frappe/database/schema.py b/frappe/database/schema.py index 52dc2ba917..daabbaa61c 100644 --- a/frappe/database/schema.py +++ b/frappe/database/schema.py @@ -186,7 +186,7 @@ class DbColumn: column_def += ' not null default {0}'.format(default_value) elif self.default and (self.default not in frappe.db.DEFAULT_SHORTCUTS) \ - and not self.default.startswith(":") and column_def not in ('text', 'longtext'): + and not cstr(self.default).startswith(":") and column_def not in ('text', 'longtext'): column_def += " default {}".format(frappe.db.escape(self.default)) if self.unique and (column_def not in ('text', 'longtext')): diff --git a/frappe/model/create_new.py b/frappe/model/create_new.py index fcf648e718..e0087a9e40 100644 --- a/frappe/model/create_new.py +++ b/frappe/model/create_new.py @@ -10,7 +10,7 @@ import copy import frappe import frappe.defaults from frappe.model import data_fieldtypes -from frappe.utils import nowdate, nowtime, now_datetime +from frappe.utils import nowdate, nowtime, now_datetime, cstr from frappe.core.doctype.user_permission.user_permission import get_user_permissions from frappe.permissions import filter_allowed_docs_for_doctype @@ -99,7 +99,7 @@ def get_static_default_value(df, doctype_user_permissions, allowed_records): elif df.default == "Today": return nowdate() - elif not df.default.startswith(":"): + elif not cstr(df.default).startswith(":"): # a simple default value is_allowed_default_value = (not user_permissions_exist(df, doctype_user_permissions) or (df.default in allowed_records)) @@ -116,7 +116,7 @@ def set_dynamic_default_values(doc, parent_doc, parentfield): for df in frappe.get_meta(doc["doctype"]).get("fields"): if df.get("default"): - if df.default.startswith(":"): + if cstr(df.default).startswith(":"): default_value = get_default_based_on_another_field(df, user_permissions, parent_doc) if default_value is not None and not doc.get(df.fieldname): doc[df.fieldname] = default_value diff --git a/frappe/tests/test_db_update.py b/frappe/tests/test_db_update.py index f243aa268f..4ae33a2fab 100644 --- a/frappe/tests/test_db_update.py +++ b/frappe/tests/test_db_update.py @@ -1,6 +1,7 @@ import unittest import frappe +from frappe.utils import cstr from frappe.core.utils import find from frappe.custom.doctype.property_setter.property_setter import make_property_setter @@ -31,7 +32,7 @@ class TestDBUpdate(unittest.TestCase): default = field_def.default if field_def.default is not None else fallback_default self.assertEqual(fieldtype, table_column.type) - self.assertIn(table_column.default or 'NULL', [default, "'{}'".format(default)]) + self.assertIn(cstr(table_column.default) or 'NULL', [cstr(default), "'{}'".format(default)]) def get_fieldtype_from_def(field_def): fieldtuple = frappe.db.type_map.get(field_def.fieldtype, ('', 0)) From a0a3606a7f8f5cda5cdc2ee44f2c6deabddb5f4f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 13:09:55 +0530 Subject: [PATCH 23/46] fix(tests): add test cases for custom_link and custom_action --- frappe/app.py | 5 +- frappe/core/doctype/doctype/test_doctype.py | 82 ++++++++++--------- .../doctype/customize_form/customize_form.js | 12 +-- .../doctype/customize_form/customize_form.py | 61 +++++++++----- .../customize_form/test_customize_form.py | 71 ++++++++++++++++ frappe/database/database.py | 6 +- frappe/model/meta.py | 11 +-- 7 files changed, 173 insertions(+), 75 deletions(-) diff --git a/frappe/app.py b/frappe/app.py index 1dccb3e7e2..82471c4e32 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -159,7 +159,10 @@ def handle_exception(e): response = None http_status_code = getattr(e, "http_status_code", 500) return_as_message = False - # print(frappe.get_traceback()) + + if frappe.conf.get('developer_mode'): + # don't fail silently + print(frappe.get_traceback()) if frappe.get_request_header('Accept') and (frappe.local.is_ajax or 'application/json' in frappe.get_request_header('Accept')): # handle ajax responses first diff --git a/frappe/core/doctype/doctype/test_doctype.py b/frappe/core/doctype/doctype/test_doctype.py index 00e80ce4e7..6f4a400577 100644 --- a/frappe/core/doctype/doctype/test_doctype.py +++ b/frappe/core/doctype/doctype/test_doctype.py @@ -12,41 +12,22 @@ from frappe.core.doctype.doctype.doctype import UniqueFieldnameError, IllegalMan class TestDocType(unittest.TestCase): - def new_doctype(self, name, unique=0, depends_on=''): - return frappe.get_doc({ - "doctype": "DocType", - "module": "Core", - "custom": 1, - "fields": [{ - "label": "Some Field", - "fieldname": "some_fieldname", - "fieldtype": "Data", - "unique": unique, - "depends_on": depends_on, - }], - "permissions": [{ - "role": "System Manager", - "read": 1, - }], - "name": name - }) - def test_validate_name(self): - self.assertRaises(frappe.NameError, self.new_doctype("_Some DocType").insert) - self.assertRaises(frappe.NameError, self.new_doctype("8Some DocType").insert) - self.assertRaises(frappe.NameError, self.new_doctype("Some (DocType)").insert) + self.assertRaises(frappe.NameError, new_doctype("_Some DocType").insert) + self.assertRaises(frappe.NameError, new_doctype("8Some DocType").insert) + self.assertRaises(frappe.NameError, new_doctype("Some (DocType)").insert) for name in ("Some DocType", "Some_DocType"): if frappe.db.exists("DocType", name): frappe.delete_doc("DocType", name) - doc = self.new_doctype(name).insert() + doc = new_doctype(name).insert() doc.delete() def test_doctype_unique_constraint_dropped(self): if frappe.db.exists("DocType", "With_Unique"): frappe.delete_doc("DocType", "With_Unique") - dt = self.new_doctype("With_Unique", unique=1) + dt = new_doctype("With_Unique", unique=1) dt.insert() doc1 = frappe.new_doc("With_Unique") @@ -67,7 +48,7 @@ class TestDocType(unittest.TestCase): doc2.delete() def test_validate_search_fields(self): - doc = self.new_doctype("Test Search Fields") + doc = new_doctype("Test Search Fields") doc.search_fields = "some_fieldname" doc.insert() self.assertEqual(doc.name, "Test Search Fields") @@ -85,7 +66,7 @@ class TestDocType(unittest.TestCase): self.assertRaises(frappe.ValidationError, doc.save) def test_depends_on_fields(self): - doc = self.new_doctype("Test Depends On", depends_on="eval:doc.__islocal == 0") + doc = new_doctype("Test Depends On", depends_on="eval:doc.__islocal == 0") doc.insert() # check if the assignment operation is allowed in depends_on @@ -261,7 +242,7 @@ class TestDocType(unittest.TestCase): frappe.flags.allow_doctype_export = 0 def test_unique_field_name_for_two_fields(self): - doc = self.new_doctype('Test Unique Field') + doc = new_doctype('Test Unique Field') field_1 = doc.append('fields', {}) field_1.fieldname = 'some_fieldname_1' field_1.fieldtype = 'Data' @@ -273,7 +254,7 @@ class TestDocType(unittest.TestCase): self.assertRaises(UniqueFieldnameError, doc.insert) def test_fieldname_is_not_name(self): - doc = self.new_doctype('Test Name Field') + doc = new_doctype('Test Name Field') field_1 = doc.append('fields', {}) field_1.label = 'Name' field_1.fieldtype = 'Data' @@ -283,7 +264,7 @@ class TestDocType(unittest.TestCase): self.assertRaises(InvalidFieldNameError, doc.save) def test_illegal_mandatory_validation(self): - doc = self.new_doctype('Test Illegal mandatory') + doc = new_doctype('Test Illegal mandatory') field_1 = doc.append('fields', {}) field_1.fieldname = 'some_fieldname_1' field_1.fieldtype = 'Section Break' @@ -292,7 +273,7 @@ class TestDocType(unittest.TestCase): self.assertRaises(IllegalMandatoryError, doc.insert) def test_link_with_wrong_and_no_options(self): - doc = self.new_doctype('Test link') + doc = new_doctype('Test link') field_1 = doc.append('fields', {}) field_1.fieldname = 'some_fieldname_1' field_1.fieldtype = 'Link' @@ -304,7 +285,7 @@ class TestDocType(unittest.TestCase): self.assertRaises(WrongOptionsDoctypeLinkError, doc.insert) def test_hidden_and_mandatory_without_default(self): - doc = self.new_doctype('Test hidden and mandatory') + doc = new_doctype('Test hidden and mandatory') field_1 = doc.append('fields', {}) field_1.fieldname = 'some_fieldname_1' field_1.fieldtype = 'Data' @@ -314,7 +295,7 @@ class TestDocType(unittest.TestCase): self.assertRaises(HiddenAndMandatoryWithoutDefaultError, doc.insert) def test_field_can_not_be_indexed_validation(self): - doc = self.new_doctype('Test index') + doc = new_doctype('Test index') field_1 = doc.append('fields', {}) field_1.fieldname = 'some_fieldname_1' field_1.fieldtype = 'Long Text' @@ -327,14 +308,14 @@ class TestDocType(unittest.TestCase): from frappe.desk.form.linked_with import get_submitted_linked_docs, cancel_all_linked_docs #create doctype - link_doc = self.new_doctype('Test Linked Doctype') + link_doc = new_doctype('Test Linked Doctype') link_doc.is_submittable = 1 for data in link_doc.get('permissions'): data.submit = 1 data.cancel = 1 link_doc.insert() - doc = self.new_doctype('Test Doctype') + doc = new_doctype('Test Doctype') doc.is_submittable = 1 field_2 = doc.append('fields', {}) field_2.label = 'Test Linked Doctype' @@ -377,12 +358,12 @@ class TestDocType(unittest.TestCase): doc.delete() frappe.db.commit() - def test_ignore_cancelation_of_linked_doctype_during_cancell(self): + def test_ignore_cancelation_of_linked_doctype_during_cancel(self): import json from frappe.desk.form.linked_with import get_submitted_linked_docs, cancel_all_linked_docs #create linked doctype - link_doc = self.new_doctype('Test Linked Doctype 1') + link_doc = new_doctype('Test Linked Doctype 1') link_doc.is_submittable = 1 for data in link_doc.get('permissions'): data.submit = 1 @@ -390,7 +371,7 @@ class TestDocType(unittest.TestCase): link_doc.insert() #create first parent doctype - test_doc_1 = self.new_doctype('Test Doctype 1') + test_doc_1 = new_doctype('Test Doctype 1') test_doc_1.is_submittable = 1 field_2 = test_doc_1.append('fields', {}) @@ -405,7 +386,7 @@ class TestDocType(unittest.TestCase): test_doc_1.insert() #crete second parent doctype - doc = self.new_doctype('Test Doctype 2') + doc = new_doctype('Test Doctype 2') doc.is_submittable = 1 field_2 = doc.append('fields', {}) @@ -469,3 +450,28 @@ class TestDocType(unittest.TestCase): doc.delete() test_doc_1.delete() frappe.db.commit() + +def new_doctype(name, unique=0, depends_on='', fields=None): + doc = frappe.get_doc({ + "doctype": "DocType", + "module": "Core", + "custom": 1, + "fields": [{ + "label": "Some Field", + "fieldname": "some_fieldname", + "fieldtype": "Data", + "unique": unique, + "depends_on": depends_on, + }], + "permissions": [{ + "role": "System Manager", + "read": 1, + }], + "name": name + }) + + if fields: + for f in fields: + doc.append('fields', f) + + return doc \ No newline at end of file diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index 0a2b02e6c7..6b0fbb042d 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -94,19 +94,19 @@ frappe.ui.form.on("Customize Form", { frm.add_custom_button(__('Go to {0} List', [frm.doc.doc_type]), function() { frappe.set_route('List', frm.doc.doc_type); - }); + }, __('Actions')); - frm.add_custom_button(__('Refresh Form'), function() { + frm.add_custom_button(__('Reload'), function() { frm.script_manager.trigger("doc_type"); - }, "fa fa-refresh", "btn-default"); + }, __('Actions')); frm.add_custom_button(__('Reset to defaults'), function() { frappe.customize_form.confirm(__('Remove all customizations?'), frm); - }, "fa fa-eraser", "btn-default"); + }, __('Actions')); frm.add_custom_button(__('Set Permissions'), function() { frappe.set_route('permission-manager', frm.doc.doc_type); - }, "fa fa-lock", "btn-default"); + }, __('Actions')); if (frappe.boot.developer_mode) { frm.add_custom_button(__('Export Customizations'), function() { @@ -131,7 +131,7 @@ frappe.ui.form.on("Customize Form", { }); }, __("Select Module")); - }); + }, __('Actions')); } } diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index fb4ba1bcd6..034b98a7c2 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -46,8 +46,8 @@ class CustomizeForm(Document): ''' Check if the doctype is allowed to be customized. ''' - #if self.doc_type in core_doctypes_list: - # frappe.throw(_("Core DocTypes cannot be customized.")) + if self.doc_type in core_doctypes_list: + frappe.throw(_("Core DocTypes cannot be customized.")) if meta.issingle: frappe.throw(_("Single DocTypes cannot be customized.")) @@ -71,7 +71,7 @@ class CustomizeForm(Document): for fieldname in ('links', 'actions'): for d in meta.get(fieldname): - self.append(fieldname, d) + d1 = self.append(fieldname, d) def create_auto_repeat_custom_field_if_requried(self, meta): if self.allow_auto_repeat: @@ -242,35 +242,52 @@ class CustomizeForm(Document): ('DocType Action', 'actions', doctype_action_properties) ): has_custom = False - for d in self.get(fieldname): - if not (d.custom and frappe.db.exists(doctype, d.name)): + items = [] + for i, d in enumerate(self.get(fieldname) or []): + d.idx = i + if frappe.db.exists(doctype, d.name) and not d.custom: # check property and apply property setter original = frappe.get_doc(doctype, d.name) for prop, prop_type in field_map.items(): if d.get(prop) != original.get(prop): self.make_property_setter(prop, d.get(prop), prop_type, apply_on=doctype, row_name=d.name) + items.append(d.name) else: - # add or update custom object - if frappe.db.exists(doctype, d.name): - doc = frappe.get_doc(doctype, d.name) - else: - doc = frappe.new_doc(doctype) - doc.parent = self.doc_type - doc.parenttype = '_Custom' # dummy parenttype since its mandatory - doc.custom = 1 - - for prop, prop_type in field_map.items(): - doc.set(prop, d.get(prop)) - - doc.save(ignore_permissions=True) + # custom - just insert/update + d.parent = self.doc_type + d.custom = 1 + d.save(ignore_permissions=True) has_custom = True + items.append(d.name) - if has_custom: - # save the order of the actions and links - self.make_property_setter('{}_order'.format(fieldname), - json.dumps([d.name for d in self.get(fieldname)]), 'Small Text') + self.update_order_property_setter(has_custom, fieldname) + self.clear_removed_items(doctype, items) + def update_order_property_setter(self, has_custom, fieldname): + ''' + We need to maintain the order of the link/actions if the user has shuffled them. + So we create a new property (ex `links_order`) to keep a list of items. + ''' + property_name = '{}_order'.format(fieldname) + if has_custom: + # save the order of the actions and links + self.make_property_setter(property_name, + json.dumps([d.name for d in self.get(fieldname)]), 'Small Text') + else: + frappe.db.delete('Property Setter', dict(property=property_name, + doc_type=self.doc_type)) + + + def clear_removed_items(self, doctype, items): + ''' + Clear rows that do not appear in `items`. These have been removed by the user. + ''' + if items: + frappe.db.delete(doctype, dict(parent=self.doc_type, custom=1, + name=('not in', items))) + else: + frappe.db.delete(doctype, dict(parent=self.doc_type, custom=1)) def update_custom_fields(self): for i, df in enumerate(self.get("fields")): diff --git a/frappe/custom/doctype/customize_form/test_customize_form.py b/frappe/custom/doctype/customize_form/test_customize_form.py index cace25a03d..b631c81d96 100644 --- a/frappe/custom/doctype/customize_form/test_customize_form.py +++ b/frappe/custom/doctype/customize_form/test_customize_form.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import frappe, unittest, json from frappe.test_runner import make_test_records_for_doctype from frappe.core.doctype.doctype.doctype import InvalidFieldNameError +from frappe.core.doctype.doctype.test_doctype import new_doctype test_dependencies = ["Custom Field", "Property Setter"] class TestCustomizeForm(unittest.TestCase): @@ -191,3 +192,73 @@ class TestCustomizeForm(unittest.TestCase): # core doctype is invalid, hence no attributes are set self.assertEquals(d.get("fields"), []) self.assertEquals(e.get("fields"), []) + + def test_custom_link(self): + try: + # create a dummy doctype linked to Event + testdt_name = 'Test Link for Event' + testdt = new_doctype(testdt_name, fields=[ + dict(fieldtype='Link', fieldname='event', options='Event') + ]).insert() + + testdt_name1 = 'Test Link for Event 1' + testdt1 = new_doctype(testdt_name1, fields=[ + dict(fieldtype='Link', fieldname='event', options='Event') + ]).insert() + + # add a custom link + d = self.get_customize_form("Event") + + d.append('links', dict(link_doctype=testdt_name, link_fieldname='event', group='Tests')) + d.append('links', dict(link_doctype=testdt_name1, link_fieldname='event', group='Tests')) + d.run_method("save_customization") + + frappe.clear_cache() + event = frappe.get_meta('Event') + + # check links exist + self.assertTrue([d.name for d in event.links if d.link_doctype == testdt_name]) + self.assertTrue([d.name for d in event.links if d.link_doctype == testdt_name1]) + + # check order + order = json.loads(event.links_order) + self.assertListEqual(order, [d.name for d in event.links]) + + # remove the link + d = self.get_customize_form("Event") + d.links = [] + d.run_method("save_customization") + + frappe.clear_cache() + event = frappe.get_meta('Event') + self.assertFalse([d.name for d in (event.links or []) if d.link_doctype == testdt_name]) + finally: + testdt.delete() + testdt1.delete() + + def test_custom_action(self): + test_route = '#List/DocType' + + # create a dummy action (route) + d = self.get_customize_form("Event") + d.append('actions', dict(label='Test Action', action_type='Route', action=test_route)) + d.run_method("save_customization") + + frappe.clear_cache() + event = frappe.get_meta('Event') + + # check if added to meta + action = [d for d in event.actions if d.label=='Test Action'] + self.assertEqual(len(action), 1) + self.assertEqual(action[0].action, test_route) + + # clear the action + d = self.get_customize_form("Event") + d.actions = [] + d.run_method("save_customization") + + frappe.clear_cache() + event = frappe.get_meta('Event') + + action = [d for d in event.actions if d.label=='Test Action'] + self.assertEqual(len(action), 0) diff --git a/frappe/database/database.py b/frappe/database/database.py index d9755abd33..f94f19c62b 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -341,7 +341,7 @@ class Database(object): value = filters.get(key) values[key] = value if isinstance(value, (list, tuple)): - # value is a tuble like ("!=", 0) + # value is a tuple like ("!=", 0) _operator = value[0] values[key] = value[1] if isinstance(value[1], (tuple, list)): @@ -959,13 +959,13 @@ class Database(object): query = sql_dict.get(current_dialect) return self.sql(query, values, **kwargs) - def delete(self, doctype, conditions): + def delete(self, doctype, conditions, debug=False): if conditions: conditions, values = self.build_conditions(conditions) return self.sql("DELETE FROM `tab{doctype}` where {conditions}".format( doctype=doctype, conditions=conditions - ), values) + ), values, debug=debug) else: frappe.throw(_('No conditions provided')) diff --git a/frappe/model/meta.py b/frappe/model/meta.py index af0f574fcf..8aa761ac21 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -343,8 +343,8 @@ class Meta(Document): def add_custom_links_and_actions(self): for doctype, fieldname in (('DocType Link', 'links'), ('DocType Action', 'actions')): - for d in frappe.get_all(doctype, dict(parent=self.name, custom=1)): - self.get(fieldname).append(d) + for d in frappe.get_all(doctype, fields='*', filters=dict(parent=self.name, custom=1)): + self.append(fieldname, d) # set the fields in order if specified # order is saved as `links_order` @@ -353,14 +353,15 @@ class Meta(Document): name_map = {d.name:d for d in self.get(fieldname)} new_list = [] for name in order: - new_list.append(name_map[name]) - name_map[name].__added = True + if name in name_map: + new_list.append(name_map[name]) # add the missing items that have not be added # maybe these items were added to the standard product # after the customization was done for d in self.get(fieldname): - if not d.__added: new_list.append(d) + if not d in new_list: + new_list.append(d) self.set(fieldname, new_list) From 6f0104b67e4d2734050f7dc1de279dd9824c7ead Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 13:15:14 +0530 Subject: [PATCH 24/46] fix(minor): conflict --- frappe/patches/v13_0/web_template_set_module.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/frappe/patches/v13_0/web_template_set_module.py b/frappe/patches/v13_0/web_template_set_module.py index 10e80eeffc..df008557d8 100644 --- a/frappe/patches/v13_0/web_template_set_module.py +++ b/frappe/patches/v13_0/web_template_set_module.py @@ -6,14 +6,9 @@ import frappe def execute(): """Set default module for standard Web Template, if none.""" -<<<<<<< d5ee3032d494ed35a409a36116679a3d3cb96103 frappe.reload_doc('website', 'doctype', 'Web Template Field') frappe.reload_doc('website', 'doctype', 'web_template') -======= - frappe.reload_doc('website', 'doctype', 'Web Template') - frappe.reload_doc('website', 'doctype', 'Web Template Field') ->>>>>>> fix(minor): fix fieldame in apply_property_setters in model/meta.py standard_templates = frappe.get_list('Web Template', {'standard': 1}) for template in standard_templates: doc = frappe.get_doc('Web Template', template.name) From 473471bedca18dc83029592e1a56528074204bfd Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 15:15:08 +0530 Subject: [PATCH 25/46] fix(tests): assert raises validation --- frappe/custom/doctype/customize_form/customize_form.js | 2 +- .../custom/doctype/customize_form/test_customize_form.py | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index 6b0fbb042d..2d220b864c 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -12,7 +12,7 @@ frappe.ui.form.on("Customize Form", { filters: [ ['DocType', 'issingle', '=', 0], ['DocType', 'custom', '=', 0], - //['DocType', 'name', 'not in', frappe.model.core_doctypes_list], + ['DocType', 'name', 'not in', frappe.model.core_doctypes_list], ['DocType', 'restrict_to_domain', 'in', frappe.boot.active_domains] ] }; diff --git a/frappe/custom/doctype/customize_form/test_customize_form.py b/frappe/custom/doctype/customize_form/test_customize_form.py index b631c81d96..19bbc78e0e 100644 --- a/frappe/custom/doctype/customize_form/test_customize_form.py +++ b/frappe/custom/doctype/customize_form/test_customize_form.py @@ -186,12 +186,7 @@ class TestCustomizeForm(unittest.TestCase): d.run_method("save_customization") def test_core_doctype_customization(self): - d = self.get_customize_form('User') - e = self.get_customize_form('Custom Field') - - # core doctype is invalid, hence no attributes are set - self.assertEquals(d.get("fields"), []) - self.assertEquals(e.get("fields"), []) + self.assertRaises(frappe.ValidationError, self.get_customize_form, 'User') def test_custom_link(self): try: From 92c30ae2123493717dc28dbfd660fbea61bc5277 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 17:39:01 +0530 Subject: [PATCH 26/46] fix(minor): linting --- frappe/custom/doctype/customize_form/customize_form.py | 2 +- frappe/model/meta.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 034b98a7c2..889fa3f537 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -71,7 +71,7 @@ class CustomizeForm(Document): for fieldname in ('links', 'actions'): for d in meta.get(fieldname): - d1 = self.append(fieldname, d) + self.append(fieldname, d) def create_auto_repeat_custom_field_if_requried(self, meta): if self.allow_auto_repeat: diff --git a/frappe/model/meta.py b/frappe/model/meta.py index 8aa761ac21..4299876a77 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -360,7 +360,7 @@ class Meta(Document): # maybe these items were added to the standard product # after the customization was done for d in self.get(fieldname): - if not d in new_list: + if d not in new_list: new_list.append(d) self.set(fieldname, new_list) From 7f9284f3efd0e31d3236f2464ee6901d880d380a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 23:14:48 +0530 Subject: [PATCH 27/46] fix(tests): postgres gotcha, errors will rollback? --- .../doctype/customize_form/customize_form.py | 23 ++++--------------- .../customize_form/test_customize_form.py | 1 + .../property_setter/property_setter.py | 10 ++++---- frappe/database/database.py | 11 ++------- 4 files changed, 12 insertions(+), 33 deletions(-) diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 889fa3f537..e6c2840e08 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -168,7 +168,6 @@ class CustomizeForm(Document): def set_property_setters_for_doctype(self, meta): for prop, prop_type in doctype_properties.items(): if self.get(prop) != meta.get(prop): - print(prop, self.get(prop), prop_type) self.make_property_setter(prop, self.get(prop), prop_type) def set_property_setters_for_docfield(self, meta, df, meta_df): @@ -357,8 +356,6 @@ class CustomizeForm(Document): def make_property_setter(self, prop, value, property_type, fieldname=None, apply_on=None, row_name = None): - self.delete_existing_property_setter(prop, fieldname) - property_value = self.get_existing_property_value(prop, fieldname) if property_value==value: @@ -368,7 +365,6 @@ class CustomizeForm(Document): apply_on = "DocField" if fieldname else "DocType" # create a new property setter - # ignore validation becuase it will be done at end frappe.make_property_setter({ "doctype": self.doc_type, "doctype_or_field": apply_on, @@ -377,15 +373,7 @@ class CustomizeForm(Document): "property": prop, "value": value, "property_type": property_type - }, ignore_validate=True) - - def delete_existing_property_setter(self, prop, fieldname=None): - # first delete existing property setter - existing_property_setter = frappe.db.get_value("Property Setter", {"doc_type": self.doc_type, - "property": prop, "field_name['']": fieldname or ''}) - - if existing_property_setter: - frappe.db.sql("delete from `tabProperty Setter` where name=%s", existing_property_setter) + }) def get_existing_property_value(self, property_name, fieldname=None): # check if there is any need to make property setter! @@ -393,13 +381,10 @@ class CustomizeForm(Document): property_value = frappe.db.get_value("DocField", {"parent": self.doc_type, "fieldname": fieldname}, property_name) else: - try: + if frappe.db.has_column(self.doc_type, property_name): property_value = frappe.db.get_value("DocType", self.doc_type, property_name) - except Exception as e: - if frappe.db.is_column_missing(e): - property_value = None - else: - raise + else: + property_value = None return property_value diff --git a/frappe/custom/doctype/customize_form/test_customize_form.py b/frappe/custom/doctype/customize_form/test_customize_form.py index 19bbc78e0e..73d0747015 100644 --- a/frappe/custom/doctype/customize_form/test_customize_form.py +++ b/frappe/custom/doctype/customize_form/test_customize_form.py @@ -206,6 +206,7 @@ class TestCustomizeForm(unittest.TestCase): d.append('links', dict(link_doctype=testdt_name, link_fieldname='event', group='Tests')) d.append('links', dict(link_doctype=testdt_name1, link_fieldname='event', group='Tests')) + d.run_method("save_customization") frappe.clear_cache() diff --git a/frappe/custom/doctype/property_setter/property_setter.py b/frappe/custom/doctype/property_setter/property_setter.py index 9ffa48b084..a1368155b8 100644 --- a/frappe/custom/doctype/property_setter/property_setter.py +++ b/frappe/custom/doctype/property_setter/property_setter.py @@ -32,11 +32,11 @@ class PropertySetter(Document): def delete_property_setter(self): """delete other property setters on this, if this is new""" if self.get('__islocal'): - frappe.db.sql("""delete from `tabProperty Setter` where - doctype_or_field = %(doctype_or_field)s - and doc_type = %(doc_type)s - and coalesce(field_name,'') = coalesce(%(field_name)s, '') - and property = %(property)s""", self.get_valid_dict()) + filters = dict(doc_type = self.doc_type, property=self.property) + if self.field_name: + dict['field_name'] = self.field_name + + frappe.db.delete('Property Setter', filters) def get_property_list(self, dt): return frappe.db.get_all('DocField', diff --git a/frappe/database/database.py b/frappe/database/database.py index f94f19c62b..64b234b1d3 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -319,8 +319,7 @@ class Database(object): nres.append(nr) return nres - @staticmethod - def build_conditions(filters): + def build_conditions(self, filters): """Convert filters sent as dict, lists to SQL conditions. filter's key is passed by map function, build conditions like: @@ -346,13 +345,7 @@ class Database(object): values[key] = value[1] if isinstance(value[1], (tuple, list)): # value is a list in tuple ("in", ("A", "B")) - inner_list = [] - for i, v in enumerate(value[1]): - inner_key = "{0}_{1}".format(key, i) - values[inner_key] = v - inner_list.append("%({0})s".format(inner_key)) - - _rhs = " ({0})".format(", ".join(inner_list)) + _rhs = " ({0})".format(", ".join([self.escape(v) for v in value[1]])) del values[key] if _operator not in ["=", "!=", ">", ">=", "<", "<=", "like", "in", "not in", "not like"]: From 1add636324e68d751d49438a655680256e3b4e25 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 23:25:09 +0530 Subject: [PATCH 28/46] fix(tests): fix translation string --- frappe/core/doctype/doctype/doctype.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py index 92b27e410d..8a9c130fbe 100644 --- a/frappe/core/doctype/doctype/doctype.py +++ b/frappe/core/doctype/doctype/doctype.py @@ -753,7 +753,7 @@ def validate_fields(meta): if d.fieldtype == "Check" and not d.default: d.default = '0' if d.fieldtype == "Check" and cint(d.default) not in (0, 1): - frappe.throw(_("Default for 'Check' type of field {0} must be either '0' or '1'".format(frappe.bold(d.fieldname)))) + frappe.throw(_("Default for 'Check' type of field {0} must be either '0' or '1'").format(frappe.bold(d.fieldname))) if d.fieldtype == "Select" and d.default: if not d.options: frappe.throw(_("Options for {0} must be set before setting the default value.").format(frappe.bold(d.fieldname))) From 963046296521a3eb8813e6eaf2a45b0953845df2 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 13 Oct 2020 23:39:58 +0530 Subject: [PATCH 29/46] fix(minor): typo --- frappe/custom/doctype/property_setter/property_setter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/custom/doctype/property_setter/property_setter.py b/frappe/custom/doctype/property_setter/property_setter.py index a1368155b8..83c0337074 100644 --- a/frappe/custom/doctype/property_setter/property_setter.py +++ b/frappe/custom/doctype/property_setter/property_setter.py @@ -34,7 +34,7 @@ class PropertySetter(Document): if self.get('__islocal'): filters = dict(doc_type = self.doc_type, property=self.property) if self.field_name: - dict['field_name'] = self.field_name + filters['field_name'] = self.field_name frappe.db.delete('Property Setter', filters) From 08fe29714d0271516f8b6ab03644f125d0d805ea Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 14 Oct 2020 09:21:08 +0530 Subject: [PATCH 30/46] fix(minor): delete property setter --- .../doctype/customize_form/customize_form.py | 5 ++++- .../customize_form/test_customize_form.py | 1 + .../property_setter/property_setter.py | 21 ++++++++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index e6c2840e08..61ecdd88b9 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -15,6 +15,7 @@ from frappe.model.document import Document from frappe.model import no_value_fields, core_doctypes_list from frappe.core.doctype.doctype.doctype import validate_fields_for_doctype, check_email_append_to from frappe.custom.doctype.custom_field.custom_field import create_custom_field +from frappe.custom.doctype.property_setter.property_setter import delete_property_setter from frappe.model.docfield import supports_translation class CustomizeForm(Document): @@ -356,6 +357,8 @@ class CustomizeForm(Document): def make_property_setter(self, prop, value, property_type, fieldname=None, apply_on=None, row_name = None): + delete_property_setter(self.doc_type, prop, fieldname) + property_value = self.get_existing_property_value(prop, fieldname) if property_value==value: @@ -381,7 +384,7 @@ class CustomizeForm(Document): property_value = frappe.db.get_value("DocField", {"parent": self.doc_type, "fieldname": fieldname}, property_name) else: - if frappe.db.has_column(self.doc_type, property_name): + if frappe.db.has_column("DocType", property_name): property_value = frappe.db.get_value("DocType", self.doc_type, property_name) else: property_value = None diff --git a/frappe/custom/doctype/customize_form/test_customize_form.py b/frappe/custom/doctype/customize_form/test_customize_form.py index 73d0747015..46a2f2f9df 100644 --- a/frappe/custom/doctype/customize_form/test_customize_form.py +++ b/frappe/custom/doctype/customize_form/test_customize_form.py @@ -25,6 +25,7 @@ class TestCustomizeForm(unittest.TestCase): def setUp(self): self.insert_custom_field() + frappe.db.delete('Property Setter', dict(doc_type='Event')) frappe.db.commit() frappe.clear_cache(doctype="Event") diff --git a/frappe/custom/doctype/property_setter/property_setter.py b/frappe/custom/doctype/property_setter/property_setter.py index 83c0337074..56e5829271 100644 --- a/frappe/custom/doctype/property_setter/property_setter.py +++ b/frappe/custom/doctype/property_setter/property_setter.py @@ -19,7 +19,8 @@ class PropertySetter(Document): def validate(self): self.validate_fieldtype_change() - self.delete_property_setter() + if self.is_new(): + delete_property_setter(self.doc_type, self.property, self.field_name) # clear cache frappe.clear_cache(doctype = self.doc_type) @@ -29,15 +30,6 @@ class PropertySetter(Document): self.property == 'fieldtype': frappe.throw(_("Field type cannot be changed for {0}").format(self.field_name)) - def delete_property_setter(self): - """delete other property setters on this, if this is new""" - if self.get('__islocal'): - filters = dict(doc_type = self.doc_type, property=self.property) - if self.field_name: - filters['field_name'] = self.field_name - - frappe.db.delete('Property Setter', filters) - def get_property_list(self, dt): return frappe.db.get_all('DocField', fields=['fieldname', 'label', 'fieldtype'], @@ -91,3 +83,12 @@ def make_property_setter(doctype, fieldname, property, value, property_type, for property_setter.flags.validate_fields_for_doctype = validate_fields_for_doctype property_setter.insert() return property_setter + +def delete_property_setter(doc_type, property, field_name=None): + """delete other property setters on this, if this is new""" + filters = dict(doc_type = doc_type, property=property) + if field_name: + filters['field_name'] = field_name + + frappe.db.delete('Property Setter', filters) + From 8707ed1f2760c87ddafa2ec2c22aec0d67d98428 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 19 Oct 2020 15:18:14 +0530 Subject: [PATCH 31/46] fix(minor): remove "Custom Link" and add patch --- frappe/custom/doctype/custom_link/__init__.py | 0 .../custom/doctype/custom_link/custom_link.js | 20 ------- .../doctype/custom_link/custom_link.json | 52 ------------------- .../custom/doctype/custom_link/custom_link.py | 10 ---- .../doctype/custom_link/test_custom_link.py | 10 ---- frappe/database/database.py | 3 ++ frappe/model/meta.py | 3 -- frappe/patches.txt | 1 + frappe/patches/v13_0/remove_custom_link.py | 15 ++++++ 9 files changed, 19 insertions(+), 95 deletions(-) delete mode 100644 frappe/custom/doctype/custom_link/__init__.py delete mode 100644 frappe/custom/doctype/custom_link/custom_link.js delete mode 100644 frappe/custom/doctype/custom_link/custom_link.json delete mode 100644 frappe/custom/doctype/custom_link/custom_link.py delete mode 100644 frappe/custom/doctype/custom_link/test_custom_link.py create mode 100644 frappe/patches/v13_0/remove_custom_link.py diff --git a/frappe/custom/doctype/custom_link/__init__.py b/frappe/custom/doctype/custom_link/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/custom/doctype/custom_link/custom_link.js b/frappe/custom/doctype/custom_link/custom_link.js deleted file mode 100644 index 8662724b1a..0000000000 --- a/frappe/custom/doctype/custom_link/custom_link.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) 2020, Frappe Technologies and contributors -// For license information, please see license.txt - -frappe.ui.form.on('Custom Link', { - refresh: function(frm) { - frm.set_query("document_type", function () { - return { - filters: { - custom: 0, - istable: 0, - module: ['not in', ["Email", "Core", "Custom", "Event Streaming", "Social", "Data Migration", "Geo", "Desk"]] - } - }; - }); - - frm.add_custom_button(__('Go to {0} List', [frm.doc.document_type]), function() { - frappe.set_route('List', frm.doc.document_type); - }); - } -}); diff --git a/frappe/custom/doctype/custom_link/custom_link.json b/frappe/custom/doctype/custom_link/custom_link.json deleted file mode 100644 index 350e6b1c2d..0000000000 --- a/frappe/custom/doctype/custom_link/custom_link.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "actions": [], - "autoname": "field:document_type", - "creation": "2020-04-08 15:16:44.342509", - "doctype": "DocType", - "editable_grid": 1, - "engine": "InnoDB", - "field_order": [ - "document_type", - "links" - ], - "fields": [ - { - "fieldname": "document_type", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Document Type", - "options": "DocType", - "reqd": 1, - "unique": 1 - }, - { - "fieldname": "links", - "fieldtype": "Table", - "label": "Links", - "options": "DocType Link" - } - ], - "links": [], - "modified": "2020-04-08 16:42:59.402671", - "modified_by": "Administrator", - "module": "Custom", - "name": "Custom Link", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "share": 1, - "write": 1 - } - ], - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 1 -} \ No newline at end of file diff --git a/frappe/custom/doctype/custom_link/custom_link.py b/frappe/custom/doctype/custom_link/custom_link.py deleted file mode 100644 index 11316d5751..0000000000 --- a/frappe/custom/doctype/custom_link/custom_link.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2020, Frappe Technologies and contributors -# For license information, please see license.txt - -from __future__ import unicode_literals -# import frappe -from frappe.model.document import Document - -class CustomLink(Document): - pass diff --git a/frappe/custom/doctype/custom_link/test_custom_link.py b/frappe/custom/doctype/custom_link/test_custom_link.py deleted file mode 100644 index a292f73ad0..0000000000 --- a/frappe/custom/doctype/custom_link/test_custom_link.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2020, Frappe Technologies and Contributors -# See license.txt -from __future__ import unicode_literals - -# import frappe -import unittest - -class TestCustomLink(unittest.TestCase): - pass diff --git a/frappe/database/database.py b/frappe/database/database.py index 64b234b1d3..616dd3c3ec 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -780,6 +780,9 @@ class Database(object): """Returns True if table for given doctype exists.""" return ("tab" + doctype) in self.get_tables() + def has_table(self, doctype): + return self.table_exists(doctype) + def get_tables(self): tables = frappe.cache().get_value('db_tables') if not tables: diff --git a/frappe/model/meta.py b/frappe/model/meta.py index 4299876a77..cdd4b34ae8 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -479,9 +479,6 @@ class Meta(Document): if hasattr(self, 'links') and self.links: dashboard_links.extend(self.links) - if frappe.get_all("Custom Link", {"document_type": self.name}): - dashboard_links.extend(frappe.get_doc("Custom Link", self.name).links) - if not data.transactions: # init groups data.transactions = [] diff --git a/frappe/patches.txt b/frappe/patches.txt index 05f067f4b9..2202557b40 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -313,3 +313,4 @@ frappe.patches.v13_0.update_newsletter_content_type execute:frappe.db.set_value('Website Settings', 'Website Settings', {'navbar_template': 'Standard Navbar', 'footer_template': 'Standard Footer'}) frappe.patches.v13_0.delete_event_producer_and_consumer_keys frappe.patches.v13_0.web_template_set_module #2020-10-05 +frappe.patches.v13_0.remove_custom_link diff --git a/frappe/patches/v13_0/remove_custom_link.py b/frappe/patches/v13_0/remove_custom_link.py new file mode 100644 index 0000000000..9c2a441a62 --- /dev/null +++ b/frappe/patches/v13_0/remove_custom_link.py @@ -0,0 +1,15 @@ +import frappe + +def execute(): + ''' + Remove the doctype "Custom Link" that was used to add Custom Links to the + Dashboard since this is now managed by Customize Form. + Update `parent` property to the DocType and delte the doctype + ''' + + if frappe.db.has_table('Custom Link'): + for custom_link in frappe.get_all('Custom Link', ['name', 'document_type']): + frappe.db.sql('update `tabDocType Link` set custom=1, parent=%s where parent=%s', + (custom_link.document_type, custom_link.name)) + + frappe.delete_doc('DocType', 'Custom Link') \ No newline at end of file From 742605542cdab0dcbbc530fc0d86867f3b22e12b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 19 Oct 2020 15:33:27 +0530 Subject: [PATCH 32/46] fix(minor): added ignore_ddl in frappe.db.get_all to ignore missing tables, columns --- .../core/doctype/doctype_link/doctype_link.json | 2 +- frappe/model/db_query.py | 6 ++++-- frappe/model/meta.py | 3 ++- frappe/model/naming.py | 15 ++++++--------- frappe/patches.txt | 2 +- frappe/patches/v13_0/remove_custom_link.py | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/frappe/core/doctype/doctype_link/doctype_link.json b/frappe/core/doctype/doctype_link/doctype_link.json index 2adfd4a6c3..0453894467 100644 --- a/frappe/core/doctype/doctype_link/doctype_link.json +++ b/frappe/core/doctype/doctype_link/doctype_link.json @@ -50,7 +50,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-09-24 14:19:23.189511", + "modified": "2020-09-24 14:19:25.189511", "modified_by": "Administrator", "module": "Core", "name": "DocType Link", diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 596f69d2dd..bb7ac1bca0 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -38,7 +38,7 @@ class DatabaseQuery(object): join='left join', distinct=False, start=None, page_length=None, limit=None, ignore_ifnull=False, save_user_settings=False, save_user_settings_fields=False, update=None, add_total_row=None, user_settings=None, reference_doctype=None, - return_query=False, strict=True, pluck=None): + return_query=False, strict=True, pluck=None, ignore_ddl=False): if not ignore_permissions and not frappe.has_permission(self.doctype, "read", user=user): frappe.flags.error_message = _('Insufficient Permission for {0}').format(frappe.bold(self.doctype)) raise frappe.PermissionError(self.doctype) @@ -86,6 +86,7 @@ class DatabaseQuery(object): self.user_settings_fields = copy.deepcopy(self.fields) self.return_query = return_query self.strict = strict + self.ignore_ddl = ignore_ddl # for contextual user permission check # to determine which user permission is applicable on link field of specific doctype @@ -134,7 +135,8 @@ class DatabaseQuery(object): if self.return_query: return query else: - return frappe.db.sql(query, as_dict=not self.as_list, debug=self.debug, update=self.update) + return frappe.db.sql(query, as_dict=not self.as_list, debug=self.debug, + update=self.update, ignore_ddl=self.ignore_ddl) def prepare_args(self): self.parse_args() diff --git a/frappe/model/meta.py b/frappe/model/meta.py index cdd4b34ae8..8c17a5b19b 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -343,7 +343,8 @@ class Meta(Document): def add_custom_links_and_actions(self): for doctype, fieldname in (('DocType Link', 'links'), ('DocType Action', 'actions')): - for d in frappe.get_all(doctype, fields='*', filters=dict(parent=self.name, custom=1)): + # ignore_ddl because the `custom` column was added later via a patch + for d in frappe.get_all(doctype, fields='*', filters=dict(parent=self.name, custom=1), ignore_ddl=True): self.append(fieldname, d) # set the fields in order if specified diff --git a/frappe/model/naming.py b/frappe/model/naming.py index 9ea5fc0ca4..c2e074990e 100644 --- a/frappe/model/naming.py +++ b/frappe/model/naming.py @@ -93,15 +93,12 @@ def set_naming_from_document_naming_rule(doc): if doc.doctype in log_types: return - try: - for d in frappe.get_all('Document Naming Rule', - dict(document_type=doc.doctype, disabled=0), order_by='priority desc'): - frappe.get_cached_doc('Document Naming Rule', d.name).apply(doc) - if doc.name: - break - except frappe.db.TableMissingError: # noqa: E722 - # not yet bootstrapped - pass + # ignore_ddl if naming is not yet bootstrapped + for d in frappe.get_all('Document Naming Rule', + dict(document_type=doc.doctype, disabled=0), order_by='priority desc', ignore_ddl=True): + frappe.get_cached_doc('Document Naming Rule', d.name).apply(doc) + if doc.name: + break def set_name_by_naming_series(doc): """Sets name by the `naming_series` property""" diff --git a/frappe/patches.txt b/frappe/patches.txt index 2202557b40..2a6ba321d5 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -7,7 +7,7 @@ frappe.patches.v7_0.update_auth frappe.patches.v8_0.drop_in_dialog #2017-09-22 frappe.patches.v7_2.remove_in_filter execute:frappe.reload_doc('core', 'doctype', 'doctype_action', force=True) #2019-09-23 -execute:frappe.reload_doc('core', 'doctype', 'doctype_link', force=True) #2019-09-23 +execute:frappe.reload_doc('core', 'doctype', 'doctype_link', force=True) #2020-10-17 execute:frappe.reload_doc('core', 'doctype', 'doctype', force=True) #2017-09-22 execute:frappe.reload_doc('core', 'doctype', 'docfield', force=True) #2018-02-20 frappe.patches.v11_0.drop_column_apply_user_permissions diff --git a/frappe/patches/v13_0/remove_custom_link.py b/frappe/patches/v13_0/remove_custom_link.py index 9c2a441a62..e1830033af 100644 --- a/frappe/patches/v13_0/remove_custom_link.py +++ b/frappe/patches/v13_0/remove_custom_link.py @@ -6,7 +6,7 @@ def execute(): Dashboard since this is now managed by Customize Form. Update `parent` property to the DocType and delte the doctype ''' - + frappe.reload_doctype('DocType Link') if frappe.db.has_table('Custom Link'): for custom_link in frappe.get_all('Custom Link', ['name', 'document_type']): frappe.db.sql('update `tabDocType Link` set custom=1, parent=%s where parent=%s', From 69d2c10736f7e5255333f9202cd3067722ba40e9 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 19 Oct 2020 15:51:33 +0530 Subject: [PATCH 33/46] fix(minor): db_query (ignore_ddl) --- frappe/model/db_query.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index bb7ac1bca0..942ede10bb 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -327,7 +327,13 @@ class DatabaseQuery(object): def set_optional_columns(self): """Removes optional columns like `_user_tags`, `_comments` etc. if not in table""" - columns = get_table_columns(self.doctype) + try: + columns = get_table_columns(self.doctype) + except frappe.db.TableMissingError: + if self.ignore_ddl: + return + else: + raise # remove from fields to_remove = [] From 6f346a61f4cf08f81b74c511840cfbe4c137615a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 09:59:19 +0530 Subject: [PATCH 34/46] fix(formatter):add link formatter for User and fix patch --- frappe/core/doctype/report/report.py | 6 ++++++ frappe/public/js/frappe/form/formatters.js | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index fe3156d995..7620117bd7 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -49,9 +49,15 @@ class Report(Document): self.export_doc() def on_trash(self): +<<<<<<< 69d2c10736f7e5255333f9202cd3067722ba40e9 if (self.is_standard == 'Yes' and not cint(getattr(frappe.local.conf, 'developer_mode', 0)) and not frappe.flags.in_patch): +======= + if (self.is_standard == 'Yes' + and not frappe.flags.in_patch + and not cint(getattr(frappe.local.conf, 'developer_mode',0))): +>>>>>>> fix(formatter):add link formatter for User and fix patch frappe.throw(_("You are not allowed to delete Standard Report")) delete_custom_role('report', self.name) diff --git a/frappe/public/js/frappe/form/formatters.js b/frappe/public/js/frappe/form/formatters.js index 39541757a5..3f422d0a9b 100644 --- a/frappe/public/js/frappe/form/formatters.js +++ b/frappe/public/js/frappe/form/formatters.js @@ -106,7 +106,7 @@ frappe.form.formatters = { if(frappe.form.link_formatters[doctype]) { // don't apply formatters in case of composite (parent field of same type) if (doc && doctype !== doc.doctype) { - value = frappe.form.link_formatters[doctype](value, doc); + value = frappe.form.link_formatters[doctype](value, doc, docfield); } } @@ -305,7 +305,7 @@ frappe.format = function(value, df, options, doc) { formatted = frappe.dom.remove_script_and_style(formatted); return formatted; -} +}; frappe.get_format_helper = function(doc) { var helper = { @@ -317,4 +317,9 @@ frappe.get_format_helper = function(doc) { }; $.extend(helper, doc); return helper; -} +}; + +frappe.form.link_formatters['User'] = function(value, doc, docfield) { + let full_name = doc && (doc.full_name || (docfield && doc[`${docfield.fieldname}_full_name`])); + return full_name || value; +}; From e820d254c5c62404df5c46447ca049ba1ffa9a17 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 11:07:52 +0530 Subject: [PATCH 35/46] fix(confict): did not save and also fix tabs --- frappe/core/doctype/report/report.py | 10 ++-------- frappe/patches/v13_0/remove_custom_link.py | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index 7620117bd7..9d30409a2a 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -49,15 +49,9 @@ class Report(Document): self.export_doc() def on_trash(self): -<<<<<<< 69d2c10736f7e5255333f9202cd3067722ba40e9 - if (self.is_standard == 'Yes' - and not cint(getattr(frappe.local.conf, 'developer_mode', 0)) - and not frappe.flags.in_patch): -======= if (self.is_standard == 'Yes' - and not frappe.flags.in_patch - and not cint(getattr(frappe.local.conf, 'developer_mode',0))): ->>>>>>> fix(formatter):add link formatter for User and fix patch + and not cint(getattr(frappe.local.conf, 'developer_mode', 0)) + and not frappe.flags.in_patch): frappe.throw(_("You are not allowed to delete Standard Report")) delete_custom_role('report', self.name) diff --git a/frappe/patches/v13_0/remove_custom_link.py b/frappe/patches/v13_0/remove_custom_link.py index e1830033af..f38bb642f0 100644 --- a/frappe/patches/v13_0/remove_custom_link.py +++ b/frappe/patches/v13_0/remove_custom_link.py @@ -1,15 +1,15 @@ import frappe def execute(): - ''' - Remove the doctype "Custom Link" that was used to add Custom Links to the - Dashboard since this is now managed by Customize Form. - Update `parent` property to the DocType and delte the doctype - ''' - frappe.reload_doctype('DocType Link') - if frappe.db.has_table('Custom Link'): - for custom_link in frappe.get_all('Custom Link', ['name', 'document_type']): - frappe.db.sql('update `tabDocType Link` set custom=1, parent=%s where parent=%s', - (custom_link.document_type, custom_link.name)) + ''' + Remove the doctype "Custom Link" that was used to add Custom Links to the + Dashboard since this is now managed by Customize Form. + Update `parent` property to the DocType and delte the doctype + ''' + frappe.reload_doctype('DocType Link') + if frappe.db.has_table('Custom Link'): + for custom_link in frappe.get_all('Custom Link', ['name', 'document_type']): + frappe.db.sql('update `tabDocType Link` set custom=1, parent=%s where parent=%s', + (custom_link.document_type, custom_link.name)) - frappe.delete_doc('DocType', 'Custom Link') \ No newline at end of file + frappe.delete_doc('DocType', 'Custom Link') \ No newline at end of file From 7f1b35b0de88624876b8f5ff04e730025fdf1200 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 12:01:39 +0530 Subject: [PATCH 36/46] fix(tests): test_workflow.py, full cleanup --- .../doctype/workflow/test_workflow.py | 73 +++++++++---------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/frappe/workflow/doctype/workflow/test_workflow.py b/frappe/workflow/doctype/workflow/test_workflow.py index adcd98a85d..fe2e3ef66d 100644 --- a/frappe/workflow/doctype/workflow/test_workflow.py +++ b/frappe/workflow/doctype/workflow/test_workflow.py @@ -20,8 +20,7 @@ class TestWorkflow(unittest.TestCase): frappe.set_user('Administrator') def tearDown(self): - frappe.print_sql(False) - self.workflow.db_set('is_active', 0) + frappe.delete_doc('Workflow', 'Test ToDo') def test_default_condition(self): '''test default condition is set''' @@ -34,7 +33,6 @@ class TestWorkflow(unittest.TestCase): def test_approve(self, doc=None): '''test simple workflow''' - frappe.print_sql(True) todo = doc or self.test_default_condition() apply_workflow(todo, 'Approve') @@ -87,7 +85,7 @@ class TestWorkflow(unittest.TestCase): frappe.set_user('test2@example.com') doc = self.test_default_condition() - workflow_actions = frappe.get_all('Workflow Action', fields=['status', 'reference_name']) + workflow_actions = frappe.get_all('Workflow Action', fields=['*']) self.assertEqual(len(workflow_actions), 1) # test if status of workflow actions are updated on approval @@ -128,43 +126,42 @@ class TestWorkflow(unittest.TestCase): def create_todo_workflow(): if frappe.db.exists('Workflow', 'Test ToDo'): - workflow = frappe.get_doc('Workflow', 'Test ToDo').save(ignore_permissions=True) - workflow.db_set('is_active', 1) - return workflow - else: + frappe.delete_doc('Workflow', 'Test ToDo') + + if not frappe.db.exists('Role', 'Test Approver'): frappe.get_doc(dict(doctype='Role', role_name='Test Approver')).insert(ignore_if_duplicate=True) - workflow = frappe.new_doc('Workflow') - workflow.workflow_name = 'Test ToDo' - workflow.document_type = 'ToDo' - workflow.workflow_state_field = 'workflow_state' - workflow.is_active = 1 - workflow.send_email_alert = 0 - workflow.append('states', dict( - state = 'Pending', allow_edit = 'All' - )) - workflow.append('states', dict( - state = 'Approved', allow_edit = 'Test Approver', - update_field = 'status', update_value = 'Closed' - )) - workflow.append('states', dict( - state = 'Rejected', allow_edit = 'Test Approver' - )) - workflow.append('transitions', dict( - state = 'Pending', action='Approve', next_state = 'Approved', - allowed='Test Approver', allow_self_approval= 1 - )) - workflow.append('transitions', dict( - state = 'Pending', action='Reject', next_state = 'Rejected', - allowed='Test Approver', allow_self_approval= 1 - )) - workflow.append('transitions', dict( - state = 'Rejected', action='Review', next_state = 'Pending', - allowed='All', allow_self_approval= 1 - )) - workflow.insert(ignore_permissions=True) + workflow = frappe.new_doc('Workflow') + workflow.workflow_name = 'Test ToDo' + workflow.document_type = 'ToDo' + workflow.workflow_state_field = 'workflow_state' + workflow.is_active = 1 + workflow.send_email_alert = 0 + workflow.append('states', dict( + state = 'Pending', allow_edit = 'All' + )) + workflow.append('states', dict( + state = 'Approved', allow_edit = 'Test Approver', + update_field = 'status', update_value = 'Closed' + )) + workflow.append('states', dict( + state = 'Rejected', allow_edit = 'Test Approver' + )) + workflow.append('transitions', dict( + state = 'Pending', action='Approve', next_state = 'Approved', + allowed='Test Approver', allow_self_approval= 1 + )) + workflow.append('transitions', dict( + state = 'Pending', action='Reject', next_state = 'Rejected', + allowed='Test Approver', allow_self_approval= 1 + )) + workflow.append('transitions', dict( + state = 'Rejected', action='Review', next_state = 'Pending', + allowed='All', allow_self_approval= 1 + )) + workflow.insert(ignore_permissions=True) - return workflow + return workflow def create_new_todo(): return frappe.get_doc(dict(doctype='ToDo', description='workflow ' + random_string(10))).insert() From 1df7831d6790388b1af9082a86004c0079a9525f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 12:24:11 +0530 Subject: [PATCH 37/46] fix(minor): postgres/database.py error handling for missing table --- frappe/database/postgres/database.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/database/postgres/database.py b/frappe/database/postgres/database.py index 3d997864e4..4faea78551 100644 --- a/frappe/database/postgres/database.py +++ b/frappe/database/postgres/database.py @@ -140,11 +140,11 @@ class PostgresDatabase(Database): @staticmethod def is_table_missing(e): - return e.pgcode == '42P01' + return getattr(e, 'pgcode', None) == '42P01' @staticmethod def is_missing_column(e): - return e.pgcode == '42703' + return getattr(e, 'pgcode', None) == '42703' @staticmethod def is_access_denied(e): From 625ab74883b914b5b7781be2fdccd6f50cc4a01c Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 13:01:46 +0530 Subject: [PATCH 38/46] fix(tests): added a new table to avoid conflicts --- .../event_producer/event_producer.json | 9 +--- .../doctype/event_producer/event_producer.py | 20 +++++-- .../event_producer_last_update/__init__.py | 0 .../event_producer_last_update.js | 8 +++ .../event_producer_last_update.json | 52 +++++++++++++++++++ .../event_producer_last_update.py | 10 ++++ .../test_event_producer_last_update.py | 10 ++++ 7 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 frappe/event_streaming/doctype/event_producer_last_update/__init__.py create mode 100644 frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.js create mode 100644 frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json create mode 100644 frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.py create mode 100644 frappe/event_streaming/doctype/event_producer_last_update/test_event_producer_last_update.py diff --git a/frappe/event_streaming/doctype/event_producer/event_producer.json b/frappe/event_streaming/doctype/event_producer/event_producer.json index 8fafdc3bb2..d868f6c123 100644 --- a/frappe/event_streaming/doctype/event_producer/event_producer.json +++ b/frappe/event_streaming/doctype/event_producer/event_producer.json @@ -13,7 +13,6 @@ "api_secret", "column_break_6", "user", - "last_update", "incoming_change" ], "fields": [ @@ -25,12 +24,6 @@ "reqd": 1, "unique": 1 }, - { - "fieldname": "last_update", - "fieldtype": "Data", - "label": "Last Update", - "read_only": 1 - }, { "description": "API Key of the user(Event Subscriber) on the producer site", "fieldname": "api_key", @@ -77,7 +70,7 @@ } ], "links": [], - "modified": "2020-09-08 18:50:57.687979", + "modified": "2020-10-26 13:00:15.361316", "modified_by": "Administrator", "module": "Event Streaming", "name": "Event Producer", diff --git a/frappe/event_streaming/doctype/event_producer/event_producer.py b/frappe/event_streaming/doctype/event_producer/event_producer.py index b0ec998ab9..9e73f51d47 100644 --- a/frappe/event_streaming/doctype/event_producer/event_producer.py +++ b/frappe/event_streaming/doctype/event_producer/event_producer.py @@ -79,10 +79,24 @@ class EventProducer(Document): ) if response: response = json.loads(response) - self.last_update = response['last_update'] + self.set_last_update(response['last_update']) else: frappe.throw(_('Failed to create an Event Consumer or an Event Consumer for the current site is already registered.')) + def set_last_update(self, last_update): + last_update_doc_name = frappe.db.get_value('Event Producer Last Update', dict(event_producer=self.name)) + if not last_update_doc_name: + frappe.get_doc(dict( + doctype = 'Event Producer Last Update', + event_producer = self.name, + last_update = last_update + )).insert(ignore_permissions=True) + else: + frappe.db.set_value('Event Producer Last Update', last_update_doc_name, 'last_update', last_update) + + def get_last_update(self): + return frappe.db.get_value('Event Producer Last Update', dict(event_producer=self.name), 'last_update') + def get_request_data(self): consumer_doctypes = [] for entry in self.producer_doctypes: @@ -184,7 +198,7 @@ def pull_from_node(event_producer): """pull all updates after the last update timestamp from event producer site""" event_producer = frappe.get_doc('Event Producer', event_producer) producer_site = get_producer_site(event_producer.producer_url) - last_update = event_producer.last_update + last_update = event_producer.get_last_update() (doctypes, mapping_config, naming_config) = get_config(event_producer.producer_doctypes) @@ -239,7 +253,7 @@ def sync(update, producer_site, event_producer, in_retry=False): return 'Failed' log_event_sync(update, event_producer.name, 'Failed', frappe.get_traceback()) - event_producer.db_set('last_update', update.creation) + event_producer.set_last_update(update.creation) frappe.db.commit() diff --git a/frappe/event_streaming/doctype/event_producer_last_update/__init__.py b/frappe/event_streaming/doctype/event_producer_last_update/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.js b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.js new file mode 100644 index 0000000000..15730e4c5f --- /dev/null +++ b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.js @@ -0,0 +1,8 @@ +// Copyright (c) 2020, Frappe Technologies and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Event Producer Last Update', { + // refresh: function(frm) { + + // } +}); diff --git a/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json new file mode 100644 index 0000000000..af8d45b970 --- /dev/null +++ b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json @@ -0,0 +1,52 @@ +{ + "actions": [], + "autoname": "field:event_producer", + "creation": "2020-10-26 12:53:11.940177", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "event_producer", + "last_update" + ], + "fields": [ + { + "fieldname": "event_producer", + "fieldtype": "Link", + "label": "Event Producer", + "options": "Event Producer", + "unique": 1 + }, + { + "fieldname": "last_update", + "fieldtype": "Data", + "label": "Last Update" + } + ], + "in_create": 1, + "index_web_pages_for_search": 1, + "links": [], + "modified": "2020-10-26 12:59:33.112423", + "modified_by": "Administrator", + "module": "Event Streaming", + "name": "Event Producer Last Update", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "read_only": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.py b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.py new file mode 100644 index 0000000000..02e297bdd5 --- /dev/null +++ b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class EventProducerLastUpdate(Document): + pass diff --git a/frappe/event_streaming/doctype/event_producer_last_update/test_event_producer_last_update.py b/frappe/event_streaming/doctype/event_producer_last_update/test_event_producer_last_update.py new file mode 100644 index 0000000000..0311cb2df9 --- /dev/null +++ b/frappe/event_streaming/doctype/event_producer_last_update/test_event_producer_last_update.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestEventProducerLastUpdate(unittest.TestCase): + pass From 8c1187840094bc900553f84ebdc9bcb15e82e2c5 Mon Sep 17 00:00:00 2001 From: prssanna Date: Mon, 26 Oct 2020 13:01:30 +0530 Subject: [PATCH 39/46] fix(Email): use set_header to set Message-Id in header --- frappe/email/email_body.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/frappe/email/email_body.py b/frappe/email/email_body.py index 5bb654abf3..8ac071fa61 100755 --- a/frappe/email/email_body.py +++ b/frappe/email/email_body.py @@ -198,12 +198,15 @@ class EMail: def set_message_id(self, message_id, is_notification=False): if message_id: - self.msg_root["Message-Id"] = '<' + message_id + '>' + message_id = '<' + message_id + '>' else: - self.msg_root["Message-Id"] = get_message_id() - self.msg_root["isnotification"] = '' + message_id = get_message_id() + self.set_header('isnotification', '') + if is_notification: - self.msg_root["isnotification"] = '' + self.set_header('isnotification', '') + + self.set_header('Message-Id', message_id) def set_in_reply_to(self, in_reply_to): """Used to send the Message-Id of a received email back as In-Reply-To""" From 8bd98e6272fdb44e2ce13403328a259d49f2aff3 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 13:22:38 +0530 Subject: [PATCH 40/46] fix(minor): set name for Event Producer Last Update --- .../doctype/event_producer/event_producer.py | 2 +- .../event_producer_last_update.json | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/frappe/event_streaming/doctype/event_producer/event_producer.py b/frappe/event_streaming/doctype/event_producer/event_producer.py index 9e73f51d47..d458f3c24b 100644 --- a/frappe/event_streaming/doctype/event_producer/event_producer.py +++ b/frappe/event_streaming/doctype/event_producer/event_producer.py @@ -88,7 +88,7 @@ class EventProducer(Document): if not last_update_doc_name: frappe.get_doc(dict( doctype = 'Event Producer Last Update', - event_producer = self.name, + event_producer = self.producer_url, last_update = last_update )).insert(ignore_permissions=True) else: diff --git a/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json index af8d45b970..27f8ed2f81 100644 --- a/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json +++ b/frappe/event_streaming/doctype/event_producer_last_update/event_producer_last_update.json @@ -12,9 +12,10 @@ "fields": [ { "fieldname": "event_producer", - "fieldtype": "Link", + "fieldtype": "Data", + "in_list_view": 1, "label": "Event Producer", - "options": "Event Producer", + "reqd": 1, "unique": 1 }, { @@ -26,7 +27,7 @@ "in_create": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2020-10-26 12:59:33.112423", + "modified": "2020-10-26 13:22:27.056599", "modified_by": "Administrator", "module": "Event Streaming", "name": "Event Producer Last Update", From 373403c97e712f88a4024cbcf49b20abf37c5c75 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 13:44:32 +0530 Subject: [PATCH 41/46] fix(minor): test_workflow.py --- frappe/workflow/doctype/workflow/test_workflow.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frappe/workflow/doctype/workflow/test_workflow.py b/frappe/workflow/doctype/workflow/test_workflow.py index fe2e3ef66d..9ad0562a86 100644 --- a/frappe/workflow/doctype/workflow/test_workflow.py +++ b/frappe/workflow/doctype/workflow/test_workflow.py @@ -15,8 +15,7 @@ class TestWorkflow(unittest.TestCase): make_test_records("User") def setUp(self): - if not getattr(self, 'workflow', None): - self.workflow = create_todo_workflow() + self.workflow = create_todo_workflow() frappe.set_user('Administrator') def tearDown(self): From 0b93784b32e1dde7c02d260f1405be90e52d84eb Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 14:13:38 +0530 Subject: [PATCH 42/46] fix(minor): test_db.py --- frappe/tests/test_db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/tests/test_db.py b/frappe/tests/test_db.py index 6fbf247404..82ddf73c40 100644 --- a/frappe/tests/test_db.py +++ b/frappe/tests/test_db.py @@ -131,7 +131,7 @@ class TestDB(unittest.TestCase): # Testing read self.assertEqual(list(frappe.get_all("ToDo", fields=[random_field], limit=1)[0])[0], random_field) - self.assertEqual(list(frappe.get_all("ToDo", fields=["{0} as total".format(random_field)], limit=1)[0])[0], "total") + self.assertEqual(list(frappe.get_all("ToDo", fields=["`{0}` as total".format(random_field)], limit=1)[0])[0], "total") # Testing read for distinct and sql functions self.assertEqual(list( From ceb1ecce73ce1f7d6c6f14d3fa57a9e54e1017f8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Oct 2020 14:16:23 +0530 Subject: [PATCH 43/46] fix(minor): test_db.py --- frappe/tests/test_db.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frappe/tests/test_db.py b/frappe/tests/test_db.py index 82ddf73c40..2925242994 100644 --- a/frappe/tests/test_db.py +++ b/frappe/tests/test_db.py @@ -104,7 +104,10 @@ class TestDB(unittest.TestCase): "INT", "FORTRAN", "STABLE"] } created_docs = [] - fields = all_keywords[frappe.conf.db_type] + + # edit by rushabh: added [:1] + # don't run every keyword! - if one works, they all do + fields = all_keywords[frappe.conf.db_type][:1] test_doctype = "ToDo" def add_custom_field(field): From 00310ea783980229dd7708694a0f7369bf337f25 Mon Sep 17 00:00:00 2001 From: Sumit Bhanushali Date: Mon, 26 Oct 2020 17:43:08 +0530 Subject: [PATCH 44/46] feat: add module field in get_desk_sidebar_items --- frappe/desk/desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/desk/desktop.py b/frappe/desk/desktop.py index 72c4519120..4dab313892 100644 --- a/frappe/desk/desktop.py +++ b/frappe/desk/desktop.py @@ -375,7 +375,7 @@ def get_desk_sidebar_items(flatten=False, cache=True): # pages sorted based on pinned to top and then by name order_by = "pin_to_top desc, pin_to_bottom asc, name asc" - all_pages = frappe.get_all("Desk Page", fields=["name", "category"], filters=filters, order_by=order_by, ignore_permissions=True) + all_pages = frappe.get_all("Desk Page", fields=["name", "category", "module"], filters=filters, order_by=order_by, ignore_permissions=True) pages = [] # Filter Page based on Permission From 54732e57753cf4baf6e63e177ae431247f1d0485 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Mon, 26 Oct 2020 17:44:12 +0530 Subject: [PATCH 45/46] fix(UX): Add default to Web Template Field - Set default values for Select fields - Remove quick entry from Web Template --- frappe/website/doctype/web_template/web_template.json | 5 ++--- .../doctype/web_template_field/web_template_field.json | 10 ++++++++-- frappe/website/web_template/hero/hero.json | 4 +++- frappe/website/web_template/markdown/markdown.json | 4 +++- .../section_with_cards/section_with_cards.json | 4 +++- .../section_with_collapsible_content.json | 4 +++- .../section_with_features/section_with_features.json | 4 +++- .../section_with_image/section_with_image.json | 4 +++- .../split_section_with_image.json | 4 +++- 9 files changed, 31 insertions(+), 12 deletions(-) diff --git a/frappe/website/doctype/web_template/web_template.json b/frappe/website/doctype/web_template/web_template.json index 5ae4452c93..3f7cd9b312 100644 --- a/frappe/website/doctype/web_template/web_template.json +++ b/frappe/website/doctype/web_template/web_template.json @@ -60,7 +60,7 @@ "link_fieldname": "web_template" } ], - "modified": "2020-10-22 17:36:45.042517", + "modified": "2020-10-26 17:22:55.459453", "modified_by": "Administrator", "module": "Website", "name": "Web Template", @@ -79,8 +79,7 @@ "write": 1 } ], - "quick_entry": 1, "sort_field": "modified", "sort_order": "DESC", "track_changes": 1 -} +} \ No newline at end of file diff --git a/frappe/website/doctype/web_template_field/web_template_field.json b/frappe/website/doctype/web_template_field/web_template_field.json index ddd22dc4f9..ae0afd13f2 100644 --- a/frappe/website/doctype/web_template_field/web_template_field.json +++ b/frappe/website/doctype/web_template_field/web_template_field.json @@ -9,7 +9,8 @@ "fieldname", "fieldtype", "reqd", - "options" + "options", + "default" ], "fields": [ { @@ -44,11 +45,16 @@ "fieldname": "options", "fieldtype": "Small Text", "label": "Options" + }, + { + "fieldname": "default", + "fieldtype": "Small Text", + "label": "Default" } ], "istable": 1, "links": [], - "modified": "2020-09-09 15:04:08.414432", + "modified": "2020-10-26 17:38:40.798713", "modified_by": "Administrator", "module": "Website", "name": "Web Template Field", diff --git a/frappe/website/web_template/hero/hero.json b/frappe/website/web_template/hero/hero.json index e08fb9ff76..6a72e15434 100644 --- a/frappe/website/web_template/hero/hero.json +++ b/frappe/website/web_template/hero/hero.json @@ -40,6 +40,7 @@ "reqd": 0 }, { + "default": "Left", "fieldname": "align", "fieldtype": "Select", "label": "Align", @@ -48,8 +49,9 @@ } ], "idx": 0, - "modified": "2020-09-15 11:42:46.886991", + "modified": "2020-10-26 17:39:56.959008", "modified_by": "Administrator", + "module": "Website", "name": "Hero", "owner": "Administrator", "standard": 1, diff --git a/frappe/website/web_template/markdown/markdown.json b/frappe/website/web_template/markdown/markdown.json index bddf346770..1b1e581067 100644 --- a/frappe/website/web_template/markdown/markdown.json +++ b/frappe/website/web_template/markdown/markdown.json @@ -11,6 +11,7 @@ "reqd": 0 }, { + "default": "Left", "fieldname": "align", "fieldtype": "Select", "label": "Align", @@ -19,8 +20,9 @@ } ], "idx": 0, - "modified": "2020-09-15 11:43:13.041049", + "modified": "2020-10-26 17:39:47.302460", "modified_by": "Administrator", + "module": "Website", "name": "Markdown", "owner": "Administrator", "standard": 1, diff --git a/frappe/website/web_template/section_with_cards/section_with_cards.json b/frappe/website/web_template/section_with_cards/section_with_cards.json index cf2f5efb3d..7c2c256396 100644 --- a/frappe/website/web_template/section_with_cards/section_with_cards.json +++ b/frappe/website/web_template/section_with_cards/section_with_cards.json @@ -16,6 +16,7 @@ "reqd": 0 }, { + "default": "Medium", "fieldname": "card_size", "fieldtype": "Select", "label": "Card Size", @@ -240,8 +241,9 @@ } ], "idx": 0, - "modified": "2020-09-11 15:58:00.731982", + "modified": "2020-10-26 17:42:53.356024", "modified_by": "Administrator", + "module": "Website", "name": "Section with Cards", "owner": "Administrator", "standard": 1, diff --git a/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.json b/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.json index 3aca9944fd..5f570d1bca 100644 --- a/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.json +++ b/frappe/website/web_template/section_with_collapsible_content/section_with_collapsible_content.json @@ -16,6 +16,7 @@ "reqd": 0 }, { + "default": "Left", "fieldname": "align", "fieldtype": "Select", "label": "Align", @@ -42,8 +43,9 @@ } ], "idx": 0, - "modified": "2020-09-11 15:52:40.552274", + "modified": "2020-10-26 17:40:20.365936", "modified_by": "Administrator", + "module": "Website", "name": "Section with Collapsible Content", "owner": "Administrator", "standard": 1, diff --git a/frappe/website/web_template/section_with_features/section_with_features.json b/frappe/website/web_template/section_with_features/section_with_features.json index 4b15d6dc24..a5734aa293 100644 --- a/frappe/website/web_template/section_with_features/section_with_features.json +++ b/frappe/website/web_template/section_with_features/section_with_features.json @@ -16,6 +16,7 @@ "reqd": 0 }, { + "default": "3", "fieldname": "columns", "fieldtype": "Select", "label": "Columns", @@ -54,8 +55,9 @@ } ], "idx": 2, - "modified": "2020-09-11 15:52:40.533302", + "modified": "2020-10-26 17:43:08.219285", "modified_by": "Administrator", + "module": "Website", "name": "Section with Features", "owner": "Administrator", "standard": 1, diff --git a/frappe/website/web_template/section_with_image/section_with_image.json b/frappe/website/web_template/section_with_image/section_with_image.json index f4f6696fd5..c64bd76be6 100644 --- a/frappe/website/web_template/section_with_image/section_with_image.json +++ b/frappe/website/web_template/section_with_image/section_with_image.json @@ -28,6 +28,7 @@ "reqd": 0 }, { + "default": "Left", "fieldname": "align", "fieldtype": "Select", "label": "Align", @@ -36,8 +37,9 @@ } ], "idx": 0, - "modified": "2020-09-11 15:57:55.186983", + "modified": "2020-10-26 17:40:11.558331", "modified_by": "Administrator", + "module": "Website", "name": "Section with Image", "owner": "Administrator", "standard": 1, diff --git a/frappe/website/web_template/split_section_with_image/split_section_with_image.json b/frappe/website/web_template/split_section_with_image/split_section_with_image.json index ed383b9c58..456d1d7b92 100644 --- a/frappe/website/web_template/split_section_with_image/split_section_with_image.json +++ b/frappe/website/web_template/split_section_with_image/split_section_with_image.json @@ -47,6 +47,7 @@ "reqd": 0 }, { + "default": "Top", "fieldname": "vertical_align", "fieldtype": "Select", "label": "Vertical Align", @@ -55,8 +56,9 @@ } ], "idx": 0, - "modified": "2020-09-15 16:25:00.463085", + "modified": "2020-10-26 17:39:25.068819", "modified_by": "Administrator", + "module": "Website", "name": "Split Section with Image", "owner": "Administrator", "standard": 1, From 845b3ab5bc8b6d89638a36d4410800f4360e2415 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 26 Oct 2020 19:14:54 +0530 Subject: [PATCH 46/46] fix: URI encode in case white spaces exist in docname --- frappe/public/js/frappe/list/list_view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index f5dbe0fcb1..fac14cb609 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -781,7 +781,7 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { return this.settings.get_form_link(doc); } - const docname = doc.name.match(/[%'"]/) + const docname = doc.name.match(/[%'"\s]/) ? encodeURIComponent(doc.name) : doc.name;