Пример #1
0
    def test_adaptor_generates_service_hint(self):
        dao = Mock()
        dao.progfunckey_extension.return_value = '*735'
        dao.agent_hints.return_value = [
            Hint(user_id=42, extension='*31', argument='56')
        ]

        adaptor = AgentAdaptor(dao)

        assert_that(
            adaptor.generate(CONTEXT),
            contains_exactly(
                ('*73542***231***356', 'Custom:*73542***231***356')))
        dao.agent_hints.assert_called_once_with(CONTEXT)
Пример #2
0
def groupmember_hints(session, context):
    query = (session.query(
        sql.cast(FuncKeyDestGroupMember.group_id, Unicode).label('argument'),
        UserFeatures.id.label('user_id'),
        Extension.exten.label('extension')).join(
            Extension,
            Extension.id == FuncKeyDestGroupMember.extension_id).join(
                FuncKeyMapping, FuncKeyDestGroupMember.func_key_id ==
                FuncKeyMapping.func_key_id).filter(Extension.commented == 0))
    query = _common_filter(query, context)

    return tuple(
        Hint(user_id=row.user_id,
             extension=clean_extension(row.extension),
             argument=row.argument) for row in query)
Пример #3
0
def conference_hints(session, context):
    query = (session.query(
        Conference.id.label('conference_id'),
        Extension.exten.label('extension')).select_from(Conference).join(
            FuncKeyDestConference,
            FuncKeyDestConference.conference_id == Conference.id).join(
                Extension,
                sql.and_(Extension.type == 'conference',
                         Extension.typeval == sql.cast(
                             Conference.id,
                             Unicode))).filter(Extension.context == context))

    return tuple(
        Hint(conference_id=row.conference_id, extension=row.extension)
        for row in query.all())
Пример #4
0
def service_hints(session, context):
    query = session.query(
        Extension.exten.label('extension'),
        UserFeatures.id.label('user_id'),
    ).join(
        FuncKeyDestService,
        FuncKeyDestService.extension_id == Extension.id,
    ).join(
        FuncKeyMapping,
        FuncKeyDestService.func_key_id == FuncKeyMapping.func_key_id,
    ).filter(Extension.commented == 0)

    query = _common_filter(query, context)

    return tuple(
        Hint(user_id=row.user_id, extension=row.extension, argument=None)
        for row in query)
Пример #5
0
def forward_hints(session, context):
    query = session.query(
        Extension.exten.label('extension'),
        UserFeatures.id.label('user_id'),
        FuncKeyDestForward.number.label('argument'),
    ).join(
        FuncKeyDestForward,
        FuncKeyDestForward.extension_id == Extension.id,
    ).join(
        FuncKeyMapping,
        FuncKeyDestForward.func_key_id == FuncKeyMapping.func_key_id,
    ).filter(Extension.commented == 0)

    query = _common_filter(query, context)

    return tuple(
        Hint(user_id=row.user_id,
             extension=clean_extension(row.extension),
             argument=row.argument) for row in query)
Пример #6
0
def user_shared_hints(session):
    query = session.query(UserFeatures).options(
        joinedload('user_lines').joinedload('line'))
    hints = []
    for user in query.all():
        ifaces = ['Custom:{}-mobile'.format(user.uuid)]
        for line in user.lines:
            if line.endpoint_custom_id:
                ifaces.append(line.name)
            elif line.endpoint_sip_uuid:
                ifaces.append('pjsip/{}'.format(line.name))
            elif line.endpoint_sccp_id:
                ifaces.append('sccp/{}'.format(line.name))
            else:
                ifaces.append('custom/{}'.format(line.name))

        if not ifaces:
            continue
        argument = '&'.join(ifaces)
        hint = Hint(user_id=user.id, extension=user.uuid, argument=argument)
        hints.append(hint)
    return hints
Пример #7
0
    def test_given_conference_then_returns_conference_hint(self):
        exten = '1234'
        context = 'default'
        conference = self.add_conference()
        self.add_extension(
            context=context,
            exten=exten,
            type='conference',
            typeval=str(conference.id),
        )
        self.add_conference_destination(conference.id)

        hints = hint_dao.conference_hints(context)
        assert_that(
            hints,
            contains(
                Hint(
                    user_id=None,
                    conference_id=conference.id,
                    extension=exten,
                    argument=None,
                )))
Пример #8
0
def bsfilter_hints(session, context):
    bsfilter_extension = clean_extension(
        _find_extenfeatures(session, 'bsfilter'))

    query = session.query(
        sql.cast(
            FuncKeyDestBSFilter.filtermember_id,
            Unicode).label('argument'), ).join(
                Callfiltermember,
                Callfiltermember.id == FuncKeyDestBSFilter.filtermember_id,
            ).join(
                Callfilter,
                Callfilter.id == Callfiltermember.callfilterid,
            ).join(
                UserFeatures,
                sql.cast(Callfiltermember.typeval, Integer) == UserFeatures.id,
            ).join(
                UserLine,
                UserLine.user_id == UserFeatures.id,
            ).join(
                LineExtension,
                UserLine.line_id == LineExtension.line_id,
            ).join(
                Extension,
                Extension.id == LineExtension.extension_id,
            ).filter(
                and_(
                    UserLine.main_user.is_(True),
                    UserLine.main_line.is_(True),
                    LineExtension.main_extension.is_(True),
                    Extension.commented == 0,
                    Callfilter.commented == 0,
                    Extension.context == context,
                ))

    return tuple(
        Hint(extension=bsfilter_extension, argument=row.argument)
        for row in query)