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