コード例 #1
0
ファイル: document_tag.py プロジェクト: c2corg/v6_api
    def post(self):
        """ Untag the given document.

        Request:
            `POST` `/tags/remove`

        Request body:
            {'document_id': @document_id@}

        """
        document_id = self.request.validated['document_id']
        document_type = ROUTE_TYPE
        user_id = self.request.authenticated_userid
        tag_relation = get_tag_relation(user_id, document_id)

        if tag_relation:
            DBSession.delete(tag_relation)
            DBSession.add(DocumentTagLog(
                user_id=user_id, document_id=document_id,
                document_type=document_type, is_creation=False))
        else:
            log.warning(
                'tried to delete not existing tag relation '
                '({0}, {1})'.format(user_id, document_id))
            raise HTTPBadRequest('This document has no such tag.')

        notify_es_syncer(self.request.registry.queue_config)

        return {}
コード例 #2
0
ファイル: user_mailinglists.py プロジェクト: c2corg/v6_api
    def post(self):
        """Update mailinglist subscription statuses.

        Request:
            `POST` `/users/mailinglists`
            {'avalanche': False, 'lawinen': True, 'valanghe': False}

        """
        user_id = self.request.authenticated_userid
        user = DBSession.query(User).get(user_id)

        subscribed_lists = DBSession.query(Mailinglist). \
            filter(Mailinglist.user_id == user_id).all()
        subscribed_lists = {list.listname: list for list in subscribed_lists}
        subscribed_listnames = set(subscribed_lists.keys())

        lists_to_add = []
        removed_lists = False
        data = self.request.validated['mailinglists']
        for listname in data:
            subscribe_status = data.get(listname, False)
            if subscribe_status and listname not in subscribed_listnames:
                # Add list
                lists_to_add.append(Mailinglist(
                    listname=listname,
                    email=user.email,
                    user_id=user_id,
                    user=user
                ))
            elif not subscribe_status and listname in subscribed_listnames:
                # Remove list
                removed_lists = True
                DBSession.delete(subscribed_lists[listname])

        if lists_to_add:
            DBSession.add_all(lists_to_add)
        if lists_to_add or removed_lists:
            DBSession.flush()
        return {}
コード例 #3
0
ファイル: user_mailinglists.py プロジェクト: c2corg/v6_api
    def post(self):
        """Update mailinglist subscription statuses.

        Request:
            `POST` `/users/mailinglists`
            {'avalanche': False, 'lawinen': True, 'valanghe': False}

        """
        user_id = self.request.authenticated_userid
        user = DBSession.query(User).get(user_id)

        subscribed_lists = DBSession.query(Mailinglist). \
            filter(Mailinglist.user_id == user_id).all()
        subscribed_lists = {l.listname: l for l in subscribed_lists}
        subscribed_listnames = set(subscribed_lists.keys())

        lists_to_add = []
        removed_lists = False
        data = self.request.validated['mailinglists']
        for listname in data:
            subscribe_status = data.get(listname, False)
            if subscribe_status and listname not in subscribed_listnames:
                # Add list
                lists_to_add.append(Mailinglist(
                    listname=listname,
                    email=user.email,
                    user_id=user_id,
                    user=user
                ))
            elif not subscribe_status and listname in subscribed_listnames:
                # Remove list
                removed_lists = True
                DBSession.delete(subscribed_lists[listname])

        if lists_to_add:
            DBSession.add_all(lists_to_add)
        if lists_to_add or removed_lists:
            DBSession.flush()
        return {}
コード例 #4
0
ファイル: user_follow.py プロジェクト: millerf/v6_api
    def post(self):
        """ Unfollow the given user.

        Request:
            `POST` `/users/unfollow`

        Request body:
            {'user_id': @user_id@}

        """
        followed_user_id = self.request.validated['user_id']
        follower_user_id = self.request.authenticated_userid
        follower_relation = get_follower_relation(followed_user_id,
                                                  follower_user_id)

        if follower_relation:
            DBSession.delete(follower_relation)
        else:
            log.warning('tried to delete not existing follower relation '
                        '({0}, {1})'.format(followed_user_id,
                                            follower_user_id))

        return {}
コード例 #5
0
ファイル: user_follow.py プロジェクト: c2corg/v6_api
    def post(self):
        """ Unfollow the given user.

        Request:
            `POST` `/users/unfollow`

        Request body:
            {'user_id': @user_id@}

        """
        followed_user_id = self.request.validated['user_id']
        follower_user_id = self.request.authenticated_userid
        follower_relation = get_follower_relation(
            followed_user_id, follower_user_id)

        if follower_relation:
            DBSession.delete(follower_relation)
        else:
            log.warn(
                'tried to delete not existing follower relation '
                '({0}, {1})'.format(followed_user_id, follower_user_id))

        return {}