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
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
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
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
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
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
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
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
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
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