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 restor_psw(): from app import loadJSON_withTempl from app import Type_value from django.contrib.auth.models import User res_proc = Res_proc() _lst = [] s_err = 'ResError##advuser.modify_serv.restor_psw' try: path = Type_value.init_formatTempl('advuser/arg_restor_psw', 'jsn') dict_psw = loadJSON_withTempl(path) for item in dict_psw: username = item[0] psw = item[1] user = getUser(username) if user: user.set_password(psw) _lst.append('{0} обновлено; '.format(username)) else: _lst.append('{0} не найден в User; '.format(username)) res_proc.res_list = _lst except Exception as ex: res_proc.error = ex return res_proc
def resubm_parentuser(arg_user): def run_raise(s_arg): s_err = 'ResError##advuser.modify_serv.resubm_parentuser' raise ErrorRun_impl('{0} {1}'.format(s_err, s_arg)) # ----------------------------------------------------------- res_proc = Res_proc() lst = [] try: user = getUser(arg_user) if user is None: run_raise('arg_user не определен') user_typeStatus = type_status_user(user) if not user_typeStatus: run_raise('нет данных для статуса') #if user_typeStatus.levelperm < 40: # run_raise('нет прав на переопределение parentuser') res_parentuser = AdvUser.get_parentuser(user) if not res_parentuser: run_raise('нет данных для руководителя группы') _parentuser = res_parentuser.any_str level_user = user_typeStatus.levelperm rows = AdvUser.objects.filter(parentuser=user, status__levelperm__gte=10, status__levelperm__lt=level_user) if rows.exists(): for row in rows: row.parentuser = _parentuser advData = json.loads(row.advData) advData['parentuser'] = _parentuser row.advData = json.dumps(advData, ensure_ascii=False) row.save() lst.append('{0} обновл. pswcl; '.format(row.user.username)) res_proc.res = True res_proc.res_list = lst except Exception as ex: res_proc.error = ex return res_proc
def serv_get_data_prof(arg_user, str_levelperm=None, num_rows=0, sel_page=1, num_count=False): """ Выборка данных профиля для отображения в виде списка пользователей проекта Предназначено для рукПроекта --------------------------------- arg_user Пользователь для которого делается фильтрация данных str_levelperm уровень levelperm (значение = None -> ВСЕх уровней ) num_rows кол-во записей в части (значение = 0 -> ВСЕ записи) sel_page Номер выбираемой части """ 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' user = getUser(arg_user) try: con = getConnection() if str_levelperm is None: str_levelperm = '30,40,70' dc_arg = dict(username=user.username, lstlevelperm=str_levelperm, num_rows=num_rows, sel_page=sel_page) s_dict = json.dumps(dc_arg, ensure_ascii=False) lst_res = [] with con.cursor() as cur: cur.callproc('sp_serv_dataprof', (s_dict, )) res_call = cur.fetchall() res_proc.res_list = res_call res_proc.res = True except Exception as ex: res_proc.error = ex return res_proc
def get_subRows_head(cls, arg_head): res_proc = Res_proc() try: user_head = getUser(arg_head) if user_head is None: cls._run_raise('get_subRows_head arg_head нет данных') _username_head = user_head.username type_status = type_status_user(user_head) if type_status: if type_status.levelperm < 40: raise ErrorRun_impl( 'verify##Нет прав на доступ к ресурсам группы') else: cls._run_raise('Статус пользователя не определен') res_lst = list((row.user.username for row in cls.AdvUser.objects.filter( parentuser=_username_head, status__levelperm__in=(30, 40, 70)))) if res_lst: res_lst.append(_username_head) # включить самого рукГруппы else: raise ErrorRun_impl('verify##Нет данных по составу группы') res_proc.res_list = res_lst res_proc.res = True except Exception as ex: res_proc.error = ex return res_proc
def get_list_prof_memb(arg_user, arg_list=None, num_rows=5, sel_page=1): """ Создание списка данных для отображения в шаблоне prof_table_format Предназначено для руководителей групп Загрузка данных из БД arg_list формат '30,49,70' строка levelperm num_rows кол-во записей в одной странице sel_page номер извлекаемой страницы full_show Использование максимальной ширины данных """ from .serv_advuser import Struct_default_AdvUser as Struct_def from app.com_serv_dbase.serv_modf_profil import serv_get_data_prof import json def run_raise(s_arg, showMes=None): s_err = 'ValError##advuser.modify_models.get_list_prof_memb' if showMes: raise ErrorRun_impl('verify##{0}'.format(s_arg)) else: raise ErrorRun_impl('{0}: {1}'.format(s_err, s_arg)) #--------------------------------------------------------- res_proc = Res_proc() res_list = [] if arg_list is None: arg_list = '30,40,70' try: user = getUser(arg_user) if user is None: run_raise('Пользователь не определен', True) res_data = serv_get_data_prof(user, arg_list, num_rows, sel_page, num_count=0) res_page = {} for item in res_data.res_list: _dict = json.loads(item['advData']) levelperm = item['levelperm'] if levelperm == 0: res_page = _dict else: _dict['levelperm'] = levelperm _dict['status'] = Struct_def.conv_status_into_str( _dict.get('status_id')) _dict['idcomp'] = res_proc.FN_get_val_dict( _dict, 'idcomp') or Struct_def.idcomp _dict['email'] = res_proc.FN_get_val_dict( _dict, 'email') or Struct_def.email _dict['phone'] = res_proc.FN_get_val_dict( _dict, 'phone') or Struct_def.phone _dict['pol'] = Struct_def.conv_pol(_dict.get('pol')) _dict['sendMes'] = Struct_def.conv_send_mes( _dict.get('sendMes')) _dict['ageGroup'] = res_proc.FN_get_val_dict( _dict, 'ageGroup') or Struct_def.ageGroup _dict['post'] = res_proc.FN_get_val_dict(_dict, 'post') or 'Нет' _dict['logincl'] = res_proc.FN_get_val_dict(_dict, 'logincl') or 'Нет' if levelperm > 30: _dict[ 'status_perm'] = f'Мендж:{_dict.get("limitcon") or 0} ' if levelperm == 70: _dict[ 'status_perm'] = f'Мендж:{_dict.get("limitcon") or 0} РукГр:{_dict.get("limitcon40") or 0} РукГрРасш:{_dict.get("limitcon70") or 0}' else: _dict['status_perm'] = 'Не назначено' res_list.append(_dict) res_proc.res_dict = res_page # сведения пагинатора res_proc.res_list = res_list res_proc.res = True except Exception as ex: res_proc.error = ex return res_proc
def upd_pswcl(arg_head): # встроенная процедура обновления advData def upd_advData(row, pswcl): advData = json.loads(row.advData) advData['pswcl'] = pswcl row.advData = json.dumps(advData, ensure_ascii=False) # -------------------------------------------------------- res_proc = Res_proc() res_lst = [] res_proc.res_list = res_lst s_resError = 'ResError##advuser.modify_serv.Upd_pswcl_in_dependData.upd_pswcl:' s_notData = 'NotData##advuser.modify_serv.Upd_pswcl_in_dependData.upd_pswcl:' try: # --------------- верификация и инициализация --------------- # --------- поля log_modf_models: id_log, row_parent, id_parent, id_end, inf_modf, arg_modf # для удобства отображения кода if 1 < 2: # базовые параметры обновленя empty_key = getEMTPY_id( 15) # empty идентификатор for: id_log and row_parent word_pswcl = None # новый пароль гостВхода user_head = getUser(arg_head) if user_head is None: res_lst.append('нет данных по аргументу user_head') raise ErrorRun_impl( '{0} нет данных по аргументу user_head'.format( s_notData)) type_status = type_status_user(user_head) if not type_status: raise ErrorRun_impl('{0} {1} нет статуса'.format( s_notData, user_head.username)) if type_status.levelperm < 40 or type_status.levelperm > 100: res_lst.append('Нет прав на обработку') raise ErrorRun_impl( '{0} нет прав на обработку'.format(s_resError)) res_pswcl = spr_pswcl.get_rand_pswcl() if res_pswcl: word_pswcl = res_pswcl.res_obj[0] else: raise ErrorRun_impl( '{0} ошибка вызываемой процедуры'.format(s_resError)) # ********************* конец блока верификации и инициализации ***************** _row_parent = '{0}##{1}'.format(empty_key, user_head.username) # вставить базовую запись рукГруппы if not log_modf_models.objects.filter( row_parent=_row_parent).exists(): log_modf_models.objects.create( id_log=_row_parent, row_parent=_row_parent, arg_modf=word_pswcl, id_parent=True, inf_modf='пароль гостВхода рукГруппы:' + user_head.username) # Создание дочерних записей - пользователей рукГруппы for row in AdvUser.objects.filter( parentuser=user_head, status__levelperm__gte=10, status__levelperm__lt=40).exclude( status__levelperm=20): _username = row.user.username id_log = '{0}##{1}'.format(_row_parent, _username) if not log_modf_models.objects.filter( id_log=id_log).exists(): log_modf_models.objects.create( id_log=id_log, row_parent=_row_parent, arg_modf=word_pswcl, inf_modf='пароль гостВхода user:'******'##')[1] else: _login = row_log.id_log.split('##')[2] pswcl = row_log.arg_modf row_cl_advuser = AdvUser.objects.filter( parentuser=_login, status__levelperm=10) if row_cl_advuser.exists(): row_cl_advuser = row_cl_advuser.first() head_advuser = AdvUser.get_advUser(_login) upd_advData(row_cl_advuser, pswcl) # обновление advData клиента upd_advData(head_advuser, pswcl) # обновление advData наставника user_cl = getUser(row_cl_advuser.user) user_cl.set_password(pswcl) user_cl.save() # сохранение пароля head_advuser.save( ) # сохранение head_advuser.advData row_cl_advuser.save( ) # сохранение row_cl_advuser.advData res_lst.append('{0} pswcl:{1} обновлено; '.format( _login, pswcl)) res_proc.res = True except Exception as ex: res_lst.append('Сервер остановил обработку') res_proc.error = ex return res_proc