Merge branch 'hotfix'

This commit is contained in:
Nabin Hait 2017-06-07 12:11:35 +05:30
commit 8c1b31655a
6 changed files with 21 additions and 9 deletions

View file

@ -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.64'
__version__ = '8.0.65'
__title__ = "Frappe Framework"
local = Local()

View file

@ -49,7 +49,9 @@ class User(Document):
self.__new_password = self.new_password
self.new_password = ""
self.password_strength_test()
if not frappe.flags.in_test:
self.password_strength_test()
if self.name not in STANDARD_USERS:
self.validate_email_type(self.email)
self.validate_email_type(self.name)
@ -409,7 +411,8 @@ class User(Document):
self.username = ""
def password_strength_test(self):
if self.__new_password:
""" test password strength """
if frappe.db.get_single_value("System Settings", "enable_password_policy") and 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)
@ -869,4 +872,4 @@ def handle_password_test_fail(result):
suggestions = result['feedback']['suggestions'][0] if result['feedback']['suggestions'] else ''
warning = result['feedback']['warning'] if 'warning' in result['feedback'] else ''
suggestions += "<br>" + _("Hint: Include symbols, numbers and capital letters in the password") + '<br>'
frappe.throw(_('Invalid Password: ' + ' '.join([warning, suggestions])))
frappe.throw(_('Invalid Password: ' + ' '.join([warning, suggestions])))

View file

@ -709,6 +709,7 @@ class Document(BaseDocument):
# value change is not applicable in insert
event_map['validate'] = 'Value Change'
event_map['before_change'] = 'Value Change'
event_map['before_update_after_submit'] = 'Value Change'
for alert in self.flags.email_alerts:
event = event_map.get(method, None)

View file

@ -23,7 +23,7 @@ frappe.ui.form.MultiSelectDialog = Class.extend({
let fields = [
{
fieldtype: "Data",
label: __("Search term"),
label: __("Search Term"),
fieldname: "search_term"
},
{

View file

@ -661,7 +661,9 @@ return /******/ (function(modules) { // webpackBootstrap
);
self.element_groups.arrow.add(arrow.element);
return arrow; // eslint-disable-line
});
}).filter(function (arr) {
return arr;
}); // filter falsy values
self._arrows = self._arrows.concat(arrows);
};

View file

@ -2,8 +2,10 @@
# MIT License. See license.txt
from __future__ import unicode_literals
from frappe import _
import zxcvbn
import frappe
from frappe import _
def test_password_strength(password, user_inputs=None):
'''Wrapper around zxcvbn.password_strength'''
@ -35,12 +37,14 @@ def get_feedback (score, sequence):
"""
Returns the feedback dictionary consisting of ("warning","suggestions") for the given sequences.
"""
minimum_password_score = frappe.db.get_single_value("System Settings", "minimum_password_score")
global default_feedback
# Starting feedback
if len(sequence) == 0:
return default_feedback
# No feedback if score is good or great
if score > 2:
if score >= minimum_password_score:
return dict({"warning": "","suggestions": []})
# Tie feedback to the longest match for longer sequences
longest_match = max(sequence, key=lambda x: len(x['token']))
@ -132,7 +136,9 @@ def get_match_feedback(match, is_sole_match):
"date": fun_date,
"year": fun_date
}
return(patterns[match['pattern']]())
pattern_fn = patterns.get(match['pattern'])
if pattern_fn:
return(pattern_fn())
def get_dictionary_match_feedback(match, is_sole_match):
"""