Example #1
0
    def post(self):
        form = self.schema().load(request.get_json())
        form = self.add_tenant_to_form(form)

        templates = []
        for template in form['templates']:
            try:
                model = self.dao.get(
                    template['uuid'],
                    template=True,
                    tenant_uuids=[form['tenant_uuid']],
                )
                templates.append(model)
            except NotFoundError:
                metadata = {'templates': template}
                raise errors.param_not_found('templates', 'endpoint_sip',
                                             **metadata)
        form['templates'] = templates

        if form.get('transport'):
            transport_uuid = form['transport']['uuid']
            try:
                form['transport'] = self.transport_dao.get(transport_uuid)
            except NotFoundError as e:
                raise errors.param_not_found('transport', 'SIPTransport',
                                             **e.metadata)

        model = self.model(**form)
        model = self.service.create(model)
        return self.schema().dump(model), 201, self.build_headers(model)
Example #2
0
    def put(self, uuid):
        kwargs = self._add_tenant_uuid()
        sip = self.service.get(uuid, **kwargs)
        form = self.schema().load(request.get_json(), partial=True)

        if form.get('templates'):
            templates = []
            for template in form['templates']:
                try:
                    model = self.dao.get(template['uuid'],
                                         template=True,
                                         **kwargs)
                    templates.append(model)
                except NotFoundError:
                    metadata = {'templates': template}
                    raise errors.param_not_found('templates', 'endpoint_sip',
                                                 **metadata)
            form['templates'] = templates

        if form.get('transport'):
            transport_uuid = form['transport']['uuid']
            try:
                form['transport'] = self.transport_dao.get(transport_uuid)
            except NotFoundError as e:
                raise errors.param_not_found('transport', 'SIPTransport',
                                             **e.metadata)
        for name, value in form.items():
            setattr(sip, name, value)
        self.service.edit(sip)
        return '', 204
Example #3
0
    def validate_destination(self, destination):
        dest_type = destination.get('type')

        if not dest_type:
            raise errors.param_not_found('destination', 'type')

        if dest_type not in self.builders:
            raise errors.param_not_found('destination', 'type')

        builder = self.builders[dest_type]
        builder.validate(destination)
Example #4
0
    def validate(self, destination):
        extensions = self.dao.find_all_service_extensions()
        all_services = [e.service for e in extensions]
        service = destination.service

        if service not in all_services:
            raise errors.param_not_found('service', service)
Example #5
0
    def validate(self, destination):
        extensions = self.dao.find_all_forward_extensions()
        all_forwards = [e.forward for e in extensions]
        forward = destination.forward

        if forward not in all_forwards:
            raise errors.param_not_found('forward', forward)
Example #6
0
    def validate(self, destination):
        extensions = self.dao.find_all_agent_action_extensions()
        all_actions = [e.action for e in extensions]
        action = destination.action

        if action not in all_actions:
            raise errors.param_not_found('action', action)
Example #7
0
 def get_voicemail_or_fail(self, tenant_uuids=None):
     form = self.schema().load(request.get_json())
     try:
         return self.voicemail_dao.get(form['voicemail_id'],
                                       tenant_uuids=tenant_uuids)
     except NotFoundError:
         raise errors.param_not_found('voicemail_id', 'Voicemail')
Example #8
0
    def validate(self, destination):
        extensions = self.dao.find_all_transfer_extensions()
        all_transfers = [e.transfer for e in extensions]
        transfer = destination.transfer

        if transfer not in all_transfers:
            raise errors.param_not_found('transfer', transfer)
Example #9
0
 def validate(self, model):
     value = getattr(model, self.field)
     try:
         self.dao_get(value)
     except NotFoundError:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #10
0
 def validate(self, model):
     value = getattr(model, self.field)
     try:
         self.dao_get(value)
     except NotFoundError:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #11
0
 def find_or_create_destination(self, destination):
     persistor = self.build_persistor(destination.type)
     destination_row = persistor.find_or_create(destination)
     if not destination_row:
         raise errors.param_not_found('destination',
                                      'func key representing destination',
                                      type=destination.type)
     return destination_row
Example #12
0
    def _check_template_id_exists(self, device):
        if not device.template_id:
            return

        templates = self.device_dao.device_templates()

        if device.template_id not in templates:
            raise errors.param_not_found('template_id', 'DeviceTemplate')
Example #13
0
    def _check_plugin_exists(self, device):
        if not device.plugin:
            return

        plugins = self.device_dao.plugins()

        if device.plugin not in plugins:
            raise errors.param_not_found('plugin', 'Plugin')
Example #14
0
 def _find_moh_uuid(self, form, field, tenant_uuids):
     name = form.pop(field, None)
     if name:
         try:
             moh = self._moh_dao.get_by(name=name,
                                        tenant_uuids=tenant_uuids)
         except NotFoundError:
             raise errors.param_not_found(field, 'moh')
         return moh.uuid
Example #15
0
    def find_or_create_destination(self, destination):
        persistor = self.build_persistor(destination.type)
        destination_row = persistor.find_or_create(destination)

        if not destination_row:
            raise errors.param_not_found('destination',
                                         'func key representing destination',
                                         type=destination.type)
        return destination_row
Example #16
0
 def _validate(self, model, tenant_uuids=None):
     value = getattr(model, self.field)
     try:
         if tenant_uuids is None:
             self.dao_get(value)
         else:
             self.dao_get(value, tenant_uuids=tenant_uuids)
     except NotFoundError:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #17
0
    def put(self, user_id):
        user = self.get_user(user_id)
        form = self.schema().load(request.get_json())
        try:
            lines = [self.line_dao.get(line['id']) for line in form['lines']]
        except NotFoundError as e:
            raise errors.param_not_found('lines', 'Line', **e.metadata)

        self.service.associate_all_lines(user, lines)
        return '', 204
Example #18
0
 def validate(self, model):
     destination = QueueDestinationSchema().dump(model)
     skill_rule_id = destination.get('skill_rule_id', None)
     if not skill_rule_id:
         return
     try:
         self.dao_get(skill_rule_id)
     except NotFoundError:
         metadata = {'skill_rule_id': skill_rule_id}
         raise errors.param_not_found('skill_rule_id', 'SkillRule',
                                      **metadata)
Example #19
0
def validate_associate_agent_queue(queue_id, agent_id):
    if not _queue_exists(queue_id):
        raise errors.not_found('Queue', queue_id=queue_id)
    if not _agent_exists(agent_id):
        raise errors.param_not_found('agent_id', 'Agent')
    try:
        queue_members_dao.get_by_queue_id_and_agent_id(queue_id, agent_id)
        raise errors.resource_associated('Agent', 'Queue',
                                         agent_id, queue_id)
    except NotFoundError:
        pass
Example #20
0
    def validate(self, model):
        destination = UserDestinationSchema().dump(model)
        moh_uuid = destination.get('moh_uuid', None)
        if not moh_uuid:
            return

        try:
            self._dao_get(moh_uuid)
        except NotFoundError:
            metadata = {'moh_uuid': moh_uuid}
            raise errors.param_not_found('moh_uuid', 'MOH', **metadata)
Example #21
0
 def validate_moh_exists_in_tenant(self, model):
     moh_name = getattr(model, self.field)
     if moh_name:
         if moh_name == 'default':
             return
         try:
             self.dao_get_by(name=moh_name,
                             tenant_uuids=[model.tenant_uuid])
         except NotFoundError:
             metadata = {self.field: moh_name}
             raise errors.param_not_found(self.field, self.resource,
                                          **metadata)
Example #22
0
    def put(self, context_id):
        context = self.context_dao.get(context_id)
        form = self.schema().load(request.get_json())
        try:
            contexts = [
                self.context_dao.get(c['id']) for c in form['contexts']
            ]
        except NotFoundError as e:
            raise errors.param_not_found('contexts', 'Context', **e.metadata)

        self.service.associate_contexts(context, contexts)

        return '', 204
Example #23
0
    def put(self, user_id):
        user = self.user_dao.get_by_id_uuid(user_id)
        form = self.schema().load(request.get_json())
        try:
            groups = [
                self.group_dao.get_by(id=group['id'])
                for group in form['groups']
            ]
        except NotFoundError as e:
            raise errors.param_not_found('groups', 'Group', **e.metadata)

        self.service.associate_all_groups(user, groups)

        return '', 204
Example #24
0
    def put(self, paging_id):
        tenant_uuids = self._build_tenant_list({'recurse': True})
        paging = self.paging_dao.get(paging_id, tenant_uuids=tenant_uuids)
        form = self.schema().load(request.get_json())
        try:
            users = [
                self.user_dao.get_by(uuid=user['uuid'], tenant_uuids=tenant_uuids)
                for user in form['users']
            ]
        except NotFoundError as e:
            raise errors.param_not_found('users', 'User', **e.metadata)

        self.service.associate_all_member_users(paging, users)

        return '', 204
Example #25
0
    def put(self, outcall_id):
        tenant_uuids = self._build_tenant_list({'recurse': True})
        outcall = self.outcall_dao.get(outcall_id, tenant_uuids=tenant_uuids)
        form = self.schema().load(request.get_json())
        try:
            trunks = [
                self.trunk_dao.get(trunk['id'], tenant_uuids=tenant_uuids)
                for trunk in form['trunks']
            ]
        except NotFoundError as e:
            raise errors.param_not_found('trunks', 'Trunk', **e.metadata)

        self.service.associate_all_trunks(outcall, trunks)

        return '', 204
Example #26
0
 def validate_moh_exists_in_tenant(self, application):
     if not application.dest_node:
         return
     if not application.dest_node.type_ == 'holding':
         return
     moh_name = application.dest_node.music_on_hold
     if moh_name:
         if moh_name == 'default':
             return
         try:
             self.dao_get_by(name=moh_name,
                             tenant_uuids=[application.tenant_uuid])
         except NotFoundError:
             metadata = {'music_on_hold': moh_name}
             raise errors.param_not_found('music_on_hold', 'MOH',
                                          **metadata)
Example #27
0
    def put(self, call_pickup_id):
        tenant_uuids = self._build_tenant_list({'recurse': True})
        call_pickup = self.call_pickup_dao.get(call_pickup_id,
                                               tenant_uuids=tenant_uuids)
        form = self.schema().load(request.get_json())
        try:
            targets = [
                self.group_dao.get_by(id=group['id'],
                                      tenant_uuids=tenant_uuids)
                for group in form['groups']
            ]
        except NotFoundError as e:
            raise errors.param_not_found('groups', 'Group', **e.metadata)

        self.service.associate_target_groups(call_pickup, targets)
        return '', 204
Example #28
0
    def put(self, call_pickup_id):
        tenant_uuids = self._build_tenant_list({'recurse': True})
        call_pickup = self.call_pickup_dao.get(call_pickup_id,
                                               tenant_uuids=tenant_uuids)
        form = self.schema().load(request.get_json())
        try:
            interceptors = [
                self.user_dao.get_by(uuid=user['uuid'],
                                     tenant_uuids=tenant_uuids)
                for user in form['users']
            ]
        except NotFoundError as e:
            raise errors.param_not_found('users', 'User', **e.metadata)

        self.service.associate_interceptor_users(call_pickup, interceptors)
        return '', 204
Example #29
0
    def put(self, group_uuid):
        tenant_uuids = self._build_tenant_list({'recurse': True})

        group = self.group_dao.get(group_uuid, tenant_uuids=tenant_uuids)
        form = self.schema().load(request.get_json())
        members = []
        try:
            for member_form in form['users']:
                user = self.user_dao.get_by(uuid=member_form['user']['uuid'],
                                            tenant_uuids=tenant_uuids)
                member = self._find_or_create_member(group, user)
                member.priority = member_form['priority']
                members.append(member)
        except NotFoundError as e:
            raise errors.param_not_found('users', 'User', **e.metadata)

        self.service.associate_all_users(group, members)
        return '', 204
Example #30
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:
            surrogates = []
            for user_form in form['users']:
                user = self.user_dao.get_by(uuid=user_form['user']['uuid'],
                                            tenant_uuids=tenant_uuids)
                surrogate = self.service.find_surrogate_by_user(
                    call_filter, user)
                if not surrogate:
                    surrogate = CallFilterMember()
                    surrogate.user = user
                surrogates.append(surrogate)

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

        self.service.associate_surrogates(call_filter, surrogates)
        return '', 204
Example #31
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
Example #32
0
def _validate_user_id(user_line):
    try:
        return user_dao.get(user_line.user_id)
    except NotFoundError:
        raise errors.param_not_found('user_id', 'User')
Example #33
0
 def get_agent(self, agent_id, tenant_uuids=None):
     agent = self.agent_dao.find(agent_id, tenant_uuids=tenant_uuids)
     if not agent:
         raise errors.param_not_found('agent_id', 'Agent')
     return agent
Example #34
0
 def validate(self, model):
     value = getattr(model, self.field)
     items = self.dao_list()
     if value not in items:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #35
0
def _check_invalid_context(line):
    try:
        context_dao.get(line.context)
    except NotFoundError:
        raise errors.param_not_found('context', 'Context', name=line.context)
Example #36
0
def validate_context_exists(extension):
    existing_context = context_dao.find(extension.context)
    if not existing_context:
        raise errors.param_not_found('context', 'Context')
Example #37
0
 def validate(self, model):
     value = getattr(model, self.field)
     exists = self.dao_exist(value)
     if not exists:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #38
0
def _validate_user_exists(user_cti_profile):
    try:
        user_dao.get(user_cti_profile.user_id)
    except NotFoundError:
        raise errors.param_not_found('user_id', 'User')
Example #39
0
 def get_voicemail_or_fail(self):
     form = parser.parse_args()
     try:
         return self.voicemail_dao.get(form['voicemail_id'])
     except NotFoundError:
         raise errors.param_not_found('voicemail_id', 'Voicemail')
Example #40
0
 def validate(self, model):
     value = getattr(model, self.field)
     found = self.dao_find(value)
     if found is None:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #41
0
def validate_extension(line_extension):
    try:
        extension_dao.get(line_extension.extension_id)
    except NotFoundError:
        raise errors.param_not_found('extension_id', 'Extension')
Example #42
0
def _validate_line_id(user_line):
    try:
        return line_dao.get(user_line.line_id)
    except NotFoundError:
        raise errors.param_not_found('line_id', 'Line')
Example #43
0
 def validate(self, model):
     value = getattr(model, self.field)
     items = self.dao_list()
     if value not in items:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #44
0
 def validate(self, model):
     value = getattr(model, self.field)
     found = self.dao_find(value)
     if found is None:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #45
0
def _validate_cti_profile_exists(user_cti_profile):
    try:
        cti_profile_dao.get(user_cti_profile.cti_profile_id)
    except NotFoundError:
        raise errors.param_not_found('cti_profile_id', 'CtiProfile')
Example #46
0
 def validate(self, model):
     value = getattr(model, self.field)
     exists = self.dao_exist(value)
     if not exists:
         metadata = {self.field: value}
         raise errors.param_not_found(self.field, self.resource, **metadata)
Example #47
0
 def get_extension_or_fail(self):
     form = self.schema().load(request.get_json())
     try:
         return self.extension_dao.get(form['extension_id'])
     except NotFoundError:
         raise errors.param_not_found('extension_id', 'Extension')
Example #48
0
    def _find_user_uuid(self):
        user_uuid = request.user_uuid
        if not user_uuid:
            raise errors.param_not_found('user_uuid', 'meetings')

        return user_uuid
Example #49
0
 def get_line_or_fail(self):
     form = parser.parse_args()
     try:
         return self.line_dao.get(form['line_id'])
     except NotFoundError:
         raise errors.param_not_found('line_id', 'Line')
Example #50
0
def validate_line(line_extension):
    try:
        line_dao.get(line_extension.line_id)
    except NotFoundError:
        raise errors.param_not_found('line_id', 'Line')