Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
    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