diff --git a/frappe/event_streaming/doctype/event_producer/event_producer.py b/frappe/event_streaming/doctype/event_producer/event_producer.py index 26b6d5dde5..3d97583549 100644 --- a/frappe/event_streaming/doctype/event_producer/event_producer.py +++ b/frappe/event_streaming/doctype/event_producer/event_producer.py @@ -2,19 +2,19 @@ # Copyright (c) 2019, Frappe Technologies and contributors # For license information, please see license.txt -from __future__ import unicode_literals -import frappe import json import time + import requests -from six import iteritems + +import frappe from frappe import _ -from frappe.model.document import Document -from frappe.frappeclient import FrappeClient -from frappe.utils.background_jobs import get_jobs -from frappe.utils.data import get_url, get_link_to_form -from frappe.utils.password import get_decrypted_password from frappe.custom.doctype.custom_field.custom_field import create_custom_field +from frappe.frappeclient import FrappeClient +from frappe.model.document import Document +from frappe.utils.background_jobs import get_jobs +from frappe.utils.data import get_link_to_form, get_url +from frappe.utils.password import get_decrypted_password class EventProducer(Document): @@ -271,8 +271,8 @@ def set_insert(update, producer_site, event_producer): if update.mapping: if update.get('dependencies'): dependencies_created = sync_mapped_dependencies(update.dependencies, producer_site) - for fieldname, value in iteritems(dependencies_created): - doc.update({ fieldname : value }) + for fieldname, value in dependencies_created.items(): + doc.update({fieldname: value}) else: sync_dependencies(doc, producer_site) @@ -303,8 +303,8 @@ def set_update(update, producer_site): if update.mapping: if update.get('dependencies'): dependencies_created = sync_mapped_dependencies(update.dependencies, producer_site) - for fieldname, value in iteritems(dependencies_created): - local_doc.update({ fieldname : value }) + for fieldname, value in dependencies_created.items(): + local_doc.update({fieldname: value}) else: sync_dependencies(local_doc, producer_site) @@ -314,7 +314,7 @@ def set_update(update, producer_site): def update_row_removed(local_doc, removed): """Sync child table row deletion type update""" - for tablename, rownames in iteritems(removed): + for tablename, rownames in removed.items(): table = local_doc.get_table_field_doctype(tablename) for row in rownames: table_rows = local_doc.get(tablename) @@ -332,7 +332,7 @@ def get_child_table_row(table_rows, row): def update_row_changed(local_doc, changed): """Sync child table row updation type update""" - for tablename, rows in iteritems(changed): + for tablename, rows in changed.items(): old = local_doc.get(tablename) for doc in old: for row in rows: @@ -342,7 +342,7 @@ def update_row_changed(local_doc, changed): def update_row_added(local_doc, added): """Sync child table row addition type update""" - for tablename, rows in iteritems(added): + for tablename, rows in added.items(): local_doc.extend(tablename, rows) for child in rows: child_doc = frappe.get_doc(child) diff --git a/frappe/integrations/oauth2.py b/frappe/integrations/oauth2.py index 5f0393e008..2ce99d8aa3 100644 --- a/frappe/integrations/oauth2.py +++ b/frappe/integrations/oauth2.py @@ -1,20 +1,21 @@ import json from urllib.parse import quote, urlencode + from oauthlib.oauth2 import FatalClientError, OAuth2Error from oauthlib.openid.connect.core.endpoints.pre_configured import ( Server as WebApplicationServer, ) import frappe +from frappe.integrations.doctype.oauth_provider_settings.oauth_provider_settings import ( + get_oauth_settings, +) from frappe.oauth import ( OAuthWebRequestValidator, generate_json_error_response, get_server_url, get_userinfo, ) -from frappe.integrations.doctype.oauth_provider_settings.oauth_provider_settings import ( - get_oauth_settings, -) def get_oauth_server(): diff --git a/frappe/oauth.py b/frappe/oauth.py index 076ce2d2be..3287bf7520 100644 --- a/frappe/oauth.py +++ b/frappe/oauth.py @@ -1,13 +1,13 @@ -import pytz -import jwt -import hashlib -import re import base64 import datetime - +import hashlib +import re from http import cookies +from urllib.parse import unquote, urlparse + +import jwt +import pytz from oauthlib.openid import RequestValidator -from urllib.parse import urlparse, unquote import frappe from frappe.auth import LoginManager diff --git a/frappe/tests/test_oauth20.py b/frappe/tests/test_oauth20.py index 8e383403ce..cf3b2ea90d 100644 --- a/frappe/tests/test_oauth20.py +++ b/frappe/tests/test_oauth20.py @@ -1,16 +1,16 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # MIT License. See license.txt -from __future__ import unicode_literals import unittest -import requests +from urllib.parse import parse_qs, urljoin, urlparse + import jwt -from six.moves.urllib.parse import urlparse, parse_qs, urljoin -from urllib.parse import urlencode, quote +import requests import frappe -from frappe.test_runner import make_test_records from frappe.integrations.oauth2 import encode_params +from frappe.test_runner import make_test_records + class TestOAuth20(unittest.TestCase): diff --git a/frappe/utils/__init__.py b/frappe/utils/__init__.py index d5ee60ddf0..4feebf42ea 100644 --- a/frappe/utils/__init__.py +++ b/frappe/utils/__init__.py @@ -1,8 +1,6 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # MIT License. See license.txt -from __future__ import print_function, unicode_literals - import functools import hashlib import io @@ -12,13 +10,12 @@ import re import sys import traceback import typing - from email.header import decode_header, make_header from email.utils import formataddr, parseaddr from gzip import GzipFile from typing import Generator, Iterable - from urllib.parse import quote, urlparse + from werkzeug.test import Client import frappe @@ -26,7 +23,6 @@ import frappe from frappe.utils.data import * from frappe.utils.html_utils import sanitize_html - default_fields = ['doctype', 'name', 'owner', 'creation', 'modified', 'modified_by', 'parent', 'parentfield', 'parenttype', 'idx', 'docstatus'] @@ -71,7 +67,7 @@ def get_formatted_email(user, mail=None): def extract_email_id(email): """fetch only the email part of the Email Address""" email_id = parse_addr(email)[1] - if email_id and isinstance(email_id, str) and not isinstance(email_id, str): + if email_id and isinstance(email_id, bytes): email_id = email_id.decode("utf-8", "ignore") return email_id @@ -369,14 +365,14 @@ def get_site_url(site): def encode_dict(d, encoding="utf-8"): for key in d: - if isinstance(d[key], str) and isinstance(d[key], str): + if isinstance(d[key], str): d[key] = d[key].encode(encoding) return d def decode_dict(d, encoding="utf-8"): for key in d: - if isinstance(d[key], str) and not isinstance(d[key], str): + if isinstance(d[key], bytes): d[key] = d[key].decode(encoding, "ignore") return d @@ -813,10 +809,10 @@ def groupby_metric(iterable: typing.Dict[str, list], key: str): records.setdefault(item[key], {}).setdefault(category, []).append(item) return records + def validate_url(url_string): try: result = urlparse(url_string) return result.scheme and result.scheme in ["http", "https", "ftp", "ftps"] except Exception: return False -