def _conv_into_dict(self): if not self.model: return _advuser = self.model dict_model = {} tmp_dict_advuser = spr_fields_models.get_list_fields('advuser', exclude='advData') keys_tmp_dict = tuple(tmp_dict_advuser.keys()) for key in keys_tmp_dict: if hasattr(_advuser, key): val = getattr(_advuser, key) if key == 'status': val = val.pk dict_model.update({key: val}) # Результирующий dict из объединения ext_dict.dict and tmp_dict_advuser Ext_dict.modifyTmplDict_byExt_dict(tmp_dict_advuser, dict_model) self.dict = tmp_dict_advuser # Выборка данных из advData dict_advData = initDict_from_advData(_advuser.advData, _advuser.status) self.dict.update(dict_advData)
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 _conv_into_dict(self): tmp_dict = spr_fields_models.get_list_fields('user') _user = self.model _dict = {} _dict.update(dict(user_id=_user.pk, full_name=_user.get_full_name())) for key in tmp_dict.keys(): if hasattr(_user, key): val = getattr(_user, key) _dict.update({key: val}) # Заполнение tmp_dict данными из _dict # здесь же будут произведены все преобразования as default Ext_dict.modifyTmplDict_byExt_dict(tmp_dict, _dict) self.dict = tmp_dict
def initDict_from_advData(arg_advData, arg_statusID): perm_status = ('SprStatus', 'str') s_type_status = type(arg_advData).__name__ if s_type_status not in perm_status: raise ValueError( 'initDict_from_advData arg_statusID: не соответствие типа') perm_advData = ('str', 'dict') s_type_advData = type(arg_advData).__name__ if s_type_advData == 'str': arg_advData = json.loads(arg_advData) tmp_dict = spr_fields_models.get_list_fields_advDataExt(arg_statusID) Ext_dict.modifyTmplDict_byExt_dict(tmp_dict, arg_advData) return tmp_dict
def __init__(self, argObj, argDict): self.username = None self.obj_model = argObj # задумано для инициализации модели self.ext_dict = Ext_dict(argDict) self.list_fieldsModel = argDict.get('list_fieldsModel') if not self.list_fieldsModel: raise ErrorRun_impl( 'ValueError##Init_model.__init__: argDict[list_fieldsModel] нет данных' ) s_type = type(argObj).__name__ if s_type == 'User': self.username = argObj.username if s_type == 'AdvUser': self.username = argObj.user.username self._init_field_from_dict() if isinstance(self.obj_model, AdvUser): self._init_advdata()
def _init_advdata(self): from app import Ext_dict _status = self.obj_model.status # это исходный шаблон tmp_dict = spr_fields_models.get_list_fields_advDataExt(_status) if tmp_dict is None: raise ErrorRun_impl( 'ValueError##modify_models.Init_model._init_advdata _status: None стр.67' ) # шаблон заполненный по данным предОбработки _advData = AdvUser.get_advData(self.username) if _advData: # обновление tmp_dict исходными значениями Ext_dict.modifyTmplDict_byExt_dict(tmp_dict, _advData) # logincl and pswcl в форме не заполняются, поэтому загружаются из предОбработки # наложение данных, полученных из заполнения формы self.ext_dict.modifyExtDict_bySelf_dict(tmp_dict) s_advdata = json.dumps(tmp_dict, ensure_ascii=False) self.obj_model.advData = s_advdata
class Init_model: def __init__(self, argObj, argDict): self.username = None self.obj_model = argObj # задумано для инициализации модели self.ext_dict = Ext_dict(argDict) self.list_fieldsModel = argDict.get('list_fieldsModel') if not self.list_fieldsModel: raise ErrorRun_impl( 'ValueError##Init_model.__init__: argDict[list_fieldsModel] нет данных' ) s_type = type(argObj).__name__ if s_type == 'User': self.username = argObj.username if s_type == 'AdvUser': self.username = argObj.user.username self._init_field_from_dict() if isinstance(self.obj_model, AdvUser): self._init_advdata() #----------- Конец блока инициализации ------------- def _init_field_from_dict(self): from .serv_sprstatus import Com_proc_sprstatus _getVal = self.ext_dict.get_val for key in self.list_fieldsModel: if key == 'username': continue if not hasattr(self.obj_model, key): continue if key == 'status_id': _id = _getVal(key) if not _id: continue _spr = Com_proc_sprstatus.getStatus_or_None(_id) if _spr: """ Это заполнение используется при обновлении, но при новой записи этот идентификатор None поэтому заполнение поля status делается в условии """ setattr(self.obj_model, 'status', _spr) continue else: raise ErrorRun_impl( 'ValueError##Init_model._init_field_from_dict: status={0} не определен' .format(_id)) if key == 'sendMes': _val = True if _getVal('sendMes') == 'true' else False setattr(self.obj_model, key, _val) continue val = _getVal(key) if val: _val = None if val == 'empty' else val setattr(self.obj_model, key, _val) # используется для инициализации поля advuser.advData def _init_advdata(self): from app import Ext_dict _status = self.obj_model.status # это исходный шаблон tmp_dict = spr_fields_models.get_list_fields_advDataExt(_status) if tmp_dict is None: raise ErrorRun_impl( 'ValueError##modify_models.Init_model._init_advdata _status: None стр.67' ) # шаблон заполненный по данным предОбработки _advData = AdvUser.get_advData(self.username) if _advData: # обновление tmp_dict исходными значениями Ext_dict.modifyTmplDict_byExt_dict(tmp_dict, _advData) # logincl and pswcl в форме не заполняются, поэтому загружаются из предОбработки # наложение данных, полученных из заполнения формы self.ext_dict.modifyExtDict_bySelf_dict(tmp_dict) s_advdata = json.dumps(tmp_dict, ensure_ascii=False) self.obj_model.advData = s_advdata
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