def set_context_switchboard(entity): Session.add( Context(name='__switchboard_directory', displayname='Switchboard', entity=entity, contexttype='others', description=''))
def list(self, line_id): user_line_query = ( Session.query(UserLine.line_id, UserLine.extension_id).filter( UserLine.line_id == line_id).filter( UserLine.extension_id != None) # noqa .distinct()) incall_query = ( Session.query(UserLine.line_id, Extension.id.label('extension_id')).join( Dialaction, and_( Dialaction.action == 'user', cast(Dialaction.actionarg1, Integer) == UserLine.user_id, UserLine.main_line == True)) # noqa .join( Incall, and_(Dialaction.category == 'incall', cast(Dialaction.categoryval, Integer) == Incall.id)).join( Extension, and_(Incall.exten == Extension.exten, Incall.context == Extension.context)).filter( UserLine.line_id == line_id)) return [ LineExtension(row.line_id, row.extension_id) for row in user_line_query.union(incall_query) ]
def set_context_outcall(context, entity): Session.add( Context(name='to-extern', displayname=context['display_name'], entity=entity, contexttype='outcall', description=''))
def check_line_has_users(line_id): query = ( Session.query(UserLine).filter(UserLine.line_id == line_id).filter( UserLine.user_id != None) # noqa .exists()) return Session.query(query).scalar()
def delete(self, template): self.validator.validate_delete(template) users = self.user_dao.find_all_by(func_key_template_id=template.id) self.template_dao.delete(template) for user in users: Session.expire(user, ['func_key_template_id']) self.device_updater.update_for_user(user) self.notifier.deleted(template)
def has_secondary_users(user_id, line_id): exists_query = ( Session.query(UserLine).filter(UserLine.line_id == line_id).filter( UserLine.user_id != user_id).filter( UserLine.main_user == False) # noqa .exists()) return Session.query(exists_query).scalar()
def template_has_sccp_device(template_id): exists_query = (Session.query(UserFeatures).join( UserFeatures.main_line_rel).join(UserLine.main_line_rel).filter( or_( UserFeatures.func_key_template_id == template_id, UserFeatures.func_key_private_template_id == template_id, )).filter(LineFeatures.endpoint == "sccp").exists()) return Session.query(exists_query).scalar()
def rollback(): Session.rollback() sysconfd = g.get('sysconfd_publisher') if sysconfd: sysconfd.rollback() bus = g.get('bus_publisher') if bus: bus.rollback()
def associate_sccp_device(line, device): device_name = "SEP" + device.mac.replace(":", "").upper() sccpdevice = (Session.query(SCCPDevice).filter( SCCPDevice.device == device_name).first()) if sccpdevice: sccpdevice.line = line.name else: Session.add( SCCPDevice(name=device_name, device=device_name, line=line.name)) Session.flush()
def set_context_internal(context, entity): Session.add( Context(name='default', displayname=context['display_name'], entity=entity, contexttype='internal', description='')) Session.add( ContextNumbers(context='default', type='user', numberbeg=context['number_start'], numberend=context['number_end']))
def set_resolvconf(hostname, domain, nameservers): row = Session.query(Resolvconf).first() row.hostname = hostname row.domain = domain row.search = domain row.description = 'Wizard Configuration' row.nameserver1 = nameservers[0] if len(nameservers) > 1: row.nameserver2 = nameservers[1] if len(nameservers) > 2: row.nameserver3 = nameservers[2] Session.add(row)
def set_netiface(interface, address, netmask, gateway): Session.add( Netiface(ifname=interface, hwtypeid=1, networktype='voip', type='iface', family='inet', method='static', address=address, netmask=netmask, broadcast='', gateway=gateway, mtu=1500, options='', description='Wizard Configuration'))
def set_context_incall(context, entity): Session.add( Context(name='from-extern', displayname=context['display_name'], entity=entity, contexttype='incall', description='')) if context.get('number_start') and context.get('number_end'): Session.add( ContextNumbers(context='from-extern', type='incall', numberbeg=context['number_start'], numberend=context['number_end'], didlength=context['did_length']))
def find_all_by_line_id(line_id): return (Session.query(UserLine.line_id, UserLine.extension_id) .filter(UserLine.line_id == line_id) .filter(UserLine.extension_id != None) # noqa .distinct() .all())
def get_associated_resource(extension_id): row = (Session.query(Extension.type.label('resource'), Extension.typeval.label('resource_id')) .filter(Extension.id == extension_id) .first()) return row.resource, row.resource_id
def find_main_endpoint_sip_by_user(user_uuid): query = (Session.query(SIP).join(User.main_line_rel).join( UserLine.main_line_rel).join( Line.sip_endpoint).filter(User.uuid == str(user_uuid))) return query.first()
def _get_associator(self, extension): context_type = (Session.query(Context.contexttype).filter( Context.name == extension.context).scalar()) if context_type not in self.associators: raise NotImplementedError( "Cannot associate extension with context type '{}'".format( context_type)) return self.associators[context_type]
def find_all_dst_user(user_id): query = (Session.query(FuncKeyTemplate).join( FuncKeyMapping, FuncKeyTemplate.id == FuncKeyMapping.template_id).join( FuncKey, FuncKeyMapping.func_key_id == FuncKey.id).join( FuncKeyDestUser, FuncKey.id == FuncKeyDestUser.func_key_id).filter( FuncKeyDestUser.user_id == user_id)) return query.all()
def update_ring_seconds(self, entry): ring_seconds = entry.extract_field('incall', 'ring_seconds') if ring_seconds: user = entry.get_resource('user') (Session.query(Dialaction).filter_by( event='answer', category='incall', action='user', actionarg1=str(user.id)).update( {'actionarg2': str(ring_seconds)}))
def set_language(language): row = Session.query(StaticSIP).filter( StaticSIP.var_name == 'language').first() row.var_val = language Session.add(row) row = Session.query(StaticIAX).filter( StaticIAX.var_name == 'language').first() row.var_val = language Session.add(row) row = (Session.query(SCCPGeneralSettings).filter( SCCPGeneralSettings.option_name == 'language').first()) row.option_value = language Session.add(row)
def sip_lines_for_device(device_id): query = (Session.query(LineFeatures, UserSIP, Extension).join( LineFeatures.endpoint_sip).join(LineFeatures.user_lines).join( UserLine.main_user_rel).join(LineFeatures.line_extensions).join( LineExtension.main_extension_rel).filter( LineFeatures.device == device_id).options( Load(LineFeatures).load_only("id", "configregistrar"), Load(UserSIP).load_only("id", "callerid", "name", "secret"), Load(Extension).load_only("id", "exten"), )) return query.all()
def commit_database(): try: Session.commit() except SQLAlchemyError: Session.rollback() raise finally: Session.remove()
def get_xivo_configured(): return Session.query(General).first()
def set_xivo_configured(): row = Session.query(General).first() row.configured = True Session.add(row)
def set_timezone(timezone): row = Session.query(General).first() row.timezone = timezone Session.add(row)
def entity_id_exists(entity_id): query = (Session.query(Entity).filter_by(id=entity_id).exists()) return Session.query(query).scalar()
def set_default_entity(display_name, name): row = Entity(displayname=display_name, name=name, description='Wizard Entity') Session.add(row)
def set_autoprov_name(autoprov_username): Session.add( StaticSIP(category='general', filename='sip.conf', var_name='autocreate_prefix', var_val=autoprov_username))
def set_admin_password(password): row = Session.query(User).filter(User.login == 'root').first() row.passwd = password Session.add(row)
def include_outcall_context_in_internal_context(): Session.add( ContextInclude(context='default', include='to-extern', priority=0))
def rollback(self): Session.rollback() sysconfd.rollback() bus.rollback() auth_client.rollback()