Exemple #1
0
    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)
Exemple #2
0
    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,
        )
Exemple #3
0
    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)
Exemple #4
0
    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
        })
Exemple #5
0
    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})
Exemple #6
0
    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,
        )
Exemple #7
0
    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)
Exemple #8
0
    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,
        )
Exemple #9
0
    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)
Exemple #10
0
    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,
        )