Просмотр исходного кода

Merge branch 'hotfix'

version-14
mbauskar 8 лет назад
Родитель
Сommit
023d55e3ae
8 измененных файлов: 34 добавлений и 29 удалений
  1. +1
    -1
      frappe/__init__.py
  2. +2
    -7
      frappe/core/doctype/user/test_user.py
  3. +19
    -10
      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 Просмотреть файл

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

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

local = Local()


+ 2
- 7
frappe/core/doctype/user/test_user.py Просмотреть файл

@@ -222,15 +222,10 @@ class TestUser(unittest.TestCase):
def test_password_strength(self):
# 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", "minimum_password_score", "")

# Score 0; should fail
# password policy is disabled, test_password_strength should be ignored
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
frappe.db.set_value("System Settings", "System Settings", "enable_password_policy", 1)


+ 19
- 10
frappe/core/doctype/user/user.py Просмотреть файл

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

def password_strength_test(self):
""" 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)
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)

def suggest_username(self):
@@ -507,8 +508,9 @@ def get_perm_info(role):
@frappe.whitelist(allow_guest=True)
def update_password(new_password, key=None, old_password=None):
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)

res = _get_user_for_update_password(key, old_password)
@@ -539,21 +541,28 @@ def update_password(new_password, key=None, old_password=None):
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

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:
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:
result = _test_password_strength(new_password, user_inputs=user_data)

enable_password_policy = cint(frappe.db.get_single_value("System Settings", "enable_password_policy")) and True or False
minimum_password_score = cint(frappe.db.get_single_value("System Settings", "minimum_password_score")) or 0

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

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

return result

#for login


+ 5
- 6
frappe/desk/query_report.py Просмотреть файл

@@ -146,18 +146,17 @@ def export_query():
# build table from 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 = []
for idx in range(len(data.columns)):
row_list.append(row.get(columns[idx]["fieldname"],""))
result.append(row_list)
elif not row:
result.append([])
else:
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
xlsx_file = make_xlsx(result, "Query Report")


+ 3
- 1
frappe/email/doctype/auto_email_report/auto_email_report.js Просмотреть файл

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

var filters = JSON.parse(frm.doc.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));
}

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


+ 1
- 1
frappe/integrations/doctype/dropbox_settings/dropbox_settings.py Просмотреть файл

@@ -104,7 +104,7 @@ def dropbox_callback(oauth_token=None, not_approved=False):
@frappe.whitelist()
def take_backup():
"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."))

def take_backups_daily():


+ 2
- 2
frappe/public/js/frappe/upload.js Просмотреть файл

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

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);

@@ -379,4 +379,4 @@ frappe.upload = {
d.show();
opts.confirm_is_private = 0;
}
}
}

+ 1
- 1
frappe/public/js/frappe/views/reports/query_report.js Просмотреть файл

@@ -827,7 +827,7 @@ frappe.views.QueryReport = Class.extend({
var view_data = frappe.slickgrid_tools.get_view_data(me.columns, me.dataView);
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');

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


Загрузка…
Отмена
Сохранить