From b7bac9cd49cab3ad6a8c1840c45810177ed264cd Mon Sep 17 00:00:00 2001 From: Ameya Shenoy Date: Mon, 17 Dec 2018 16:07:44 +0530 Subject: [PATCH 1/8] fix(auto_email_report): max_reports_per_user (#6628) Option to modify the value for max_reports_per_user via the site_config.json --- frappe/email/doctype/auto_email_report/auto_email_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/email/doctype/auto_email_report/auto_email_report.py b/frappe/email/doctype/auto_email_report/auto_email_report.py index a75c54f33b..1dca361d0a 100644 --- a/frappe/email/doctype/auto_email_report/auto_email_report.py +++ b/frappe/email/doctype/auto_email_report/auto_email_report.py @@ -12,7 +12,7 @@ from frappe.utils import now, global_date_format, format_time from frappe.utils.xlsxutils import make_xlsx from frappe.utils.csvutils import to_csv -max_reports_per_user = 3 +max_reports_per_user = frappe.local.conf.max_reports_per_user or 3 class AutoEmailReport(Document): def autoname(self): From 0367fe3025898504e0e6d8fddd9f465144ebfb9e Mon Sep 17 00:00:00 2001 From: khushalti Date: Tue, 18 Dec 2018 08:56:37 +0530 Subject: [PATCH 2/8] [Fix] - Corrected json format (#6621) --- frappe/data/sample_site_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/data/sample_site_config.json b/frappe/data/sample_site_config.json index 1bf3914039..36818ef286 100644 --- a/frappe/data/sample_site_config.json +++ b/frappe/data/sample_site_config.json @@ -8,7 +8,7 @@ "space": 0.157, "expiry": "2016-07-25", "users": 1 - } + }, "developer_mode": 1, "auto_cache_clear": true, From 3128723b093fbfab10a1d20a0ea7b8b044d6c744 Mon Sep 17 00:00:00 2001 From: Shreya Shah Date: Tue, 18 Dec 2018 09:01:29 +0530 Subject: [PATCH 3/8] fix: pass parameters as list (#6625) * fix: pass parameters as list * test: Add test case * test: Add json data for test --- frappe/core/doctype/report/report.py | 2 +- frappe/core/doctype/report/test_report.py | 16 ++++++++++++++++ .../user_activity_report_without_sort.json | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 frappe/core/doctype/report/user_activity_report_without_sort.json diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index a7b1c4d4dc..197e781843 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -149,7 +149,7 @@ class Report(Document): if params.get('sort_by'): order_by = _format(params.get('sort_by').split('.')) + ' ' + params.get('sort_order') else: - order_by = _format(self.ref_doctype, 'modified') + ' desc' + order_by = _format([self.ref_doctype, 'modified']) + ' desc' if params.get('sort_by_next'): order_by += ', ' + _format(params.get('sort_by_next').split('.')) + ' ' + params.get('sort_order_next') diff --git a/frappe/core/doctype/report/test_report.py b/frappe/core/doctype/report/test_report.py index c2d5629a2b..287363e20f 100644 --- a/frappe/core/doctype/report/test_report.py +++ b/frappe/core/doctype/report/test_report.py @@ -53,3 +53,19 @@ class TestReport(unittest.TestCase): report = frappe.get_doc('Report', 'Test Report') self.assertNotEquals(report.is_permitted(), True) + + # test for the `_format` method if report data doesn't have sort_by parameter + def test_format_method(self): + if frappe.db.exists('Report', 'User Activity Report Without Sort'): + frappe.delete_doc('Report', 'User Activity Report Without Sort') + with open(os.path.join(os.path.dirname(__file__), 'user_activity_report_without_sort.json'), 'r') as f: + frappe.get_doc(json.loads(f.read())).insert() + + report = frappe.get_doc('Report', 'User Activity Report Without Sort') + + # this would raise an error without the fix added along with this test case + columns, data = report.get_data() + self.assertEqual(columns[0].get('label'), 'ID') + self.assertEqual(columns[1].get('label'), 'User Type') + self.assertTrue('Administrator' in [d[0] for d in data]) + frappe.delete_doc('Report', 'User Activity Report Without Sort') \ No newline at end of file diff --git a/frappe/core/doctype/report/user_activity_report_without_sort.json b/frappe/core/doctype/report/user_activity_report_without_sort.json new file mode 100644 index 0000000000..bb520a25e2 --- /dev/null +++ b/frappe/core/doctype/report/user_activity_report_without_sort.json @@ -0,0 +1,17 @@ +{ + "add_total_row": 0, + "apply_user_permissions": 1, + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "is_standard": "No", + "javascript": null, + "json": "{\"filters\":[],\"columns\":[[\"name\",\"User\"],[\"user_type\",\"User\"],[\"first_name\",\"User\"],[\"last_name\",\"User\"],[\"last_active\",\"User\"],[\"role\",\"Has Role\"]],\"sort_order\":\"desc\",\"sort_by_next\":null,\"sort_order_next\":\"desc\"}", + "modified": "2018-12-17 18:27:07.728890", + "module": "Core", + "name": "User Activity Report Without Sort", + "query": null, + "ref_doctype": "User", + "report_name": "User Activity Report Without Sort", + "report_type": "Report Builder" + } \ No newline at end of file From 5e7e78c2dea8fe97546f538a5e8cc45d913fda4d Mon Sep 17 00:00:00 2001 From: Shreya Shah Date: Tue, 18 Dec 2018 09:01:55 +0530 Subject: [PATCH 4/8] fix: comment mentions (#6611) * fix: replace br with div * test: Add test coverage --- frappe/core/doctype/user/test_user.py | 7 +++++++ frappe/core/doctype/user/user.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/frappe/core/doctype/user/test_user.py b/frappe/core/doctype/user/test_user.py index a5b54e7b8d..857e537997 100644 --- a/frappe/core/doctype/user/test_user.py +++ b/frappe/core/doctype/user/test_user.py @@ -266,3 +266,10 @@ class TestUser(unittest.TestCase): self.assertEqual(extract_mentions(user_name)[0], "test-user") user_name = "Testing comment, @test.user@example.com please check." self.assertEqual(extract_mentions(user_name)[0], "test.user@example.com") + user_name = "
@test_user@example.com and @test.again@example1.com
This is a test.
" + self.assertEqual(extract_mentions(user_name)[0], "test_user@example.com") + self.assertEqual(extract_mentions(user_name)[1], "test.again@example1.com") + user_name = "
@user@example.com Test @test-comment@xyz.com
Test for comment mentions @test@abc.com
" + self.assertEqual(extract_mentions(user_name)[0], "user@example.com") + self.assertEqual(extract_mentions(user_name)[1], "test-comment@xyz.com") + self.assertEqual(extract_mentions(user_name)[2], "test@abc.com") \ No newline at end of file diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py index c4378dbb8c..68e178c42f 100644 --- a/frappe/core/doctype/user/user.py +++ b/frappe/core/doctype/user/user.py @@ -901,7 +901,7 @@ def notify_admin_access_to_system_manager(login_manager=None): def extract_mentions(txt): """Find all instances of @name in the string. The mentions will be separated by non-word characters or may appear at the start of the string""" - txt = txt.replace("
", "
") + txt = txt.replace("
", "
") txt = re.sub(r'(<[a-zA-Z\/][^>]*>)', '', txt) return re.findall(r'(?:[^\w\.\-\@]|^)@([\w\.\-\@]*)', txt) From 30d884169494861914bfea38d15df614616f8c3f Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 18 Dec 2018 23:12:47 +0530 Subject: [PATCH 5/8] [fix] setup subscription datetime in utc format --- .../integrations/doctype/paypal_settings/paypal_settings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frappe/integrations/doctype/paypal_settings/paypal_settings.py b/frappe/integrations/doctype/paypal_settings/paypal_settings.py index 83a1cb0aab..5b72275814 100644 --- a/frappe/integrations/doctype/paypal_settings/paypal_settings.py +++ b/frappe/integrations/doctype/paypal_settings/paypal_settings.py @@ -66,6 +66,7 @@ More Details: from __future__ import unicode_literals import frappe import json +import pytz from frappe import _ from datetime import datetime from six.moves.urllib.parse import urlencode @@ -309,9 +310,11 @@ def create_recurring_profile(token, payerid): "INITAMT": data.get("upfront_amount") }) - starts_at = get_datetime(subscription_details.get("start_date")) or frappe.utils.now_datetime() status_changed_to = 'Completed' if data.get("starting_immediately") or updating else 'Verified' + starts_at = get_datetime(subscription_details.get("start_date")) or frappe.utils.now_datetime() + starts_at = starts_at.replace(tzinfo=pytz.timezone(frappe.utils.get_time_zone())).astimezone(pytz.utc) + #"PROFILESTARTDATE": datetime.utcfromtimestamp(get_timestamp(starts_at)).isoformat() params.update({ "PROFILESTARTDATE": starts_at.isoformat() From dcdc66b4593e514b1d135483ecda36bb5fb0c090 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 18 Dec 2018 23:15:39 +0530 Subject: [PATCH 6/8] [fix] remove unwanted imports --- frappe/integrations/doctype/paypal_settings/paypal_settings.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frappe/integrations/doctype/paypal_settings/paypal_settings.py b/frappe/integrations/doctype/paypal_settings/paypal_settings.py index 5b72275814..62e0555437 100644 --- a/frappe/integrations/doctype/paypal_settings/paypal_settings.py +++ b/frappe/integrations/doctype/paypal_settings/paypal_settings.py @@ -68,11 +68,10 @@ import frappe import json import pytz from frappe import _ -from datetime import datetime from six.moves.urllib.parse import urlencode from frappe.model.document import Document from frappe.integrations.utils import create_request_log, make_post_request, create_payment_gateway -from frappe.utils import get_url, call_hook_method, cint, get_timestamp, cstr, now, date_diff, get_datetime +from frappe.utils import get_url, call_hook_method, cint, get_datetime api_path = '/api/method/frappe.integrations.doctype.paypal_settings.paypal_settings' From d63570059ded3b04356dc615c3810541b662ce6b Mon Sep 17 00:00:00 2001 From: Frappe Bot Date: Wed, 19 Dec 2018 06:19:04 +0000 Subject: [PATCH 7/8] bumped to version 10.1.68 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 405cdd88e5..cd6f0b8a8d 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template -__version__ = '10.1.67' +__version__ = '10.1.68' __title__ = "Frappe Framework" local = Local() From c824248c58c2aff43ffd5ad96cf0b79e72b628c9 Mon Sep 17 00:00:00 2001 From: Frappe Bot Date: Wed, 19 Dec 2018 06:28:00 +0000 Subject: [PATCH 8/8] bumped to version 11.0.3-beta.39 --- frappe/hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/hooks.py b/frappe/hooks.py index 5c7c45861c..742599377b 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -12,7 +12,7 @@ source_link = "https://github.com/frappe/frappe" app_license = "MIT" develop_version = '12.x.x-develop' -staging_version = '11.0.3-beta.38' +staging_version = '11.0.3-beta.39' app_email = "info@frappe.io"