Merge branch 'fix-query-engine-mod' into get-all-mod

This commit is contained in:
Aradhya 2022-06-30 15:34:48 +05:30
commit 3c10099afd
22 changed files with 77 additions and 51 deletions

View file

@ -16,7 +16,7 @@ jobs:
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.8
python-version: '3.10'
- uses: actions/checkout@v3
- run: pip install pip-audit
- run: pip-audit ${GITHUB_WORKSPACE}

View file

@ -15,7 +15,7 @@ jobs:
- name: 'Setup Environment'
uses: actions/setup-python@v4
with:
python-version: 3.8
python-version: '3.10'
- name: 'Clone repo'
uses: actions/checkout@v3

View file

@ -31,9 +31,10 @@ jobs:
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
uses: "gabrielfalcao/pyenv-action@v9"
with:
python-version: '3.8'
versions: 3.10:latest, 3.7:latest, 2.7:latest
command: pyenv local 3.10
- name: Setup Node
uses: actions/setup-node@v3
@ -120,15 +121,23 @@ jobs:
for version in $(seq 12 13)
do
echo "Updating to v$version"
if [ $version == 12 ]; then
pyenv local 2.7
elif [ $version == 13 ]; then
pyenv local 3.7
fi
branch_name="version-$version-hotfix"
git fetch --depth 1 upstream $branch_name:$branch_name
git checkout -q -f $branch_name
bench setup requirements --python
rm -rf ~/frappe-bench/env
bench setup env
bench --site test_site migrate
done
echo "Updating to last commit"
git checkout -q -f "$GITHUB_SHA"
bench setup requirements --python
pyenv local 3.10
rm -rf ~/frappe-bench/env
bench setup env
bench --site test_site migrate

View file

@ -18,7 +18,7 @@ jobs:
node-version: 14
- uses: actions/setup-python@v4
with:
python-version: '3.8'
python-version: '3.10'
- name: Set up bench and build assets
run: |
npm install -g yarn

View file

@ -21,7 +21,7 @@ jobs:
python-version: '12.x'
- uses: actions/setup-python@v4
with:
python-version: '3.8'
python-version: '3.10'
- name: Set up bench and build assets
run: |
npm install -g yarn

View file

@ -42,7 +42,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
python-version: '3.10'
- name: Check if build should be run
id: check-build

View file

@ -45,7 +45,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
python-version: '3.10'
- name: Check if build should be run
id: check-build

View file

@ -41,7 +41,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
python-version: '3.10'
- name: Check if build should be run
id: check-build

View file

@ -1,4 +0,0 @@
coverage==5.5
Faker~=13.12.1
pyngrok~=5.0.5
unittest-xml-reporting~=3.0.4

View file

@ -1298,7 +1298,7 @@ def validate_fields(meta):
frappe.throw(_("Is Published Field must be a valid fieldname"), InvalidFieldNameError)
def check_website_search_field(meta):
if not meta.website_search_field:
if not meta.get("website_search_field"):
return
if meta.website_search_field not in fieldname_list:

View file

@ -67,7 +67,10 @@ class Role(Document):
def get_info_based_on_role(role, field="email"):
"""Get information of all users that have been assigned this role"""
users = frappe.get_list(
"Has Role", filters={"role": role}, parent_doctype="User", fields=["parent as user_name"]
"Has Role",
filters={"role": role, "parenttype": "User"},
parent_doctype="User",
fields=["parent as user_name"],
)
return get_user_info(users, field)

View file

@ -3,6 +3,7 @@
import unittest
import frappe
from frappe.core.doctype.role.role import get_info_based_on_role
test_records = frappe.get_test_records("Role")
@ -43,3 +44,11 @@ class TestUser(unittest.TestCase):
role.save()
user.reload()
self.assertTrue(user.user_type == "Website User")
def test_get_users_by_role(self):
role = "System Manager"
sys_managers = get_info_based_on_role(role, field="name")
for user in sys_managers:
self.assertIn(role, frappe.get_roles(user))

View file

@ -8,6 +8,7 @@ import hashlib
import hmac
import json
from time import sleep
from typing import Dict, Optional
from urllib.parse import urlparse
import requests
@ -80,8 +81,8 @@ def get_context(doc):
return {"doc": doc, "utils": get_safe_globals().get("frappe").get("utils")}
def enqueue_webhook(doc, webhook):
webhook = frappe.get_doc("Webhook", webhook.get("name"))
def enqueue_webhook(doc, webhook) -> None:
webhook: Webhook = frappe.get_doc("Webhook", webhook.get("name"))
headers = get_webhook_headers(doc, webhook)
data = get_webhook_data(doc, webhook)
@ -98,6 +99,11 @@ def enqueue_webhook(doc, webhook):
frappe.logger().debug({"webhook_success": r.text})
log_request(webhook.request_url, headers, data, r)
break
except requests.exceptions.ReadTimeout as e:
frappe.logger().debug({"webhook_error": e, "try": i + 1})
log_request(webhook.request_url, headers, data)
except Exception as e:
frappe.logger().debug({"webhook_error": e, "try": i + 1})
log_request(webhook.request_url, headers, data, r)
@ -108,7 +114,7 @@ def enqueue_webhook(doc, webhook):
webhook.log_error("Webhook failed")
def log_request(url, headers, data, res):
def log_request(url: str, headers: Dict, data: Dict, res: Optional[requests.Response] = None):
request_log = frappe.get_doc(
{
"doctype": "Webhook Request Log",

View file

@ -121,7 +121,7 @@ execute:frappe.delete_doc_if_exists('DocType', 'GCalendar Settings')
frappe.patches.v12_0.remove_example_email_thread_notify
execute:from frappe.desk.page.setup_wizard.install_fixtures import update_genders;update_genders()
frappe.patches.v12_0.set_correct_url_in_files
execute:frappe.reload_doc('core', 'doctype', 'doctype')
execute:frappe.reload_doc('core', 'doctype', 'doctype') #2022-06-21
execute:frappe.reload_doc('custom', 'doctype', 'property_setter')
frappe.patches.v13_0.remove_invalid_options_for_data_fields
frappe.patches.v13_0.website_theme_custom_scss
@ -190,7 +190,6 @@ frappe.patches.v14_0.transform_todo_schema
frappe.patches.v14_0.remove_post_and_post_comment
frappe.patches.v14_0.reset_creation_datetime
frappe.patches.v14_0.remove_is_first_startup
frappe.patches.v14_0.reload_workspace_child_tables
frappe.patches.v14_0.clear_long_pending_stale_logs
frappe.patches.v14_0.log_settings_migration

View file

@ -1,13 +0,0 @@
import frappe
def execute():
child_tables = frappe.get_all(
"DocField",
pluck="options",
filters={"fieldtype": ["in", frappe.model.table_fields], "parent": "Workspace"},
)
for child_table in child_tables:
if child_table != "Has Role":
frappe.reload_doc("desk", "doctype", child_table, force=True)

View file

@ -7,6 +7,16 @@ from frappe import _
def execute():
frappe.reload_doc("desk", "doctype", "workspace", force=True)
child_tables = frappe.get_all(
"DocField",
pluck="options",
filters={"fieldtype": ["in", frappe.model.table_fields], "parent": "Workspace"},
)
for child_table in child_tables:
if child_table != "Has Role":
frappe.reload_doc("desk", "doctype", child_table, force=True)
for seq, workspace in enumerate(frappe.get_all("Workspace", order_by="name asc")):
doc = frappe.get_doc("Workspace", workspace.name)
content = create_content(doc)

View file

@ -14,6 +14,8 @@ def get_print_settings_to_show(doctype, docname):
print_settings_fields = []
for fieldname in fields:
df = print_settings.meta.get_field(fieldname)
if not df:
continue
df.default = print_settings.get(fieldname)
print_settings_fields.append(df)

View file

@ -15,7 +15,7 @@ import operator
import os
import re
from csv import reader
from typing import List, Tuple, Union
from typing import Dict, List, Optional, Tuple, Union
from pypika.terms import PseudoColumn
@ -149,13 +149,12 @@ def set_default_language(lang):
def get_lang_dict():
"""Returns all languages in dict format, full name is the key e.g. `{"english":"en"}`"""
result = dict(
return dict(
frappe.get_all("Language", fields=["language_name", "name"], order_by="modified", as_list=True)
)
return result
def get_dict(fortype, name=None):
def get_dict(fortype: str, name: Optional[str] = None) -> Dict:
"""Returns translation dict for a type of object.
:param fortype: must be one of `doctype`, `page`, `report`, `include`, `jsfile`, `boot`
@ -206,7 +205,7 @@ def get_dict(fortype, name=None):
translation_assets[asset_key] = message_dict
cache.hset("translation_assets", frappe.local.lang, translation_assets, shared=True)
translation_map = translation_assets[asset_key]
translation_map: Dict = translation_assets[asset_key]
translation_map.update(get_user_translations(frappe.local.lang))
@ -249,13 +248,13 @@ def make_dict_from_messages(messages, full_dict=None, load_user_translation=True
return out
def get_lang_js(fortype, name):
def get_lang_js(fortype: str, name: str) -> str:
"""Returns code snippet to be appended at the end of a JS script.
:param fortype: Type of object, e.g. `DocType`
:param name: Document name
"""
return "\n\n$.extend(frappe._messages, %s)" % json.dumps(get_dict(fortype, name))
return f"\n\n$.extend(frappe._messages, {json.dumps(get_dict(fortype, name))})"
def get_full_dict(lang):
@ -634,10 +633,10 @@ def get_server_messages(app):
inside an app"""
messages = []
file_extensions = (".py", ".html", ".js", ".vue")
for basepath, folders, files in os.walk(frappe.get_pymodule_path(app)):
for dontwalk in (".git", "public", "locale"):
if dontwalk in folders:
folders.remove(dontwalk)
app_walk = os.walk(frappe.get_pymodule_path(app))
for basepath, folders, files in app_walk:
folders[:] = [folder for folder in folders if folder not in {".git", "__pycache__"}]
for f in files:
f = frappe.as_unicode(f)

View file

@ -2473,7 +2473,7 @@ There should remain at least one System Manager,Não deve permanecer pelo menos
There was an error saving filters,Houve um erro ao salvar os filtros,
There were errors,Ocorreram erros,
There were errors while creating the document. Please try again.,"Houve erros ao criar o documento. Por favor, tente novamente.",
There were errors while sending email. Please try again.,Ocorreram erros durante o envio de email. Por favor, tente novamente.,
There were errors while sending email. Please try again.,"Ocorreram erros durante o envio de email. Por favor, tente novamente.",
"There were some errors setting the name, please contact the administrator","Houve alguns erros de definir o nome, por favor, entre em contato com o administrador",
These values will be automatically updated in transactions and also will be useful to restrict permissions for this user on transactions containing these values.,Esses valores serão atualizados automaticamente em transações e também serão úteis para restringir as permissões para este usuário em operações que contenham esses valores.,
Third Party Apps,Aplicativos de terceiros,

Can't render this file because it contains an unexpected character in line 287 and column 8.

View file

@ -2473,7 +2473,7 @@ There should remain at least one System Manager,Não deve permanecer pelo menos
There was an error saving filters,Houve um erro ao salvar os filtros,
There were errors,Ocorreram erros,
There were errors while creating the document. Please try again.,"Houve erros ao criar o documento. Por favor, tente novamente.",
There were errors while sending email. Please try again.,Ocorreram erros durante o envio de email. Por favor, tente novamente.,
There were errors while sending email. Please try again.,"Ocorreram erros durante o envio de email. Por favor, tente novamente.",
"There were some errors setting the name, please contact the administrator","Houve alguns erros de definir o nome, por favor, entre em contato com o administrador",
These values will be automatically updated in transactions and also will be useful to restrict permissions for this user on transactions containing these values.,Esses valores serão atualizados automaticamente em transações e também serão úteis para restringir as permissões para este usuário em operações que contenham esses valores.,
Third Party Apps,Aplicativos de terceiros,

Can't render this file because it contains an unexpected character in line 287 and column 8.

View file

@ -478,7 +478,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.8
python-version: '3.10'
- name: Setup Node
uses: actions/setup-node@v2

View file

@ -4,7 +4,7 @@ authors = [
{ name = "Frappe Technologies Pvt Ltd", email = "developers@frappe.io"}
]
description = "Metadata driven, full-stack low code web framework"
requires-python = ">=3.8"
requires-python = ">=3.10"
readme = "README.md"
dynamic = ["version"]
dependencies = [
@ -103,3 +103,9 @@ force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
indent = "\t"
[tool.bench.dev-dependencies]
coverage = "~=6.4.1"
Faker = "~=13.12.1"
pyngrok = "~=5.0.5"
unittest-xml-reporting = "~=3.0.4"