Пример #1
0
    def replace(pid: str, cid: str, datas: list[dict[str, Any]]) -> None:
        ''' Replace

        Args:
            pid (str): Project id.
            cid (str): Campaign id.
            datas (list): List of receiver datas. `name`, `mail` are required
                or include `uid` for auto replace the `name`, `mail` value.

        '''
        sender_receiver_db = SenderReceiverDB()
        sender_receiver_db.remove_past(pid=pid, cid=cid)

        uids = []
        for data in datas:
            if 'uid' in data and data['uid']:
                uids.append(data['uid'])

        user_infos = User.get_info(uids=uids)
        user_info_uids = {}
        for uid, data in user_infos.items():
            user_info_uids[uid] = {
                'name': data['profile']['badge_name'],
                'mail': data['oauth']['email'],
            }

        save_datas = []
        for data in datas:
            if 'uid' in data and data['uid'] and data['uid'] in user_info_uids:
                _data = SenderReceiverDB.new(pid=pid, cid=cid,
                                             name=user_info_uids[data['uid']
                                                                 ]['name'],
                                             mail=user_info_uids[data['uid']
                                                                 ]['mail'],
                                             )
            else:
                _data = SenderReceiverDB.new(
                    pid=pid, cid=cid, name=data['name'], mail=data['mail'])

            _data['data'].update(data)
            save_datas.append(_data)

        sender_receiver_db.update_data(pid=pid, cid=cid, datas=save_datas)
Пример #2
0
    def update(pid, cid, datas):
        ''' Update

        :param str pid: pid
        :param str cid: cid
        :param list datas: list of dict data

        '''
        save_datas = []
        for data in datas:
            _data = SenderReceiverDB.new(pid=pid,
                                         cid=cid,
                                         name=data['name'],
                                         mail=data['mail'])
            _data['data'].update(data)
            save_datas.append(_data)

        SenderReceiverDB().update_data(pid=pid, cid=cid, datas=save_datas)
Пример #3
0
    def replace(pid, cid, datas):
        ''' Replace

        :param str pid: pid
        :param str cid: cid
        :param list datas: list of dict data

        '''
        sender_receiver_db = SenderReceiverDB()
        sender_receiver_db.remove_past(pid=pid, cid=cid)

        save_datas = []
        for data in datas:
            _data = SenderReceiverDB.new(pid=pid,
                                         cid=cid,
                                         name=data['name'],
                                         mail=data['mail'])
            _data['data'].update(data)
            save_datas.append(_data)

        sender_receiver_db.update_data(pid=pid, cid=cid, datas=save_datas)