Exemple #1
0
    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)
Exemple #2
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
Exemple #3
0
    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
Exemple #4
0
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
Exemple #5
0
    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()
Exemple #6
0
    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
Exemple #7
0
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
Exemple #8
0
    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