def create(name, pid, tid, uid): ''' Create new campaign :param str name: campaign name :param str pid: pid :param str tid: tid :param str uid: uid ''' data = SenderCampaignDB.new(name=name.strip(), pid=pid, tid=tid, uid=uid) return SenderCampaignDB().save(data)
def save_mail(cid: str, subject: str, content: str, preheader: str, layout: Literal['1', '2']) -> dict[str, Any]: ''' Save mail data Args: cid (str): Campaign id. subject (str): Mail subject. content (str): Mail content. preheader (str): The preheader in mail. layout (str): In which layout. `1`: In Volunteer layout. `2`: In COSCUP layout. Returns: Return the added / updated data. ''' return SenderCampaignDB().find_one_and_update( {'_id': cid}, {'$set': { 'mail.subject': subject, 'mail.content': content, 'mail.preheader': preheader, 'mail.layout': layout, }}, return_document=ReturnDocument.AFTER, )
def create(name: str, pid: str, tid: str, uid: str) -> dict[str, Any]: ''' Create new campaign Args: name (str): Campaign name. pid (str): Project id. tid (str): Team id. uid (str): User id. Returns: Return the added data. ''' data = SenderCampaignDB.new( name=name.strip(), pid=pid, tid=tid, uid=uid) return SenderCampaignDB().add(data)
def get_list(pid, tid): ''' Get list campaign :param str pid: pid :param str tid: tid ''' return SenderCampaignDB().find({ 'created.pid': pid, 'created.tid': tid })
def get_list(pid: str, tid: str) -> Cursor[dict[str, Any]]: ''' Get list campaign Args: pid (str): Project id. tid (str): Team id. Returns: Return the [pymongo.cursor.Cursor][]. ''' return SenderCampaignDB().find({'created.pid': pid, 'created.tid': tid})
def save_receiver(cid, teams, users=None): ''' Save receiver :param str cid: cid :param list teams: teams :param list users: users ''' update = {'receiver.teams': teams} update['receiver.users'] = users if users else [] return SenderCampaignDB().find_one_and_update( {'_id': cid}, {'$set': update}, return_document=ReturnDocument.AFTER, )
def get(cid, pid=None, tid=None): ''' Get campaign :param str cid: cid :param str pid: pid :param str tid: tid ''' query = {'_id': cid} if pid is not None: query['created.pid'] = pid if tid is not None: query['created.tid'] = tid return SenderCampaignDB().find_one(query)
def save_mail(cid, subject, content, preheader, layout): ''' Save mail data :param str cid: cid :param str subject: subject :param str content: content :param str preheader: preheader :param str layout: layout ''' return SenderCampaignDB().find_one_and_update( {'_id': cid}, { '$set': { 'mail.subject': subject, 'mail.content': content, 'mail.preheader': preheader, 'mail.layout': layout, } }, return_document=ReturnDocument.AFTER, )
def get(cid: str, pid: Optional[str] = None, tid: Optional[str] = None) -> Optional[dict[str, Any]]: ''' Get campaign Args: cid (str): Campaign id. pid (str): Project id. tid (str): Team id. Returns: Return the campaign data. ''' query = {'_id': cid} if pid is not None: query['created.pid'] = pid if tid is not None: query['created.tid'] = tid return SenderCampaignDB().find_one(query)
def save_receiver(cid: str, teams: list[str], team_w_tags: dict[str, list[str]], users: Optional[dict[str, Any]] = None, all_users: bool = False) -> dict[str, Any]: ''' Save receiver Args: cid (str): Campaign id. teams (list): List of `tid`. team_w_tags (dict): With team's internal tags. `{'<tid>': [<tag>, ...]}`. users (list): List of user/mail. `{'name': <username>, 'mail': <mail>}`. **(not in completed implement)** all_users (bool): All volunteers in platform. ''' update: dict[str, Any] = {'receiver.teams': teams} update['receiver.users'] = users if users else [] update['receiver.all_users'] = all_users update['receiver.team_w_tags'] = team_w_tags return SenderCampaignDB().find_one_and_update( {'_id': cid}, {'$set': update}, return_document=ReturnDocument.AFTER, )