def get(pid: str, cid: str) -> tuple[list[str], list[list[str]]]: ''' Get Args: pid (str): Project id. cid (str): Campaign id. Returns: Return a tuple with all fields at first. The second is the all datas. ''' datas = list(SenderReceiverDB().find({'pid': pid, 'cid': cid})) fields = ['name', 'mail'] for data in datas: for k in data['data']: if k not in ('name', 'mail') and k not in fields: fields.append(k) raws = [] for data in datas: raw = [] for field in fields: raw.append(data['data'].get(field, '')) raws.append(raw) return fields, raws
def get(pid, cid): ''' Get :param str pid: pid :param str cid: cid :return: fields, raws ''' datas = list(SenderReceiverDB().find({'pid': pid, 'cid': cid})) fields = ['name', 'mail'] for data in datas: for k in data['data']: if k not in ('name', 'mail') and k not in fields: fields.append(k) raws = [] for data in datas: raw = [] for field in fields: raw.append(data['data'].get(field, '')) raws.append(raw) return fields, raws
def remove(pid, cid): ''' Update :param str pid: pid :param str cid: cid ''' SenderReceiverDB().remove_past(pid=pid, cid=cid)
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)
def remove(pid: str, cid: str) -> None: ''' Update Args: pid (str): Project id. cid (str): Campaign id. ''' SenderReceiverDB().remove_past(pid=pid, cid=cid)
def update(pid: str, cid: str, datas: list[dict[str, Any]]) -> None: ''' Update 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. ''' 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) SenderReceiverDB().update_data(pid=pid, cid=cid, datas=save_datas)
def make_index() -> None: ''' Make index for the collection with `index()` ''' BudgetDB().index() ExpenseDB().index() FormDB().index() MailLetterDB().index() MattermostLinkDB().index() MattermostUsersDB().index() OAuthDB().index() ProjectDB(pid='').index() SenderReceiverDB().index() TeamDB(pid='', tid='').index() TeamMemberChangedDB().index() TeamMemberTagsDB().index() TeamPlanDB().index() TelegramDB().index() USessionDB().index() UsersDB().index() WaitListDB().index()
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)
from models.formdb import FormDB from models.mailletterdb import MailLetterDB from models.mattermost_link_db import MattermostLinkDB from models.mattermostdb import MattermostUsersDB from models.oauth_db import OAuthDB from models.projectdb import ProjectDB from models.senderdb import SenderReceiverDB from models.teamdb import TeamDB from models.teamdb import TeamMemberChangedDB from models.teamdb import TeamMemberTagsDB from models.teamdb import TeamPlanDB from models.users_db import UsersDB from models.usessiondb import USessionDB from models.waitlistdb import WaitListDB if __name__ == '__main__': FormDB().index() MailLetterDB().index() MattermostLinkDB().index() MattermostUsersDB().index() OAuthDB().index() ProjectDB(pid=None).index() SenderReceiverDB().index() TeamDB(pid=None, tid=None).index() TeamMemberChangedDB().index() TeamMemberTagsDB().index() TeamPlanDB().index() USessionDB().index() UsersDB().index() WaitListDB().index()