[MERGE] Forward port latest bugfixes from 7.0 up to b4de311
This commit is contained in:
commit
cc5860fbcf
|
@ -11,7 +11,7 @@
|
||||||
import hashlib
|
import hashlib
|
||||||
import hmac
|
import hmac
|
||||||
import logging
|
import logging
|
||||||
from random import sample
|
import random
|
||||||
from string import ascii_letters, digits
|
from string import ascii_letters, digits
|
||||||
|
|
||||||
import openerp
|
import openerp
|
||||||
|
@ -22,12 +22,13 @@ _logger = logging.getLogger(__name__)
|
||||||
magic_md5 = '$1$'
|
magic_md5 = '$1$'
|
||||||
magic_sha256 = '$5$'
|
magic_sha256 = '$5$'
|
||||||
|
|
||||||
openerp.addons.base.res.res_users.USER_PRIVATE_FIELDS.append('password_crypt')
|
from openerp.addons.base.res import res_users
|
||||||
|
res_users.USER_PRIVATE_FIELDS.append('password_crypt')
|
||||||
|
|
||||||
def gen_salt(length=8, symbols=None):
|
def gen_salt(length=8, symbols=None):
|
||||||
if symbols is None:
|
if symbols is None:
|
||||||
symbols = ascii_letters + digits
|
symbols = ascii_letters + digits
|
||||||
return ''.join(sample(symbols, length))
|
return ''.join(random.SystemRandom().sample(symbols, length))
|
||||||
|
|
||||||
def md5crypt( raw_pw, salt, magic=magic_md5 ):
|
def md5crypt( raw_pw, salt, magic=magic_md5 ):
|
||||||
""" md5crypt FreeBSD crypt(3) based on but different from md5
|
""" md5crypt FreeBSD crypt(3) based on but different from md5
|
||||||
|
|
|
@ -35,7 +35,7 @@ class SignupError(Exception):
|
||||||
def random_token():
|
def random_token():
|
||||||
# the token has an entropy of about 120 bits (6 bits/char * 20 chars)
|
# the token has an entropy of about 120 bits (6 bits/char * 20 chars)
|
||||||
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
|
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
|
||||||
return ''.join(random.choice(chars) for i in xrange(20))
|
return ''.join(random.SystemRandom().choice(chars) for i in xrange(20))
|
||||||
|
|
||||||
def now(**kwargs):
|
def now(**kwargs):
|
||||||
dt = datetime.now() + timedelta(**kwargs)
|
dt = datetime.now() + timedelta(**kwargs)
|
||||||
|
|
|
@ -35,7 +35,7 @@ class pad_common(osv.osv_memory):
|
||||||
pad["server"] = pad["server"].rstrip('/')
|
pad["server"] = pad["server"].rstrip('/')
|
||||||
# generate a salt
|
# generate a salt
|
||||||
s = string.ascii_uppercase + string.digits
|
s = string.ascii_uppercase + string.digits
|
||||||
salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(10)])
|
salt = ''.join([s[random.SystemRandom().randint(0, len(s) - 1)] for i in range(10)])
|
||||||
#path
|
#path
|
||||||
# etherpad hardcodes pad id length limit to 50
|
# etherpad hardcodes pad id length limit to 50
|
||||||
path = '-%s-%s' % (self._name, salt)
|
path = '-%s-%s' % (self._name, salt)
|
||||||
|
|
|
@ -46,7 +46,7 @@ DOMAIN_ALL = [(1, '=', 1)]
|
||||||
# A good selection of easy to read password characters (e.g. no '0' vs 'O', etc.)
|
# A good selection of easy to read password characters (e.g. no '0' vs 'O', etc.)
|
||||||
RANDOM_PASS_CHARACTERS = 'aaaabcdeeeefghjkmnpqrstuvwxyzAAAABCDEEEEFGHJKLMNPQRSTUVWXYZ23456789'
|
RANDOM_PASS_CHARACTERS = 'aaaabcdeeeefghjkmnpqrstuvwxyzAAAABCDEEEEFGHJKLMNPQRSTUVWXYZ23456789'
|
||||||
def generate_random_pass():
|
def generate_random_pass():
|
||||||
return ''.join(random.sample(RANDOM_PASS_CHARACTERS,10))
|
return ''.join(random.SystemRandom().sample(RANDOM_PASS_CHARACTERS,10))
|
||||||
|
|
||||||
class share_wizard(osv.TransientModel):
|
class share_wizard(osv.TransientModel):
|
||||||
_name = 'share.wizard'
|
_name = 'share.wizard'
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
import time
|
import time
|
||||||
from random import choice
|
import random
|
||||||
import string
|
import string
|
||||||
import os
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
|
@ -53,7 +53,7 @@ class survey_send_invitation(osv.osv_memory):
|
||||||
|
|
||||||
def genpasswd(self):
|
def genpasswd(self):
|
||||||
chars = string.letters + string.digits
|
chars = string.letters + string.digits
|
||||||
return ''.join([choice(chars) for i in range(6)])
|
return ''.join([random.SystemRandom().choice(chars) for i in range(6)])
|
||||||
|
|
||||||
def default_get(self, cr, uid, fields_list, context=None):
|
def default_get(self, cr, uid, fields_list, context=None):
|
||||||
if context is None:
|
if context is None:
|
||||||
|
|
Loading…
Reference in New Issue