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)
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)
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())
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)
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)
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
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, )))
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)