예제 #1
0
    def put(self, call_filter_id):
        tenant_uuids = self._build_tenant_list({'recurse': True})
        call_filter = self.call_filter_dao.get(call_filter_id,
                                               tenant_uuids=tenant_uuids)
        form = self.schema().load(request.get_json())
        try:
            recipients = []
            for user_form in form['users']:
                user = self.user_dao.get_by(uuid=user_form['user']['uuid'],
                                            tenant_uuids=tenant_uuids)
                recipient = self.service.find_recipient_by_user(
                    call_filter, user)
                if not recipient:
                    recipient = CallFilterMember()
                    recipient.user = user
                recipient.timeout = user_form['timeout']
                recipients.append(recipient)

        except NotFoundError as e:
            raise errors.param_not_found('users', 'User', **e.metadata)

        self.service.associate_recipients(call_filter, recipients)
        return '', 204