def test_res_proc(): from app import Res_proc from app import ErrorRun_impl try: res = [] res_proc = Res_proc() s_empty = res_proc.PR_empty res_proc.any_str = s_empty res_proc.res_dict = dict(par=1) res_proc.res_list = [1,2] val_dict = res_proc.FN_get_val_dict(dict(par='anyDataDict'), 'par') res.append(val_dict + '; ') s_proc = '{0} {1} {2}'.format(res_proc.FN_empty(), res_proc.FN_exist(), res_proc.PR_notRecord ) res.append('## ' + s_proc) res_proc.error = ErrorRun_impl('ValueError##Пробное исключение') s_res = str(res_proc) res.append(s_res) return res except Exception as ex: return str(ex)
def get_parentuser_02(cls, arg_user) -> User: """ return User for parentuser or None Отличается от get_parentuser -> Res_proc.any_str """ from .models import AdvUser res_proc = Res_proc() try: user = getUser(arg_user) if user is None: cls._run_raise(f'get_parentuser: arg_user не определен') if user.is_superuser: parentuser = cls.get_user_head() res_proc.any_str = parentuser.username return res_proc row = AdvUser.objects.get(pk=user) parentuser = row.parentuser parentuser = getUser(parentuser) except Exception as ex: return None return parentuser
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 get_parentuser(cls, arg_user) -> str: """ Извлекает строку User.username return Res_proc.any_str """ s_err = 'get_parentuser' res_proc = Res_proc() try: user = getUser(arg_user) if user is None: cls._run_raise(f'{s_err} arg_user не определен') if user.is_superuser: parentuser = cls.get_user_head() res_proc.any_str = parentuser.username return res_proc res_advUser = servAdvUser_get_advUser(user) if not res_advUser: cls._run_raise(f'{s_err} нет данных по AdvUser') advuser = res_advUser.res_model parentuser = advuser.parentuser # Проверка, что login существует user_parentuser = getUser(parentuser) if user_parentuser is None: cls._run_raise( f'{s_err} parentuser не найден в справочнике auth_user') # Проверка соответствия в advData[parentuser] == advuser.parentuser advData = json.loads(advuser.advData) if user_parentuser.username == advData['parentuser']: res_proc.any_str = user_parentuser.username else: cls._run_raise( f'{s_err} advData[parentuser] != advuser.parentuser') 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 upd_pswcl_quest(arg_user, arg_pswcl=None): res_proc = Res_proc() def run_raise(s_arg, showMes=None): s_err = 'advuser.modify_serv.upd_pswcl_quest' if showMes: raise ErrorRun_impl('verify##{0}'.format(s_arg)) else: raise ErrorRun_impl('{0} {1}'.format(s_err, s_arg)) try: user = getUser(arg_user) if user is None: run_raise('arg_user не найден в User') if arg_pswcl is None: res_pswcl = get_pswcl_fromHead(user) if not res_pswcl: run_raise( 'пароль гостВхода не определен из get_pswcl_fromHead') arg_pswcl = res_pswcl.any_str # ---------------- конец блока предОбработки входящих параметров --------- advuser = AdvUser.get_advUser(user) if not advuser: run_raise('нет данных для advuser ' + user.username) FM_init_advData(advuser, dict(pswcl=arg_pswcl)) advuser.save() res_proc.any_str = arg_pswcl res_proc.res = True except Exception as ex: res_proc.error = ex return res_proc
def get_pswcl_fromHead(arg_user): res_proc = Res_proc() s_notData = 'NotData##advuser.modify_serv.get_pswcl_fromHead:' try: user = getUser(arg_user) if user is None: raise ErrorRun_impl('{0} arg_user нет в БД'.format(s_notData)) type_status = type_status_user(user) if not type_status: raise ErrorRun_impl('{0} {1} нет статуса'.format( s_notData, user.username)) user_head = None if type_status.levelperm > 39: user_head = user else: res_head = AdvUser.get_head_user(user) user_head = res_head.res_model if user_head is None: raise ErrorRun_impl('{0} {1} нет данных для рукГруппы '.format( s_notData, user.username)) advData = AdvUser.get_advData(user_head) pswcl = advData.get('pswcl') if pswcl is None: raise ErrorRun_impl('{0} {1} advData нет pswcl'.format( s_notData, user.username)) res_proc.any_str = pswcl except Exception as ex: res_proc.error = ex return res_proc
def get_profil_user(cls, user): """ Создание dict профиля """ from app import Ext_dict from .serv_sprstatus import Com_proc_sprstatus structDef = Struct_default_AdvUser res_proc = Res_proc() s_err = 'get_profil_user' try: user = getUser(user) if user is None: raise ErrorRun_impl( '{0} нет данных для аргумента user'.format(s_err)) res_proc.any_str = user.username type_status = type_status_user(user) res_proc.res_obj = type_status """ imgphoto = self.imgphoto, full_name = self.full_name, status = self.status, idcomp = self.idcomp """ if user.is_superuser: param = dict( imgphoto=cls.get_path_photo(user), full_name='Супер-пользоатель', status=Com_proc_sprstatus.get_status_suadm().strIdent, idcomp=structDef.idcomp) _dict = dict(btn_upd=False, param=param, prof=[]) res_proc.res_dict = _dict res_proc.res = True return res_proc # возврат нулевого статуса if not type_status: param = dict( imgphoto=cls.get_path_photo('suadm'), full_name='Пользователь не определен', status=Com_proc_sprstatus.get_status_notstatus().strIdent, idcomp=structDef.idcomp) _dict = dict(btn_upd=False, param=param, prof=[]) res_proc.res_obj.levelperm = 20 # чтобы отображение стало как у клиента res_proc.res_dict = _dict res_proc.res = True return res_proc # ------------- обработка данных профиля ----------------- status_strIdent = type_status.strIdent # structDef.conv_status_into_str(type_status.statusID) dict_head = cls.get_dataHeader() dict_cons = cls.get_dataCons(user) dict_user = cls.get_advData(user) dict_user['sendMes'] = structDef.conv_send_mes( dict_user.get('sendMes')) if dict_cons is None: dict_cont = dict_head Ext_dict.CL_modify_empty(dict_head) Ext_dict.CL_modify_empty(dict_cons) Ext_dict.CL_modify_empty(dict_user) param = dict(imgphoto=cls.get_path_photo(user), full_name=dict_user.get('full_name'), status=status_strIdent, idcomp=dict_user.get('idcomp') or structDef.idcomp) arrayProf = [dict(val=user.username, str='Логин:')] if type_status.levelperm < 30: arrayProf += [dict(val=dict_user.get('pswcl'), str='Пароль:')] # Обработка гостВхода if type_status.levelperm < 20: # гостевой вход или клиент сайта arrayProf += [ dict(val=dict_cons.get('full_name') or structDef.full_name, str='Личн. консультант:', idrow='parentData'), dict(val=dict_cons.get('phone') or structDef.phone, str='Тел. личн. консультанта:') ] arrayProf += [ dict(val=dict_head.get('full_name') or structDef.full_name, str='Админ. проекта:', idrow='parentData'), dict(val=dict_head.get('phone') or structDef.phone, str='Телефон адмПроекта:') ] else: # структура профиля для менеджеров и рукГрупп arrayProf += [ dict(val=dict_user.get('phone') or structDef.phone, str='Телефон:'), dict(val=dict_user.get('email') or structDef.email, str='email:'), dict(val=dict_user.get('sendMes'), str='Получать сообщ.:'), dict(val=dict_user.get('ageGroup') or structDef.ageGroup, str='ВозрГруппа:'), dict(val=structDef.conv_pol(dict_user.get('pol')), str='Пол:'), ] if type_status.levelperm > 20: arrayProf += [ dict(val=dict_user.get('pswcl') or structDef.pswcl, str='Пароль клиента:', idrow='parentData'), dict(val=dict_user.get('logincl') or structDef.logincl, str='Логин клиента:') ] if type_status.levelperm < 100: arrayProf += [ dict(val=dict_cons.get('full_name') or structDef.full_name, str='Консультант:', idrow='parentData'), dict(val=dict_cons.get('phone') or structDef.phone, str='Тел. консультанта:'), dict(val=dict_cons.get('email') or structDef.email, str='email консультанта:') ] if type_status.levelperm in (40, 70): if type_status.levelperm == 40: arrayProf += [ dict(val=dict_user.get('limitcon') or structDef.limitcon, str='Лимит подкл.:') ] else: arrayProf += [ dict(val=dict_user.get('limitcon') or structDef.limitcon, str='Лимит подкл.:'), dict(val=dict_user.get('limitcon40') or structDef.limitcon, str='Подкл. рукГр:'), dict(val=dict_user.get('limitcon70') or structDef.limitcon, str='Подкл. максУровень:') ] res_proc.res_dict = dict(btn_upd=True, param=param, prof=arrayProf) res_proc.res = True return res_proc except Exception as ex: res_proc.error = ex return res_proc