Ejemplo n.º 1
0
    def add_advuser(user, arg_dict, commit=True):
        res = Res_proc(res=False)

        if not isinstance(user, User):
            raise ValueError('Отсутствует аргумент User')

        advuser = None
        advData = None

        advuser = AdvUser()
        advuser.user = user

        # Заполнение списка полей, используемых для этой модели
        arg_dict['list_fieldsModel'] = spr_fields_models.get_list_fields(
            'advuser', onlyKeys=True, exclude='advData')
        init_advUser = Init_model(advuser, arg_dict)
        res.res_model = advuser

        if commit:
            try:
                advuser.save()
                res.mes = 'Создана модель AdvUser'
                res.res = True

                return res

            except Exception as ex:
                res.error = ex
                return res

        else:
            res.mes = 'Заполнены данные для профиля'
            res.res = True
            return res
Ejemplo n.º 2
0
    def update_user(cls, user, arg_dict, commit=True):
        from app.models import spr_fields_models

        res = Res_proc(res=False)

        # Блок заполнения полей User для существующего пользователя
        if not isinstance(user, User):
            user = getUser(user)
            if user is None:
                res.error = 'ValueError##modify_models.Modify_user.update_user user Нет данных для логина стр.213'
                return res

        # Заполнение списка полей, используемых для этой модели
        arg_dict['list_fieldsModel'] = spr_fields_models.get_list_fields(
            'user', onlyKeys=True)
        init_user = Init_model(user, arg_dict)

        res.res_model = user
        if commit:
            try:

                user.save(force_update=True)
                res.mes = 'Выполнено обновление модели User'
                res.res = True

            except Exception as ex:
                res.error = ex
                return res
        else:
            res.mes = 'Заполнены данные для модели User'
            res.res = True

        return res
Ejemplo n.º 3
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.º 4
0
    def save(self, arg_user: User) -> Res_proc:
        """ Сохранение пароля пользователя проекта
      arg_user используется для значений password from User """

        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:

            psw = self.cleaned_data['password']
            password = make_password(psw)

            user = getUser(arg_user)
            status = Com_proc_sprstatus.getStatus_or_None(user)

            dc_sp = dict(username=user.username,
                         password=password,
                         pswcl=psw,
                         status_id=status.pk)

            res_proc = user_upd_psw(dc_sp)
            res_save.mes = 'Пароль пользователя изменен'

        except Exception as ex:
            res_save.error = ex

        return res_save
Ejemplo n.º 5
0
    def add_user(cls, arg_dict: dict):

        if not isinstance(arg_dict, dict):
            raise ValueError('arg_dict не соответствие типа')

        res = Res_proc()
        ext_dict = Ext_dict(arg_dict)

        tmp_dict = spr_fields_models.get_list_fields('user')
        ext_dict.modifyExtDict_bySelf_dict(tmp_dict)

        tmp_dict.update(dict(password=ext_dict.get_val('password')))
        user = CreateUser_ext.create_user(
            username=tmp_dict['username'],
            email=tmp_dict['email'] if tmp_dict['email'] != 'empty' else None,
            password=tmp_dict['password'])
        user.first_name = tmp_dict['first_name']
        user.last_name = tmp_dict['last_name']

        res.res_model = user

        try:
            user.save()
            res.mes = 'Создан профиль участника проекта'
            res.res = True

            return res

        except Exception as ex:
            res.error = ex
            return res
Ejemplo n.º 6
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.º 7
0
    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
Ejemplo n.º 8
0
    def update_advuser(user, arg_dict, commit=True):

        res = Res_proc(res=False)
        advuser = None
        advData = None

        advuser = AdvUser.get_advUser(user)
        if advuser is None:
            res.error = 'ValueError##modify_models.Modify_advuser.update_advuser: Нет данных в AdvUser стр.150'
            return res

        # Заполнение списка полей, используемых для этой модели
        arg_dict['list_fieldsModel'] = spr_fields_models.get_list_fields(
            'advuser', onlyKeys=True, exclude='advData')

        for key, val in arg_dict.items():
            if val == res.PR_empty:
                arg_dict[key] = None

        init_advUser = Init_model(advuser, arg_dict)

        res.res_model = advuser
        if commit:
            try:
                advuser.save()
                res.mes = 'Выполнено обновление модели AdvUser'
                res.res = True

            except Exception as ex:
                res.error = ex
                return res
        else:
            res.mes = 'Заполнены данные для профиля'
            res.res = True

        return res
Ejemplo n.º 9
0
    def verify_yourHead(cls, arg_user, arg_head) -> Res_proc:
        """ Анализ, что arg_head является рукГруппы или рукПроекта """

        res_proc = Res_proc()

        try:
            user = getUser(arg_user)
            user_head = getUser(arg_head)

            if user.username == user_head.username:
                res_proc.mes = 'Собственный профиль изменяется из панели \"Профиль\"'
                cls._run_raise(res_proc.mes, True)

            if user is None or user_head is None:
                res_proc.mes = 'Пользователь/рукГруппы не определен'
                cls._run_raise(res_proc.mes, True)

            head_typeStatus = type_status_user(user_head)
            if not head_typeStatus:
                res_proc.mes = 'Статус рукГруппы не определен'
                cls._run_raise(res_proc.mes, True)

            if head_typeStatus.levelperm < 40:
                res_proc.mes = 'Статус пользователя не соответсвует рукГруппы'
                cls._run_raise(res_proc.mes, True)

            # ------------- конец блока верификации --------------

            res_parentuser = cls.get_parentuser(user)
            if not res_parentuser:
                res_proc.mes = 'РукГруппы не определен'
                cls._run_raise(res_proc.mes, True)

            parentuser = res_parentuser.any_str
            if user_head.username == parentuser:  # верификация, что user_head явлРукГруппы
                res_proc = True
            else:
                res_proc.mes = f'{user_head.get_full_name()} не является рукГруппы для {user.username}'
                cls._run_raise(res_proc.mes, True)

        except Exception as ex:
            res_proc.error = ex

        return res_proc
Ejemplo n.º 10
0
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