Пример #1
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
Пример #2
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
Пример #3
0
    def save_add(self, arg_user:User)->Res_proc:
        """ Процедура обработки добавления профиля клиента """
        
        from django.contrib.auth.hashers import make_password        
        from app.com_serv_dbase.serv_modf_profil import serv_add_profil
        from app.models import spr_fields_models               

        res_proc = Res_proc()
        cd_dict = self.cleaned_data

        s_error = 'ValueError##advuser.form.Base_profilForm.save_add'

        try:
            parentuser = Com_proc_advuser.get_user_cons(arg_user)
            if parentuser is None:
                run_raise(s_error+' Консультант гостВхода не найден')

            status = Com_proc_sprstatus.get_status_by_levelperm(20)
            statusID = status.pk
            levelperm_sel = status.levelperm

            # Заполнение структуры js_struct 
            # from spr_fields_models.js_data where levelperm = levelperm_sel
            js_struct = spr_fields_models.get_js_struct(levelperm_sel)

            js_struct['pswcl'] = getPassword_cl()
            js_struct['idcomp'] = cd_dict.get('idcomp') or 'empty'

            cd_dict.update(
                    dict(
                            parentuser = parentuser.username,
                            password = make_password(js_struct['pswcl']),
                            username = getLogin_cl(),
                            status_id= statusID,
                            full_name= cd_dict['first_name'] + ' ' + cd_dict['last_name'],
                            js_struct = js_struct
                        ))

            cd_dict = clear_space(cd_dict)
            cd_dict = upd_space_into_empty(cd_dict)

            res_proc = serv_add_profil(cd_dict)

        except Exception as ex:
            res_proc.error = ex

        return res_proc
Пример #4
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
Пример #5
0
    def save(self, arg_user, arg_parentuser)->Res_proc:
        from app.com_serv_dbase.serv_modf_profil import serv_add_profil

        res_proc = Res_proc()
        cd_dict = self.cleaned_data
        s_error = 'ValueError##advuser.form.UpdProf_memberForm.save'

        try:

            user = getUser(arg_user)
            if user is None:
                run_raise(s_error + ' Пользователь не найден в БД')
            user_head = getUser(arg_parentuser)

            _advdata = Com_proc_advuser.get_advData(user)

            # Параметр, который не используется в форме, но обязателен
            cd_dict['sendMes'] = _advdata['sendMes']  
            
            js_struct = Com_proc_advuser.get_js_struct(user)
            js_struct['idcomp'] = cd_dict['idcomp'] # верификация а clean()
            js_struct = self.com_modf_quest(user_head, js_struct) # верификация pswcl and logincl


            # ----------- Подготовка dict for servProc ----------------
            cd_dict.update(
	            dict(username=user.username,                        			    
                        js_struct = js_struct
			            ))

            # удаление пробелов. Для подстраховки
            cd_dict = clear_space(cd_dict)
            cd_dict = upd_space_into_empty(cd_dict) # дополнительное преобразование

            # Запись профиля в БД by servProc
            res_proc = serv_add_profil(cd_dict, serv_proc='sp_serv_upd_profil')

                        
        except Exception as ex:
            res_proc.error = ex;

        return res_proc
Пример #6
0
    def clear_data_status(self, arg_dict: dict):
        """ Удаление данных, связанных с status.* 
            обнуление данных js_struct and advData, входящих в структуру status.*
        """
        from app.models import spr_fields_models as fields

        if not self.PR_list_fields_status:
            # Заполнение self.list_fields_status
            row = fields.objects.filter(id_key=0)
            if row.exists():
                row_fields = row.first()
            else:
                run_raise('Сервер отклонил запрос', showMes=True)

            dc_fields = json.loads(row_fields.js_data)
            self.list_fields_status = dc_fields['fields']['status']

        for key in self.PR_list_fields_status:
            if arg_dict.get(key):
                del arg_dict[key]
Пример #7
0
    def save(self, arg_username, arg_parentuser):
        """ Сохранение изменений профиля 
        arg_username для обработки профиля
        arg_parentuser для доступа к значению pswcl на уровне рукГруппы 
        """

        from app.com_serv_dbase.serv_modf_profil import serv_add_profil

        res_proc = Res_proc()

        try:

            user = getUser(arg_username)
            if user is None:
                run_raise('Сбой обработки профиля: пользователь не определен',
                          showMes=True)

            user_head = getUser(arg_parentuser)

            cd_dict = self.cleaned_data
            cd_dict['username'] = user.username

            js_struct = Com_proc_advuser.get_js_struct(user)
            js_struct['idcomp'] = cd_dict[
                'idcomp']  # верификация idcomp в clean()
            js_struct = self.com_modf_quest(
                user_head, js_struct)  # верификация pswcl and logincl

            cd_dict['js_struct'] = js_struct

            # удаление пробелов. Для подстраховки
            cd_dict = clear_space(cd_dict)
            cd_dict = upd_space_into_empty(cd_dict)

            res_proc = serv_add_profil(cd_dict, serv_proc='sp_serv_upd_profil')

        except Exception as ex:
            res_proc.error = ex

        return res_proc
Пример #8
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
Пример #9
0
    def save(self, arg_user):
        """ Сохранение профиля пользователя на уровне рукГруппы """

        from django.contrib.auth.hashers import make_password
        from app.com_serv_dbase.serv_modf_profil import serv_add_profil
        from app.models import spr_fields_models

        cd_dict = self.cleaned_data
        s_error = 'advuser.form.AddProf_memberForm.save'
        s_err = 'verify##'

        res_proc = Res_proc()

        try:

            if self.errors_clean:  # ошибка из процедуры clean()
                run_raise(self.errors_clean, showMes=True)

            user_head = getUser(arg_user)
            status_head = type_status_user(user_head)
            levelperm_head = status_head.levelperm

            levelperm_sel = cd_dict['status'].levelperm
            statusID = cd_dict['status'].pk

            del cd_dict['status']
            cd_dict['sendMes'] = 'true'

            if levelperm_sel == 20:
                run_raise(
                    'Профиль клиента должен создавать пользователь гостВхода',
                    showMes=True)

            if levelperm_head < 40 or levelperm_sel > levelperm_head:
                run_raise(s_err + 'Нет прав на создание профиля', showMes=True)

            # Заполнение структуры js_struct
            # from spr_fields_models.js_data where levelperm = levelperm_sel
            js_struct = spr_fields_models.get_js_struct(levelperm_sel)

            # Для рукГрупп создается новый набор свойств pswcl and logincl
            if levelperm_sel < 40:
                js_struct = self.com_modf_quest(
                    user_head, js_struct)  # Заполнение pswcl logincl
            else:
                # Заполнение pswcl logincl новыми значениями
                js_struct = self.com_modf_quest(user_head,
                                                js_struct,
                                                new_pswd=True)

            js_struct['idcomp'] = cd_dict['idcomp']

            cd_dict.update(
                dict(
                    parentuser=user_head.username,
                    password=make_password(cd_dict['password']),
                    password_cl=make_password(js_struct['pswcl']),
                    full_name=cd_dict['first_name'] + ' ' +
                    cd_dict['last_name'],
                    status_id=statusID,
                    js_struct=js_struct,
                    pswcl=js_struct[
                        'pswcl'],  # используется для инициализации questProfil
                    logincl=js_struct['logincl']))

            res_proc = serv_add_profil(cd_dict)

        except Exception as ex:
            res_proc.error = ex

        return res_proc