Exemplo n.º 1
0
class TrunkAdmin(ReXmlAdmin):
    
    inlines = [ TrunkRoutePatternInline ]
    menu_group = 'trunk_group'
    order = 2
    model_icon = fa_icon('cogs')
    list_display = ['name','simpleroute_caller_id_number','context']
Exemplo n.º 2
0
class PbxStatusWidget(HtmlWidget):
    '''
    软交换服务状态
    '''
    widget_type = 'html_pbx_status'
    widget_icon = fa_icon('laptop')

    def has_perm(self):
        return True

    def context(self, context):
        r = requests.get(settings.FS_AGW_URL + '/base_status')
        res = json.loads(r.text)
        if res['code'] == 0:
            content = ''
            lines = base64.b64decode(res['data']).split('\n')
            content += '<b>运行时间</b>:%s 分<hr/>' % lines[0].split(
                'minutes,')[0].replace('UP ', '').replace(
                    'years', '年').replace('days', '天').replace('hours', '小时')
            content += '<b>总会话数</b>:%s<hr/>' % lines[2].split(' session')[0]
            content += '<b>会话详情</b>:当前 %s<hr/>' % lines[3].replace(
                'session(s) - peak', ' &nbsp;&nbsp峰值').replace(
                    ', last 5min', ' &nbsp;&nbsp最近5分钟')
            content += '<b>当前/最大栈大小</b>:%s' % lines[-1].replace(
                'Current Stack Size/Max', '').replace('/', ' / ')
            context['content'] = content
        else:
            context['content'] = '获取失败'
Exemplo n.º 3
0
class RingGroupAdmin(ReXmlAdmin):
    inlines = [RingGroupDeviceInline]
    app_label = 'funcs'
    menu_group = 'application_group'
    order = 2
    model_icon = fa_icon('users')

    style_fields = {'number': 'fk_raw'}
    fk_url_param = {'number': {'_p_numberpool': 4}}
Exemplo n.º 4
0
class DeviceAdmin(ReXmlAdmin):

    app_label = 'funcs'
    menu_group = 'application_group'
    order = 1
    model_icon = fa_icon('phone')
    #hide_other_field = True
    search_fields = ['name']

    form_layout = [
        layout.TabHolder(
            layout.Tab('基本设置',
                       'name',
                       'registry_ringtype',
                       'registry_timeout',
                       css_id='tab1'),
            layout.Tab('高级设置',
                       'class_type',
                       'context',
                       'location',
                       'sip_username',
                       'sip_password',
                       'callerid_internal_name',
                       'callerid_internal_number',
                       'callerid_external_name',
                       'callerid_external_number',
                       'media_mode',
                       'sip_caller_id_field',
                       'sip_cid_format',
                       'sip_invite_format',
                       'voicemail',
                       'registry_ignoreFWD',
                       css_id='tab2'))
    ]

    def do_add(self):
        from apps.base import models
        obj = self.new_obj
        _number = obj.name
        try:
            models.Number.objects.get(number=_number)
            return u'号码已经存在'
        except:
            nb = models.Number()
            nb.number = _number
            nb.numberpool_id = 1
            nb.save()
            obj.number_id = nb.id
            super(DeviceAdmin, self).do_add()

    @filter_hook
    def get_readonly_fields(self):
        if self.org_obj:
            return ['name']
        else:
            return []
Exemplo n.º 5
0
class SipInterfaceAdmin(ReXmlAdmin):

    menu_group = 'network_group'
    order = 1
    model_icon = fa_icon('plug')

    def get_nav_btns(self):
        return [
            '''<a href="/xadmin/page/sipinterfaceautoconf/" class="btn btn-primary"><i class="fa fa-inbox"></i> 自动检测</a> '''
        ]
Exemplo n.º 6
0
class SipInterfaceAdmin(ReXmlAdmin):
    
    menu_group = 'network_group'
    order = 1
    model_icon = fa_icon('plug')
    
    def get_nav_btns(self):
        return [
            '''<a href="/xadmin/page/sipinterfaceautoconf/" class="btn btn-default"><i class="fa fa-inbox"></i> 自动检测</a> ''',
            '''<a href="/xadmin/page/sipinterfacecreatebyip/?_redirect=/xadmin/base/sipinterface/" class="btn btn-default"><i class="fa fa-inbox"></i> 通过IP创建</a> '''
        ]
Exemplo n.º 7
0
class MediaFileAdmin(ReXmlAdmin):

    model_icon = fa_icon('file-sound-o')
    list_display = ['comment', 'tag', 'file_size', 'show_true_path']
    menu_group = 'exten_group'
    app_label = 'funcs'
    list_per_page = 20

    def show_true_path(self, obj):
        return '<audio src="/static/sounds/%s" controls="controls">' % obj.true_path

    show_true_path.allow_tags = True
Exemplo n.º 8
0
class MainDashboard(object):
    widgets = [[
        {
            "type": "html_pbx_status",
            "title": "服务状态"
        },
        {
            "type": "chart",
            "model": "base.numberpool",
            'chart': 'number_count'
        },
    ],
               [
                   {
                       "type":
                       "qbutton",
                       "title":
                       "快速上手",
                       "btns": [{
                           'title': "FS系统配置",
                           'icon': fa_icon('cog'),
                           'url': "/xadmin/page/fsconf/"
                       }, {
                           'model': models.SipInterface
                       }, {
                           'model': models.Location
                       }, {
                           'title': "官方主页",
                           'icon': fa_icon('github'),
                           'url': "https://github.com/JoneXiong/YouPBX"
                       }]
                   },
                   {
                       "type": "html_sofia_status",
                       "title": "VoIP状态"
                   },
               ]]
Exemplo n.º 9
0
class SofiaStatusWidget(HtmlWidget):
    widget_type = 'html_sofia_status'
    widget_icon = fa_icon('tty')

    def has_perm(self):
        return True

    def context(self, context):
        from pbx.rpc import in_api
        res = in_api.sofia_status()
        if res['code'] == 0:
            context['content'] = '%s' % res['data']['body'].replace(
                '\n', '<br/>')
        else:
            context['content'] = '获取失败'
Exemplo n.º 10
0
class SofiaStatusWidget(HtmlWidget):
    '''
    VoIP状态
    '''
    widget_type = 'html_sofia_status'
    widget_icon = fa_icon('tty')

    def has_perm(self):
        return True

    def context(self, context):
        r = requests.get(settings.FS_AGW_URL + '/sofia_status')
        res = json.loads(r.text)
        if res['code'] == 0:
            context['content'] = '%s' % base64.b64decode(res['data']).replace(
                '\n', '<br/>')
        else:
            context['content'] = '获取失败'
Exemplo n.º 11
0
# coding=utf-8

from xadmin.utils import fa_icon

verbose_name = u'应用'

menus = (
         ('application_group','应用', fa_icon('whatsapp') ),
         )
Exemplo n.º 12
0
class RouteAdmin(ReXmlAdmin):
    
    inlines = [ RoutePatternInline ]
    menu_group = 'trunk_group'
    order = 1
    model_icon = fa_icon('sitemap')
Exemplo n.º 13
0
# coding=utf-8

from xadmin.utils import fa_icon

verbose_name = u'PBX'

menus = (
    ('network_group', '网络配置', fa_icon('signal')),
    ('cat_group', '分组', fa_icon('group')),
    ('trunk_group', '中继路由', fa_icon('sitemap')),
    ('application_group', '应用', fa_icon('whatsapp')),
)
Exemplo n.º 14
0
class TimeRoutesAdmin(ReXmlAdmin):

    app_label = 'funcs'
    menu_group = 'application_group'
    order = 6
    model_icon = fa_icon('calendar-times-o')
Exemplo n.º 15
0
class AutoattendantAdmin(ReXmlAdmin):
    inlines = [AutoattendantKeymappingInline]
    app_label = 'funcs'
    menu_group = 'application_group'
    order = 3
    model_icon = fa_icon('list')
Exemplo n.º 16
0
class RingGroupAdmin(ReXmlAdmin):
    inlines = [ RingGroupDeviceInline ]
    app_label = 'funcs'
    menu_group = 'application_group'
    order = 2
    model_icon = fa_icon('users')
Exemplo n.º 17
0
class ContextAdmin(ReXmlAdmin):

    menu_group = 'cat_group'
    order = 1
    model_icon = fa_icon('group')
Exemplo n.º 18
0
class DeviceAdmin(ReXmlAdmin):

    app_label = 'funcs'
    menu_group = 'application_group'
    order = 1
    model_icon = fa_icon('phone')
Exemplo n.º 19
0
class MediaFileAdmin(ReXmlAdmin):
    
    model_icon = fa_icon('file-sound-o')
Exemplo n.º 20
0
class VoiceMailAdmin(ReXmlAdmin):

    app_label = 'funcs'
    menu_group = 'application_group'
    order = 5
    model_icon = fa_icon('envelope')
Exemplo n.º 21
0
class LocationAdmin(ReXmlAdmin):

    menu_group = 'network_group'
    order = 2
    model_icon = fa_icon('location-arrow')
Exemplo n.º 22
0
class TrunkAdmin(ReXmlAdmin):
    
    inlines = [ TrunkRoutePatternInline ]
    menu_group = 'trunk_group'
    order = 2
    model_icon = fa_icon('cogs')
Exemplo n.º 23
0
class NetlistAdmin(ReXmlAdmin):

    inlines = [NetlistItemInline]
    menu_group = 'network_group'
    order = 3
    model_icon = fa_icon('volume-control-phone')