Browse Source

Merge pull request #3525 from mbauskar/develop

merged hotfix branch to develop
version-14
Makarand Bauskar 8 years ago
committed by GitHub
parent
commit
921a37eaeb
8 changed files with 34 additions and 28 deletions
  1. +1
    -1
      frappe/__init__.py
  2. +2
    -7
      frappe/core/doctype/user/test_user.py
  3. +19
    -9
      frappe/core/doctype/user/user.py
  4. +5
    -6
      frappe/desk/query_report.py
  5. +3
    -1
      frappe/email/doctype/auto_email_report/auto_email_report.js
  6. +1
    -1
      frappe/integrations/doctype/dropbox_settings/dropbox_settings.py
  7. +2
    -2
      frappe/public/js/frappe/upload.js
  8. +1
    -1
      frappe/public/js/frappe/views/reports/query_report.js

+ 1
- 1
frappe/__init__.py View File

@@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json
from .exceptions import * from .exceptions import *
from .utils.jinja import get_jenv, get_template, render_template from .utils.jinja import get_jenv, get_template, render_template


__version__ = '8.0.69'
__version__ = '8.0.70'
__title__ = "Frappe Framework" __title__ = "Frappe Framework"


local = Local() local = Local()


+ 2
- 7
frappe/core/doctype/user/test_user.py View File

@@ -222,15 +222,10 @@ class TestUser(unittest.TestCase):
def test_password_strength(self): def test_password_strength(self):
# Test Password without Password Strenth Policy # Test Password without Password Strenth Policy
frappe.db.set_value("System Settings", "System Settings", "enable_password_policy", 0) frappe.db.set_value("System Settings", "System Settings", "enable_password_policy", 0)
frappe.db.set_value("System Settings", "System Settings", "minimum_password_score", "")


# Score 0; should fail
# password policy is disabled, test_password_strength should be ignored
result = test_password_strength("test_password") result = test_password_strength("test_password")
self.assertEqual(result['feedback']['password_policy_validation_passed'], False)

# Score 1; should pass
result = test_password_strength("bee2ve")
self.assertEqual(result['feedback']['password_policy_validation_passed'], True)
self.assertFalse(result.get("feedback", None))


# Test Password with Password Strenth Policy Set # Test Password with Password Strenth Policy Set
frappe.db.set_value("System Settings", "System Settings", "enable_password_policy", 1) frappe.db.set_value("System Settings", "System Settings", "enable_password_policy", 1)


+ 19
- 9
frappe/core/doctype/user/user.py View File

@@ -408,11 +408,12 @@ class User(Document):


def password_strength_test(self): def password_strength_test(self):
""" test password strength """ """ test password strength """
if frappe.db.get_single_value("System Settings", "enable_password_policy") and self.__new_password:
if self.__new_password:
user_data = (self.first_name, self.middle_name, self.last_name, self.email, self.birth_date) user_data = (self.first_name, self.middle_name, self.last_name, self.email, self.birth_date)
result = test_password_strength(self.__new_password, '', None, user_data) result = test_password_strength(self.__new_password, '', None, user_data)
feedback = result.get("feedback", None)


if not result['feedback']['password_policy_validation_passed']:
if feedback and not feedback.get('password_policy_validation_passed', False):
handle_password_test_fail(result) handle_password_test_fail(result)


def suggest_username(self): def suggest_username(self):
@@ -512,8 +513,9 @@ def get_perm_info(role):
@frappe.whitelist(allow_guest=True) @frappe.whitelist(allow_guest=True)
def update_password(new_password, key=None, old_password=None): def update_password(new_password, key=None, old_password=None):
result = test_password_strength(new_password, key, old_password) result = test_password_strength(new_password, key, old_password)
feedback = result.get("feedback", None)


if not result['feedback']['password_policy_validation_passed']:
if feedback and not feedback.get('password_policy_validation_passed', False):
handle_password_test_fail(result) handle_password_test_fail(result)


res = _get_user_for_update_password(key, old_password) res = _get_user_for_update_password(key, old_password)
@@ -544,20 +546,28 @@ def update_password(new_password, key=None, old_password=None):
def test_password_strength(new_password, key=None, old_password=None, user_data=[]): def test_password_strength(new_password, key=None, old_password=None, user_data=[]):
from frappe.utils.password_strength import test_password_strength as _test_password_strength from frappe.utils.password_strength import test_password_strength as _test_password_strength


password_policy = frappe.db.get_value("System Settings", None,
["enable_password_policy", "minimum_password_score"], as_dict=True)

enable_password_policy = cint(password_policy.get("enable_password_policy", 0))
minimum_password_score = cint(password_policy.get("minimum_password_score", 0))

if not enable_password_policy:
return {}

if not user_data: if not user_data:
user_data = frappe.db.get_value('User', frappe.session.user, ['first_name', 'middle_name', 'last_name', 'email', 'birth_date'])
user_data = frappe.db.get_value('User', frappe.session.user,
['first_name', 'middle_name', 'last_name', 'email', 'birth_date'])


if new_password: if new_password:
result = _test_password_strength(new_password, user_inputs=user_data) result = _test_password_strength(new_password, user_inputs=user_data)

minimum_password_score = cint(frappe.db.get_single_value("System Settings", "minimum_password_score")) or 0

password_policy_validation_passed = False password_policy_validation_passed = False
if result['score'] > minimum_password_score:

# score should be greater than 0 and minimum_password_score
if result.get('score') and result.get('score') >= minimum_password_score:
password_policy_validation_passed = True password_policy_validation_passed = True


result['feedback']['password_policy_validation_passed'] = password_policy_validation_passed result['feedback']['password_policy_validation_passed'] = password_policy_validation_passed

return result return result


#for login #for login


+ 5
- 6
frappe/desk/query_report.py View File

@@ -146,18 +146,17 @@ def export_query():
# build table from dict # build table from dict
if isinstance(data.result[0], dict): if isinstance(data.result[0], dict):
for row in data.result:
if row:
for i,row in enumerate(data.result):
# only rows which are visible in the report
if row and (i+1 in visible_idx):
row_list = [] row_list = []
for idx in range(len(data.columns)): for idx in range(len(data.columns)):
row_list.append(row.get(columns[idx]["fieldname"],"")) row_list.append(row.get(columns[idx]["fieldname"],""))
result.append(row_list) result.append(row_list)
elif not row:
result.append([])
else: else:
result = result + data.result result = result + data.result
# filter rows by slickgrid's inline filter
if visible_idx:
result = [x for idx, x in enumerate(result) if idx == 0 or idx in visible_idx]


from frappe.utils.xlsxutils import make_xlsx from frappe.utils.xlsxutils import make_xlsx
xlsx_file = make_xlsx(result, "Query Report") xlsx_file = make_xlsx(result, "Query Report")


+ 3
- 1
frappe/email/doctype/auto_email_report/auto_email_report.js View File

@@ -66,7 +66,9 @@ frappe.ui.form.on('Auto Email Report', {


var filters = JSON.parse(frm.doc.filters || '{}'); var filters = JSON.parse(frm.doc.filters || '{}');
var report_filters = frappe.query_reports[frm.doc.report].filters; var report_filters = frappe.query_reports[frm.doc.report].filters;
frm.set_value('filter_meta', JSON.stringify(report_filters));
if(report_filters && report_filters.length > 0) {
frm.set_value('filter_meta', JSON.stringify(report_filters));
}


var report_filters_list = [] var report_filters_list = []
$.each(report_filters, function(key, val){ $.each(report_filters, function(key, val){


+ 1
- 1
frappe/integrations/doctype/dropbox_settings/dropbox_settings.py View File

@@ -104,7 +104,7 @@ def dropbox_callback(oauth_token=None, not_approved=False):
@frappe.whitelist() @frappe.whitelist()
def take_backup(): def take_backup():
"Enqueue longjob for taking backup to dropbox" "Enqueue longjob for taking backup to dropbox"
enqueue("frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backup_to_dropbox", queue='long')
enqueue("frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backup_to_dropbox", queue='long', timeout=1500)
frappe.msgprint(_("Queued for backup. It may take a few minutes to an hour.")) frappe.msgprint(_("Queued for backup. It may take a few minutes to an hour."))


def take_backups_daily(): def take_backups_daily():


+ 2
- 2
frappe/public/js/frappe/upload.js View File

@@ -53,7 +53,7 @@ frappe.upload = {
$uploaded_files_wrapper.removeClass('hidden').empty(); $uploaded_files_wrapper.removeClass('hidden').empty();


file_array = file_array.map( file_array = file_array.map(
file => Object.assign(file, {is_private: opts.is_private || 0})
file => Object.assign(file, {is_private: opts.is_private || 1})
) )
$upload.data('attached_files', file_array); $upload.data('attached_files', file_array);


@@ -391,4 +391,4 @@ frappe.upload = {
} }
}); });
} }
}
}

+ 1
- 1
frappe/public/js/frappe/views/reports/query_report.js View File

@@ -834,7 +834,7 @@ frappe.views.QueryReport = Class.extend({
var view_data = frappe.slickgrid_tools.get_view_data(me.columns, me.dataView); var view_data = frappe.slickgrid_tools.get_view_data(me.columns, me.dataView);
var result = view_data.map(row => row.splice(1)); var result = view_data.map(row => row.splice(1));


// rows filtered by inline_filter of slickgrid
// to download only visible rows
var visible_idx = view_data.map(row => row[0]).filter(sr_no => sr_no !== 'Sr No'); var visible_idx = view_data.map(row => row[0]).filter(sr_no => sr_no !== 'Sr No');


if (data.file_format_type == "CSV") { if (data.file_format_type == "CSV") {


Loading…
Cancel
Save