def user_upd_psw (arg_dc:dict)->Res_proc: from . .com_data.write_exception_into_log import PM_write_except_into_log as write_into_log s_error_not_show = 'verify#app.com_serv_dbase.serv_modf_profil.serv_add_profil' res_proc = Res_proc() try: con = getConnection() s_dict = json.dumps(arg_dc, ensure_ascii=False) with con.cursor() as cur: cur.callproc('sp_user_upd_psw', (s_dict,)) res_call = cur.fetchall()[0] # {"res": "err", "mes_error": "текст сообщений ошибки"} # {"mes": "Обновление пароля: XEMP-9069", "res": "ok", "data": {"username": "******"}} res_call = res_call['res'] res_call_dc = json.loads(res_call) if res_call_dc['res'] == 'err': # элемент, созданный в процессе проверки входящих данных write_into_log(s_error_not_show, res_call_dc['mes_error'] ); run_raise('Ошибки исходных данных', showMes=True) res_data = res_call_dc['data'] res_proc.res = True res_proc.any_str = res_data['username'] res_proc.mes = 'Изменен пароль: ' + res_data['username'] except Exception as ex: res_proc.error = ex return res_proc
def serv_add_profil (arg_dc:dict, serv_proc='sp_serv_add_profil_02'): """ Процедура взаимодействия с сервПроцедурой общая процедура для создПрофиля через рукГруппой или через гостВХод """ from . .com_data.write_exception_into_log import PM_write_except_into_log as write_into_log res_proc = Res_proc() s_error_not_show = 'verify#app.com_serv_dbase.serv_modf_profil.serv_add_profil' try: con = getConnection() s_dict = json.dumps(arg_dc, ensure_ascii=False) with con.cursor() as cur: cur.callproc(serv_proc, (s_dict,)) res_call = cur.fetchall()[0]; # возврат из сервПроцедуры в виде select {res:ok/err, mes:ok/strMessage} as res # {"mes": "Создан профиль: mysql_test", "res": "ok", "data": {"username": "******", "str_status": "Участник проекта"}} # {"mes": "Повторный ввод данных профиля: insert into auth_user", "res": "err"} res_call = res_call['res'] res_call_dc = json.loads(res_call) if res_call_dc['res'] == 'err': # элемент, созданный в процессе проверки входящих данных err = None if res_call_dc.get('err'): err = res_call_dc['err'] else: err = res_call_dc['mes_error'] # элемент, который используется в блоке обработчика исключений сервПроцедуры write_into_log(s_error_not_show, res_call_dc['mes_error'] ); run_raise('Ошибки исходных данных', showMes=True) res_data = res_call_dc['data'] res_proc.res = True res_proc.any_str = res_data['username'] if serv_proc == 'sp_serv_add_profil_02': res_proc.mes = 'Создан профиль : ' + res_data['str_status'] else: res_proc.mes = 'Изменен профиль : ' + res_data['str_status'] except Exception as ex: res_proc.error = ex return res_proc
def save_add(self, arg_user:User)->Res_proc: """ Процедура обработки добавления профиля клиента """ from django.contrib.auth.hashers import make_password from app.com_serv_dbase.serv_modf_profil import serv_add_profil from app.models import spr_fields_models res_proc = Res_proc() cd_dict = self.cleaned_data s_error = 'ValueError##advuser.form.Base_profilForm.save_add' try: parentuser = Com_proc_advuser.get_user_cons(arg_user) if parentuser is None: run_raise(s_error+' Консультант гостВхода не найден') status = Com_proc_sprstatus.get_status_by_levelperm(20) statusID = status.pk levelperm_sel = status.levelperm # Заполнение структуры js_struct # from spr_fields_models.js_data where levelperm = levelperm_sel js_struct = spr_fields_models.get_js_struct(levelperm_sel) js_struct['pswcl'] = getPassword_cl() js_struct['idcomp'] = cd_dict.get('idcomp') or 'empty' cd_dict.update( dict( parentuser = parentuser.username, password = make_password(js_struct['pswcl']), username = getLogin_cl(), status_id= statusID, full_name= cd_dict['first_name'] + ' ' + cd_dict['last_name'], js_struct = js_struct )) cd_dict = clear_space(cd_dict) cd_dict = upd_space_into_empty(cd_dict) res_proc = serv_add_profil(cd_dict) except Exception as ex: res_proc.error = ex return res_proc
def save(self, arg_session:dict)->Res_proc: """ Сохранение пароля пользователя проекта arg_session используется для значений upd_username """ from django.contrib.auth.hashers import make_password from app.com_serv_dbase.serv_modf_profil import user_upd_psw res_save = Res_proc() try: cd_clean = self.cleaned_data user = getUser(arg_session['upd_username']) if user is None: run_raise('Логин не определен', showMes=True) #user.password = make_password(cd_clean['password']) type_status = type_status_user(user); statusID = type_status.statusID pswcl = None if type_status.levelperm >=30: pswcl = Com_proc_advuser.get_val_from_advData(user, 'pswcl') dc_sp = dict( username = user.username, password = make_password(cd_clean['password']), pswcl = pswcl or 'empty', status_id = statusID ) res_proc = user_upd_psw(dc_sp); res_save.mes = 'Пароль пользователя изменен' #user.save() #res_save.res = True res_save.mes = 'Пароль пользователя обновлен' except Exception as ex: res_save.error = ex return res_save
def save(self, arg_user, arg_parentuser)->Res_proc: from app.com_serv_dbase.serv_modf_profil import serv_add_profil res_proc = Res_proc() cd_dict = self.cleaned_data s_error = 'ValueError##advuser.form.UpdProf_memberForm.save' try: user = getUser(arg_user) if user is None: run_raise(s_error + ' Пользователь не найден в БД') user_head = getUser(arg_parentuser) _advdata = Com_proc_advuser.get_advData(user) # Параметр, который не используется в форме, но обязателен cd_dict['sendMes'] = _advdata['sendMes'] js_struct = Com_proc_advuser.get_js_struct(user) js_struct['idcomp'] = cd_dict['idcomp'] # верификация а clean() js_struct = self.com_modf_quest(user_head, js_struct) # верификация pswcl and logincl # ----------- Подготовка dict for servProc ---------------- cd_dict.update( dict(username=user.username, js_struct = js_struct )) # удаление пробелов. Для подстраховки cd_dict = clear_space(cd_dict) cd_dict = upd_space_into_empty(cd_dict) # дополнительное преобразование # Запись профиля в БД by servProc res_proc = serv_add_profil(cd_dict, serv_proc='sp_serv_upd_profil') except Exception as ex: res_proc.error = ex; return res_proc
def clear_data_status(self, arg_dict: dict): """ Удаление данных, связанных с status.* обнуление данных js_struct and advData, входящих в структуру status.* """ from app.models import spr_fields_models as fields if not self.PR_list_fields_status: # Заполнение self.list_fields_status row = fields.objects.filter(id_key=0) if row.exists(): row_fields = row.first() else: run_raise('Сервер отклонил запрос', showMes=True) dc_fields = json.loads(row_fields.js_data) self.list_fields_status = dc_fields['fields']['status'] for key in self.PR_list_fields_status: if arg_dict.get(key): del arg_dict[key]
def save(self, arg_username, arg_parentuser): """ Сохранение изменений профиля arg_username для обработки профиля arg_parentuser для доступа к значению pswcl на уровне рукГруппы """ from app.com_serv_dbase.serv_modf_profil import serv_add_profil res_proc = Res_proc() try: user = getUser(arg_username) if user is None: run_raise('Сбой обработки профиля: пользователь не определен', showMes=True) user_head = getUser(arg_parentuser) cd_dict = self.cleaned_data cd_dict['username'] = user.username js_struct = Com_proc_advuser.get_js_struct(user) js_struct['idcomp'] = cd_dict[ 'idcomp'] # верификация idcomp в clean() js_struct = self.com_modf_quest( user_head, js_struct) # верификация pswcl and logincl cd_dict['js_struct'] = js_struct # удаление пробелов. Для подстраховки cd_dict = clear_space(cd_dict) cd_dict = upd_space_into_empty(cd_dict) res_proc = serv_add_profil(cd_dict, serv_proc='sp_serv_upd_profil') except Exception as ex: res_proc.error = ex return res_proc
def load_user_into_dbase(arg_dict: dict) -> Res_proc: """ Начальная загрузка пользователй в БД """ from django.contrib.auth.hashers import make_password from app.use_mysql.conn_utils import getConnection from app import getPassword_cl, getLogin_cl import json res_proc = Res_proc() try: con = getConnection() s_dict = json.dumps(arg_dict, ensure_ascii=False) with con.cursor() as cur: cur.callproc('sp_adm_load_user_into_dbase', (s_dict, )) res_call = cur.fetchall()[0] res_call = res_call['res'] res_call_dc = json.loads(res_call) if res_call_dc['res'] == 'err': err = res_call_dc['mes'] run_raise('Ошибки исходных данных: ' + err, showMes=True) res_data = res_call_dc['data'] res_proc.res = True res_proc.mes = 'Создан профиль : ' + res_data['username'] res_proc.res = True except Exception as ex: res_proc.error = ex return res_proc
def save(self, arg_user): """ Сохранение профиля пользователя на уровне рукГруппы """ from django.contrib.auth.hashers import make_password from app.com_serv_dbase.serv_modf_profil import serv_add_profil from app.models import spr_fields_models cd_dict = self.cleaned_data s_error = 'advuser.form.AddProf_memberForm.save' s_err = 'verify##' res_proc = Res_proc() try: if self.errors_clean: # ошибка из процедуры clean() run_raise(self.errors_clean, showMes=True) user_head = getUser(arg_user) status_head = type_status_user(user_head) levelperm_head = status_head.levelperm levelperm_sel = cd_dict['status'].levelperm statusID = cd_dict['status'].pk del cd_dict['status'] cd_dict['sendMes'] = 'true' if levelperm_sel == 20: run_raise( 'Профиль клиента должен создавать пользователь гостВхода', showMes=True) if levelperm_head < 40 or levelperm_sel > levelperm_head: run_raise(s_err + 'Нет прав на создание профиля', showMes=True) # Заполнение структуры js_struct # from spr_fields_models.js_data where levelperm = levelperm_sel js_struct = spr_fields_models.get_js_struct(levelperm_sel) # Для рукГрупп создается новый набор свойств pswcl and logincl if levelperm_sel < 40: js_struct = self.com_modf_quest( user_head, js_struct) # Заполнение pswcl logincl else: # Заполнение pswcl logincl новыми значениями js_struct = self.com_modf_quest(user_head, js_struct, new_pswd=True) js_struct['idcomp'] = cd_dict['idcomp'] cd_dict.update( dict( parentuser=user_head.username, password=make_password(cd_dict['password']), password_cl=make_password(js_struct['pswcl']), full_name=cd_dict['first_name'] + ' ' + cd_dict['last_name'], status_id=statusID, js_struct=js_struct, pswcl=js_struct[ 'pswcl'], # используется для инициализации questProfil logincl=js_struct['logincl'])) res_proc = serv_add_profil(cd_dict) except Exception as ex: res_proc.error = ex return res_proc