From 263f8e57aa490c12cea09bf99826ddabf018701f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 25 Sep 2013 19:21:50 +0200 Subject: [PATCH] Fix set password by refactoring review1079003 --- trytond/protocols/dispatcher.py | 28 ++++++++++++++-------------- trytond/server.py | 21 +++++++-------------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py index 0c13d8ab8e..342a2f7741 100644 --- a/trytond/protocols/dispatcher.py +++ b/trytond/protocols/dispatcher.py @@ -5,7 +5,6 @@ import traceback import logging import time import sys -import hashlib import pydoc from sql import Table @@ -242,22 +241,23 @@ def create(database_name, password, lang, admin_password): pool = Pool(database_name) pool.init(update=True, lang=[lang]) with Transaction().start(database_name, 0) as transaction: - cursor = transaction.cursor - cursor.execute(*ir_lang.update([ir_lang.translatable], [True], - where=(ir_lang.code == lang))) - cursor.execute(*res_user.update([res_user.language], - [ir_lang.select(ir_lang.id, - where=(ir_lang.code == lang), - limit=1)], - where=(res_user.login != 'root'))) - admin_password = hashlib.sha1(admin_password.encode('utf-8'))\ - .hexdigest() - cursor.execute(*res_user.update([res_user.password], - [admin_password], where=(res_user.login == 'admin'))) + User = pool.get('res.user') + Lang = pool.get('ir.lang') + language, = Lang.search([('code', '=', lang)]) + language.translatable = True + language.save() + users = User.search([('login', '!=', 'root')]) + User.write(users, { + 'language': language.id, + }) + admin, = User.search([('login', '=', 'admin')]) + User.write([admin], { + 'password': admin_password, + }) Module = pool.get('ir.module.module') if Module: Module.update_list() - cursor.commit() + transaction.cursor.commit() res = True except Exception: logger.error('CREATE DB: %s failed' % (database_name,)) diff --git a/trytond/server.py b/trytond/server.py index 77760511e7..23a1989664 100644 --- a/trytond/server.py +++ b/trytond/server.py @@ -10,11 +10,7 @@ import os import signal import time from getpass import getpass -import hashlib import threading -import string -import random -from sql import Table from trytond.config import CONFIG from trytond import backend @@ -158,16 +154,13 @@ class TrytonServer(object): break with Transaction().start(db_name, 0) as transaction: - cursor = transaction.cursor - salt = ''.join(random.sample( - string.letters + string.digits, 8)) - password += salt - password = hashlib.sha1(password).hexdigest() - user = Table('res_user') - cursor.execute(*user.update([user.password, user.salt], - [[password, salt]], - where=user.login == 'admin')) - cursor.commit() + pool = Pool() + User = pool.get('res.user') + admin, = User.search([('login', '=', 'admin')]) + User.write([admin], { + 'password': password, + }) + transaction.cursor.commit() if update: self.logger.info('Update/Init succeed!')