From e97982be4d861f7d551981ead5f3ad75192d9be0 Mon Sep 17 00:00:00 2001 From: Mohammad Hasnain Mohsin Rajan Date: Tue, 13 Jul 2021 16:31:42 +0530 Subject: [PATCH 01/10] fix: user permission for restricting nested struct --- frappe/core/doctype/user_permission/user_permission.py | 1 - 1 file changed, 1 deletion(-) diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py index 4aa5797c7f..8837a4bd7e 100644 --- a/frappe/core/doctype/user_permission/user_permission.py +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -49,7 +49,6 @@ class UserPermission(Document): }, or_filters={ 'applicable_for': cstr(self.applicable_for), 'apply_to_all_doctypes': 1, - 'hide_descendants': cstr(self.hide_descendants) }, limit=1) if overlap_exists: ref_link = frappe.get_desk_link(self.doctype, overlap_exists[0].name) From f071472b7209d9312a6a2d54e71aa1b5d2a2e89d Mon Sep 17 00:00:00 2001 From: hasnain2808 Date: Tue, 31 Aug 2021 12:51:21 +0530 Subject: [PATCH 02/10] test: or_filters affecting default validation --- .../core/doctype/user_permission/test_user_permission.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/frappe/core/doctype/user_permission/test_user_permission.py b/frappe/core/doctype/user_permission/test_user_permission.py index 85db846982..ccc9df9851 100644 --- a/frappe/core/doctype/user_permission/test_user_permission.py +++ b/frappe/core/doctype/user_permission/test_user_permission.py @@ -31,6 +31,15 @@ class TestUserPermission(unittest.TestCase): param = get_params(user, 'User', perm_user.name, is_default=1) self.assertRaises(frappe.ValidationError, add_user_permissions, param) + def test_default_user_permission_corectness(self): + user = create_user('test_default_corectness_permission_1@example.com') + param = get_params(user, 'User', user.name, is_default=1, hide_descendants= 1) + add_user_permissions(param) + #create a duplicate entry with default + perm_user = create_user('test_default_corectness2@example.com') + param = get_params(perm_user, 'Blog Post', perm_user.name, is_default=1, hide_descendants= 1) + add_user_permissions(param) + def test_default_user_permission(self): frappe.set_user('Administrator') user = create_user('test_user_perm1@example.com', 'Website Manager') From a62da8ddeb74a0b19766d89aee71689d422e06ba Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Fri, 21 Jan 2022 13:05:54 +0100 Subject: [PATCH 03/10] feat: translate column names in export of report --- frappe/desk/reportview.py | 17 +++++++++++------ .../js/frappe/views/reports/report_view.js | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index e81ed0767b..fa96596841 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -305,7 +305,7 @@ def export_query(): if add_totals_row: ret = append_totals_row(ret) - data = [['Sr'] + get_labels(db_query.fields, doctype)] + data = [[_('Sr')] + get_labels(db_query.fields, doctype)] for i, row in enumerate(ret): data.append([i+1] + list(row)) @@ -364,7 +364,8 @@ def get_labels(fields, doctype): for key in fields: key = key.split(" as ")[0] - if key.startswith(('count(', 'sum(', 'avg(')): continue + if key.startswith(('count(', 'sum(', 'avg(')): + continue if "." in key: parenttype, fieldname = key.split(".")[0][4:-1], key.split(".")[1].strip("`") @@ -372,10 +373,14 @@ def get_labels(fields, doctype): parenttype = doctype fieldname = fieldname.strip("`") - df = frappe.get_meta(parenttype).get_field(fieldname) - label = df.label if df else fieldname.title() - if label in labels: - label = doctype + ": " + label + if parenttype == doctype and fieldname == "name": + label = _("ID", context="Label of name column in report") + else: + df = frappe.get_meta(parenttype).get_field(fieldname) + label = _(df.label if df else fieldname.title()) + if parenttype != doctype: + label += " (" + _(parenttype) + ")" + labels.append(label) return labels diff --git a/frappe/public/js/frappe/views/reports/report_view.js b/frappe/public/js/frappe/views/reports/report_view.js index 6d8e281793..71cab6b6c2 100644 --- a/frappe/public/js/frappe/views/reports/report_view.js +++ b/frappe/public/js/frappe/views/reports/report_view.js @@ -860,7 +860,7 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView { } doctype_fields = [{ - label: __('ID'), + label: __('ID', null, 'Label of name column in report'), fieldname: 'name', fieldtype: 'Data', reqd: 1 From c9946b2899c62352d75a3002fcbf1ff21d306166 Mon Sep 17 00:00:00 2001 From: Raffael Meyer <14891507+barredterra@users.noreply.github.com> Date: Mon, 24 Jan 2022 16:07:48 +0100 Subject: [PATCH 04/10] style: add comment --- frappe/desk/reportview.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index fa96596841..49128bfc93 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -379,6 +379,8 @@ def get_labels(fields, doctype): df = frappe.get_meta(parenttype).get_field(fieldname) label = _(df.label if df else fieldname.title()) if parenttype != doctype: + # If the column is from a child table, append the child doctype. + # For example, "Item Code (Sales Invoice Item)". label += " (" + _(parenttype) + ")" labels.append(label) From 946a06383318875202208c6be2e2b47433dd0054 Mon Sep 17 00:00:00 2001 From: Mohammad Hasnain Date: Wed, 26 Jan 2022 12:31:45 +0530 Subject: [PATCH 05/10] test(user permission): create new blog as stub --- frappe/core/doctype/user_permission/test_user_permission.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/core/doctype/user_permission/test_user_permission.py b/frappe/core/doctype/user_permission/test_user_permission.py index ccc9df9851..308d65210e 100644 --- a/frappe/core/doctype/user_permission/test_user_permission.py +++ b/frappe/core/doctype/user_permission/test_user_permission.py @@ -3,6 +3,7 @@ from frappe.core.doctype.user_permission.user_permission import add_user_permissions, remove_applicable from frappe.permissions import has_user_permission from frappe.core.doctype.doctype.test_doctype import new_doctype +from frappe.website.doctype.blog_post.test_blog_post import make_test_blog import frappe import unittest @@ -37,7 +38,8 @@ class TestUserPermission(unittest.TestCase): add_user_permissions(param) #create a duplicate entry with default perm_user = create_user('test_default_corectness2@example.com') - param = get_params(perm_user, 'Blog Post', perm_user.name, is_default=1, hide_descendants= 1) + test_blog = make_test_blog() + param = get_params(perm_user, 'Blog Post', test_blog.name, is_default=1, hide_descendants= 1) add_user_permissions(param) def test_default_user_permission(self): From 07ae6855c39ca37762f6d6e12fc30fa11bdcb508 Mon Sep 17 00:00:00 2001 From: Raffael Meyer <14891507+barredterra@users.noreply.github.com> Date: Fri, 28 Jan 2022 12:01:38 +0100 Subject: [PATCH 06/10] fix: use format string Co-authored-by: Himanshu --- frappe/desk/reportview.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index 49128bfc93..489e1044de 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -381,7 +381,7 @@ def get_labels(fields, doctype): if parenttype != doctype: # If the column is from a child table, append the child doctype. # For example, "Item Code (Sales Invoice Item)". - label += " (" + _(parenttype) + ")" + label += f" ({ _(parenttype) })" labels.append(label) From 001075f88aac2b3fc416972b9fd07840ac25df4e Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 2 Feb 2022 13:03:38 +0530 Subject: [PATCH 07/10] fix: Use lru_cache instead of cache * Mainly because it was introduced in PY39 * Making this change beacuse I'd like to evict cold caches too --- frappe/website/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/website/utils.py b/frappe/website/utils.py index 1772d8ada1..152d312533 100644 --- a/frappe/website/utils.py +++ b/frappe/website/utils.py @@ -4,7 +4,7 @@ import json import mimetypes import os import re -from functools import cache, wraps +from functools import lru_cache, wraps from typing import Dict, Optional import yaml @@ -512,7 +512,7 @@ def add_preload_headers(response): import traceback traceback.print_exc() -@cache +@lru_cache() def is_binary_file(path): # ref: https://stackoverflow.com/a/7392391/10309266 textchars = bytearray({7,8,9,10,12,13,27} | set(range(0x20, 0x100)) - {0x7f}) From c467708fbcf04be92f91b8f9fc2ba9dabce132ea Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Wed, 2 Feb 2022 14:57:28 +0530 Subject: [PATCH 08/10] fix: dynamic progress-bar color --- frappe/public/scss/desk/css_variables.scss | 2 ++ frappe/public/scss/desk/variables.scss | 3 +++ 2 files changed, 5 insertions(+) diff --git a/frappe/public/scss/desk/css_variables.scss b/frappe/public/scss/desk/css_variables.scss index 0912cb278b..a06ba3e9b0 100644 --- a/frappe/public/scss/desk/css_variables.scss +++ b/frappe/public/scss/desk/css_variables.scss @@ -54,4 +54,6 @@ $input-height: 28px !default; // skeleton --skeleton-bg: var(--gray-100); + // progress bar + --progress-bar-bg: var(--primary); } diff --git a/frappe/public/scss/desk/variables.scss b/frappe/public/scss/desk/variables.scss index 2855277ccd..abc63cd637 100644 --- a/frappe/public/scss/desk/variables.scss +++ b/frappe/public/scss/desk/variables.scss @@ -118,6 +118,9 @@ $custom-control-label-color: var(--text-color); $custom-switch-indicator-size: 8px; $custom-control-indicator-border-width: 2px; +// progress bar +$progress-bar-bg: var(--progress-bar-bg); + $navbar-nav-link-padding-x: 1rem !default; $navbar-padding-y: 1rem !default; $card-border-radius: 0.75rem !default; From eb6d7d2ea7da842ba477a53f0410d1b4e58a78db Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Wed, 2 Feb 2022 15:47:34 +0530 Subject: [PATCH 09/10] fix: dynamic colors for checkbox and radio --- frappe/public/scss/common/css_variables.scss | 1 + frappe/public/scss/common/global.scss | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frappe/public/scss/common/css_variables.scss b/frappe/public/scss/common/css_variables.scss index f4794362d3..b8b7f869fa 100644 --- a/frappe/public/scss/common/css_variables.scss +++ b/frappe/public/scss/common/css_variables.scss @@ -249,6 +249,7 @@ --checkbox-right-margin: var(--margin-xs); --checkbox-size: 14px; --checkbox-focus-shadow: 0 0 0 2px var(--gray-300); + --checkbox-gradient: linear-gradient(180deg, #4AC3F8 -124.51%, var(--primary) 100%); --right-arrow-svg: url("data: image/svg+xml;utf8, "); --left-arrow-svg: url("data: image/svg+xml;utf8, "); diff --git a/frappe/public/scss/common/global.scss b/frappe/public/scss/common/global.scss index 0324b75bfb..8a849ab51a 100644 --- a/frappe/public/scss/common/global.scss +++ b/frappe/public/scss/common/global.scss @@ -54,7 +54,7 @@ input[type="radio"] { } &:checked::before { - background-color: var(--blue-500); + background-color: var(--primary); border-radius: 16px; box-shadow: inset 0 0 0 2px white; } @@ -85,8 +85,8 @@ input[type="checkbox"] { } &:checked { - background-color: var(--blue-500); - background-image: $check-icon, linear-gradient(180deg, #4AC3F8 -124.51%, #2490EF 100%); + background-color: var(--primary); + background-image: $check-icon, var(--checkbox-gradient); background-size: 57%, 100%; box-shadow: none; border: none; From ac3de2cb81a44e40cee155dadfe5905793c1ac4c Mon Sep 17 00:00:00 2001 From: Wolfram Schmidt Date: Thu, 3 Feb 2022 07:28:34 +0100 Subject: [PATCH 10/10] Update de.csv missing translation added --- frappe/translations/de.csv | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frappe/translations/de.csv b/frappe/translations/de.csv index 18ff55e386..9fad17becd 100644 --- a/frappe/translations/de.csv +++ b/frappe/translations/de.csv @@ -3558,9 +3558,9 @@ Skipping column {0},Spalte {0} wird übersprungen, Social Home,Soziales Zuhause, Some columns might get cut off when printing to PDF. Try to keep number of columns under 10.,"Einige Spalten werden beim Drucken in PDF möglicherweise abgeschnitten. Versuchen Sie, die Anzahl der Spalten unter 10 zu halten.", Something went wrong during the token generation. Click on {0} to generate a new one.,"Während der Token-Generierung ist ein Fehler aufgetreten. Klicken Sie auf {0}, um eine neue zu erstellen.", -Submit After Import,Nach dem Import einreichen, -Submitting...,Einreichen ..., -Success! You are good to go 👍,Erfolg! Du bist gut zu gehen 👍, +Submit After Import,Nach dem Import buchen, +Submitting...,wird verbucht..., +Success! You are good to go 👍,Erfolg! Du kannst nun durchstarten 👍, Successful Transactions,Erfolgreiche Transaktionen, Successfully Submitted!,Erfolgreich eingereicht!, Successfully imported {0} record.,{0} Datensatz erfolgreich importiert., @@ -3572,9 +3572,9 @@ Sync Contacts,Kontakte synchronisieren, Sync with Google Calendar,Mit Google Kalender synchronisieren, Sync with Google Contacts,Mit Google-Kontakten synchronisieren, Synced,Synchronisiert, -Syncing,Synchronisierung, +Syncing,Synchronisiert, Syncing {0} of {1},{0} von {1} synchronisieren, -Tag Link,Tag-Link, +Tag Link,Schlagwortverknüpfung, Take Backup,Backup erstellen, Template Error,Vorlagenfehler, Template Options,Vorlagenoptionen,