Added remaining controllers
authorStas Shtin <antisvin@gmail.com>
Sat, 10 Apr 2010 13:49:33 +0000 (17:49 +0400)
committerStas Shtin <antisvin@gmail.com>
Sat, 10 Apr 2010 13:49:33 +0000 (17:49 +0400)
src/ipypbx/controllers.py
src/ipypbx/main.py
src/ipypbx/ui.py
src/ipypbxweb/models.py
ui/layout.ui

index 4ea7394..1cb00a4 100644 (file)
@@ -25,9 +25,11 @@ class BaseController(QtCore.QObject):
 
     Doesn't do anything useful on its own.
     """
+    # TODO: possibly use a separate class for options and a meta-class.
     fields = ()
     view_list_fields = ()
     view_display_fields = ()
+    view_display_fields_hidden = ()
     
     def __init__(self, model=None, view_list=None, view_display=None, parent=None, views=None):
         super(BaseController, self).__init__(parent=parent)
@@ -47,7 +49,7 @@ class BaseController(QtCore.QObject):
         # Otherwise initialize a new model.
         else:
             self.model = QtSql.QSqlTableModel(parent)
-            self.model.setTable('ipypbxweb_%s' % self.basename)
+            self.model.setTable('ipypbxweb_%s' % self.basename.lower())
 
             # Create model header from fields list.
             for i, field in enumerate(self.fields):
@@ -115,7 +117,21 @@ class BaseController(QtCore.QObject):
         If it's not set explicitly, use all defined fields except the first
         which usually is the primary key.
         """
-        return self.view_display_fields or self.fields[1:]
+        # Do we have the fields to display explicitly set?
+        if self.view_display_fields:
+            fields = self.view_display_fields
+        else:
+            # Do we have hidden fields set?
+            if self.view_display_fields_hidden:
+                hidden = self.view_display_fields_hidden
+            # If not, hide the first one.
+            else:
+                hidden = self.fields[0]
+
+            # Filter away all hidden fields.
+            fields = [field for field in self.fields if not field in hidden]
+            
+        return fields
 
     def getFieldWidget(self, field):
         """
@@ -130,6 +146,7 @@ class BaseController(QtCore.QObject):
         """
         Default signals built from controller's base name.
         """
+        # Default signals handle row selection, Add and Save buttons.
         return (
             (getattr(self.views, self.basename + 'Add'), 'clicked()', self.add),
             (self.view_list.selectionModel(),
@@ -160,12 +177,10 @@ class BaseController(QtCore.QObject):
         
     def save(self):
         """
-        Save currently selected object.
+        Save to database.
         """
-        #print self.model.isDirty(self.view_list.currentRow())
-        #print self.view_list.selectedIndexes()[0].row()
-
-        #if self.model.isDirty(self.view_display.currentIndex()), self.model.rowCount()
+        # For now we just submit everything - QT seems to be able to handle it
+        # on its own.
         self.view_display.submit()
         self.getFieldWidget('Add').setEnabled(True)
         
@@ -173,12 +188,12 @@ class BaseController(QtCore.QObject):
 
 class ConnectionController(BaseController):
     """
-    Connections handler.
+    Connections controller.
     """
     fields = (
         'ID', 'Name', 'Local IP Address', 'Local Port',
         'Freeswitch IP Address', 'Freeswitch Port')
-    view_list_fields = ('Name', 'Freeswitch IP Address', 'Freeswitch Port')
+    view_list_fields = 'Name', 'Freeswitch IP Address', 'Freeswitch Port'
     
     def clone(self):
         """
@@ -187,26 +202,50 @@ class ConnectionController(BaseController):
         This creates a new connection with bound data copied from another one.
         """
 
-    def _save(self):
-        """
-        Save new or existing connection.
-        """
-        name = unicode(self.parent.ui.connectionName.text())
-
-        # Add to connection list if we've created it.
-        if self.currentConnection is None:            
-            #self.currentConnection = models.Connection(store=state.store)            
-            self.connections.append(self.currentConnection)
-            self.parent.ui.connectionList.addItem(name)
-
-        self.currentConnection.name = name
-        self.currentConnection.local_ip_address = unicode(
-            self.parent.ui.connectionLocalIpAddress.text())
-        self.currentConnection.local_port = int(
-            self.parent.ui.connectionLocalPort.text())
-        self.currentConnection.freeswitch_ip_address = unicode(
-            self.parent.ui.connectionFreeswitchIpAddress.text())
-        self.currentConnection.freeswitch_port = int(
-            self.parent.ui.connectionFreeswitchPort.text())
-
-        self.currentConnection.checkpoint()
+class SipProfileController(BaseController):
+    """
+    SIP Profile controller.
+    """
+    fields = (
+        'ID', 'Connection ID', 'Name', 'External RTP IP', 'External SIP IP',
+        'RTP IP', 'SIP IP', 'SIP Port', 'Accept Blind Registration',
+        'Authenticate Calls', 'Is Active')
+    view_list_fields = 'Name', 'SIP IP', 'SIP Port'
+    view_display_fields_hidden = 'ID', 'Connection ID'
+
+
+class DomainController(BaseController):
+    """
+    Domain controller.
+    """
+    fields = 'ID', 'SIP Profile ID', 'Host Name', 'Is Active'
+    view_list_fields = 'SIP Profile ID', 'Host Name', 'Is Active'
+
+
+class GatewayController(BaseController):
+    """
+    Gateway controller.
+    """
+    fields = (
+        'ID', 'SIP Profile ID', 'Name', 'Username', 'Password', 'Realm',
+        'From Domain', 'Expire In Seconds', 'Retry In Seconds',
+        'Caller ID In From Field', 'Is Active')
+    view_list_fields = 'SIP Profile ID', 'Name'
+
+
+class EndpointController(BaseController):
+    """
+    Endpoint controller.
+    """
+    fields = 'ID', 'User ID', 'Password', 'Domain ID', 'Is Active'
+
+
+class ExtensionController(BaseController):
+    """
+    Extension controller.
+    """
+    fields = (
+        'ID', 'Destination Match', 'XML Dialplan', 'Domain ID', 'Endpoint ID',
+        'Authenticate Calls', 'Is Active')
+    view_list_fields = 'Destination Match', 'Domain ID', 'Endpoint ID'
+        
index 2c6876b..2453783 100644 (file)
@@ -82,8 +82,11 @@ if __name__ == '__main__':
     localize()
     main.show()
 
-    connectionController = controllers.ConnectionController(
-        parent=main, views=views)
+    for controllerClass in (
+        controllers.ConnectionController, controllers.SipProfileController,
+        controllers.DomainController, controllers.GatewayController,
+        controllers.EndpointController, controllers.ExtensionController):
+        controllerClass(parent=main, views=views)
 
     app.exec_()
 #    sys.exit()
index 763e061..7c7b7a5 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file '../ui/layout.ui'
 #
-# Created: Fri Apr  9 23:13:40 2010
+# Created: Sat Apr 10 17:48:21 2010
 #      by: PyQt4 UI code generator 4.7.2
 #
 # WARNING! All changes made in this file will be lost!
@@ -96,15 +96,15 @@ class Ui_MainWindow(object):
         self.label_6 = QtGui.QLabel(self.gridLayoutWidget_2)
         self.label_6.setObjectName("label_6")
         self.formLayout_5.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_6)
-        self.sipProfileExtRtpIp = QtGui.QLineEdit(self.gridLayoutWidget_2)
-        self.sipProfileExtRtpIp.setObjectName("sipProfileExtRtpIp")
-        self.formLayout_5.setWidget(1, QtGui.QFormLayout.FieldRole, self.sipProfileExtRtpIp)
+        self.sipProfileExternalRtpIp = QtGui.QLineEdit(self.gridLayoutWidget_2)
+        self.sipProfileExternalRtpIp.setObjectName("sipProfileExternalRtpIp")
+        self.formLayout_5.setWidget(1, QtGui.QFormLayout.FieldRole, self.sipProfileExternalRtpIp)
         self.label_4 = QtGui.QLabel(self.gridLayoutWidget_2)
         self.label_4.setObjectName("label_4")
         self.formLayout_5.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_4)
-        self.sipProfileExtSipIp = QtGui.QLineEdit(self.gridLayoutWidget_2)
-        self.sipProfileExtSipIp.setObjectName("sipProfileExtSipIp")
-        self.formLayout_5.setWidget(2, QtGui.QFormLayout.FieldRole, self.sipProfileExtSipIp)
+        self.sipProfileExternalSipIp = QtGui.QLineEdit(self.gridLayoutWidget_2)
+        self.sipProfileExternalSipIp.setObjectName("sipProfileExternalSipIp")
+        self.formLayout_5.setWidget(2, QtGui.QFormLayout.FieldRole, self.sipProfileExternalSipIp)
         self.label_8 = QtGui.QLabel(self.gridLayoutWidget_2)
         self.label_8.setObjectName("label_8")
         self.formLayout_5.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_8)
@@ -144,9 +144,9 @@ class Ui_MainWindow(object):
         self.sipProfileSave = QtGui.QPushButton(self.gridLayoutWidget_2)
         self.sipProfileSave.setObjectName("sipProfileSave")
         self.gridLayout_6.addWidget(self.sipProfileSave, 1, 1, 1, 1)
-        self.sipProfileList = QtGui.QListView(self.gridLayoutWidget_2)
-        self.sipProfileList.setObjectName("sipProfileList")
-        self.gridLayout_6.addWidget(self.sipProfileList, 0, 0, 1, 1)
+        self.sipProfileViewList = QtGui.QTableView(self.gridLayoutWidget_2)
+        self.sipProfileViewList.setObjectName("sipProfileViewList")
+        self.gridLayout_6.addWidget(self.sipProfileViewList, 0, 0, 1, 1)
         self.tabWidget.addTab(self.sipProfilesTab, "")
         self.domainsTab = QtGui.QWidget()
         self.domainsTab.setObjectName("domainsTab")
@@ -155,9 +155,6 @@ class Ui_MainWindow(object):
         self.gridLayoutWidget.setObjectName("gridLayoutWidget")
         self.gridLayout_3 = QtGui.QGridLayout(self.gridLayoutWidget)
         self.gridLayout_3.setObjectName("gridLayout_3")
-        self.domainList = QtGui.QListView(self.gridLayoutWidget)
-        self.domainList.setObjectName("domainList")
-        self.gridLayout_3.addWidget(self.domainList, 0, 0, 1, 1)
         self.domainAdd = QtGui.QPushButton(self.gridLayoutWidget)
         self.domainAdd.setObjectName("domainAdd")
         self.gridLayout_3.addWidget(self.domainAdd, 1, 0, 1, 1)
@@ -177,14 +174,17 @@ class Ui_MainWindow(object):
         self.label_18 = QtGui.QLabel(self.gridLayoutWidget)
         self.label_18.setObjectName("label_18")
         self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_18)
-        self.domainSipProfile = QtGui.QComboBox(self.gridLayoutWidget)
-        self.domainSipProfile.setObjectName("domainSipProfile")
-        self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.domainSipProfile)
+        self.domainSipProfileId = QtGui.QComboBox(self.gridLayoutWidget)
+        self.domainSipProfileId.setObjectName("domainSipProfileId")
+        self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.domainSipProfileId)
         self.domainIsActive = QtGui.QCheckBox(self.gridLayoutWidget)
         self.domainIsActive.setChecked(True)
         self.domainIsActive.setObjectName("domainIsActive")
         self.formLayout_3.setWidget(2, QtGui.QFormLayout.LabelRole, self.domainIsActive)
         self.gridLayout_3.addLayout(self.formLayout_3, 0, 1, 1, 1)
+        self.domainViewList = QtGui.QTableView(self.gridLayoutWidget)
+        self.domainViewList.setObjectName("domainViewList")
+        self.gridLayout_3.addWidget(self.domainViewList, 0, 0, 1, 1)
         self.tabWidget.addTab(self.domainsTab, "")
         self.gatewaysTab = QtGui.QWidget()
         self.gatewaysTab.setObjectName("gatewaysTab")
@@ -193,9 +193,6 @@ class Ui_MainWindow(object):
         self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3")
         self.gridLayout_8 = QtGui.QGridLayout(self.gridLayoutWidget_3)
         self.gridLayout_8.setObjectName("gridLayout_8")
-        self.gatewayList = QtGui.QListView(self.gridLayoutWidget_3)
-        self.gatewayList.setObjectName("gatewayList")
-        self.gridLayout_8.addWidget(self.gatewayList, 0, 0, 1, 1)
         self.gatewayAdd = QtGui.QPushButton(self.gridLayoutWidget_3)
         self.gatewayAdd.setObjectName("gatewayAdd")
         self.gridLayout_8.addWidget(self.gatewayAdd, 1, 0, 1, 1)
@@ -243,9 +240,9 @@ class Ui_MainWindow(object):
         self.gatewayCallerIdInFromField = QtGui.QCheckBox(self.gridLayoutWidget_3)
         self.gatewayCallerIdInFromField.setObjectName("gatewayCallerIdInFromField")
         self.formLayout.setWidget(8, QtGui.QFormLayout.FieldRole, self.gatewayCallerIdInFromField)
-        self.comboBox = QtGui.QComboBox(self.gridLayoutWidget_3)
-        self.comboBox.setObjectName("comboBox")
-        self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.comboBox)
+        self.gatewaySipProfileId = QtGui.QComboBox(self.gridLayoutWidget_3)
+        self.gatewaySipProfileId.setObjectName("gatewaySipProfileId")
+        self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.gatewaySipProfileId)
         self.gatewayUsername = QtGui.QLineEdit(self.gridLayoutWidget_3)
         self.gatewayUsername.setObjectName("gatewayUsername")
         self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.gatewayUsername)
@@ -266,6 +263,9 @@ class Ui_MainWindow(object):
         self.gatewayRetryInSeconds.setObjectName("gatewayRetryInSeconds")
         self.formLayout.setWidget(7, QtGui.QFormLayout.FieldRole, self.gatewayRetryInSeconds)
         self.gridLayout_8.addLayout(self.formLayout, 0, 1, 1, 1)
+        self.gatewayViewList = QtGui.QTableView(self.gridLayoutWidget_3)
+        self.gatewayViewList.setObjectName("gatewayViewList")
+        self.gridLayout_8.addWidget(self.gatewayViewList, 0, 0, 1, 1)
         self.tabWidget.addTab(self.gatewaysTab, "")
         self.endpointsTab = QtGui.QWidget()
         self.endpointsTab.setObjectName("endpointsTab")
@@ -285,9 +285,9 @@ class Ui_MainWindow(object):
         self.label_2 = QtGui.QLabel(self.gridLayoutWidget_4)
         self.label_2.setObjectName("label_2")
         self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_2)
-        self.endpointUseId = QtGui.QLineEdit(self.gridLayoutWidget_4)
-        self.endpointUseId.setObjectName("endpointUseId")
-        self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.endpointUseId)
+        self.endpointUserId = QtGui.QLineEdit(self.gridLayoutWidget_4)
+        self.endpointUserId.setObjectName("endpointUserId")
+        self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.endpointUserId)
         self.label_26 = QtGui.QLabel(self.gridLayoutWidget_4)
         self.label_26.setObjectName("label_26")
         self.formLayout_2.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_26)
@@ -298,17 +298,17 @@ class Ui_MainWindow(object):
         self.endpointPassword.setEchoMode(QtGui.QLineEdit.Password)
         self.endpointPassword.setObjectName("endpointPassword")
         self.formLayout_2.setWidget(1, QtGui.QFormLayout.FieldRole, self.endpointPassword)
-        self.endpontDomain = QtGui.QComboBox(self.gridLayoutWidget_4)
-        self.endpontDomain.setObjectName("endpontDomain")
-        self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.endpontDomain)
+        self.endpointDomainId = QtGui.QComboBox(self.gridLayoutWidget_4)
+        self.endpointDomainId.setObjectName("endpointDomainId")
+        self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.endpointDomainId)
         self.endpointIsActive = QtGui.QCheckBox(self.gridLayoutWidget_4)
         self.endpointIsActive.setChecked(True)
         self.endpointIsActive.setObjectName("endpointIsActive")
         self.formLayout_2.setWidget(3, QtGui.QFormLayout.LabelRole, self.endpointIsActive)
         self.gridLayout_2.addLayout(self.formLayout_2, 0, 1, 1, 1)
-        self.endpointList = QtGui.QListWidget(self.gridLayoutWidget_4)
-        self.endpointList.setObjectName("endpointList")
-        self.gridLayout_2.addWidget(self.endpointList, 0, 0, 1, 1)
+        self.endpointViewList = QtGui.QTableView(self.gridLayoutWidget_4)
+        self.endpointViewList.setObjectName("endpointViewList")
+        self.gridLayout_2.addWidget(self.endpointViewList, 0, 0, 1, 1)
         self.tabWidget.addTab(self.endpointsTab, "")
         self.extensionsTab = QtGui.QWidget()
         self.extensionsTab.setObjectName("extensionsTab")
@@ -317,9 +317,6 @@ class Ui_MainWindow(object):
         self.gridLayoutWidget_5.setObjectName("gridLayoutWidget_5")
         self.gridLayout_4 = QtGui.QGridLayout(self.gridLayoutWidget_5)
         self.gridLayout_4.setObjectName("gridLayout_4")
-        self.extensionList = QtGui.QListView(self.gridLayoutWidget_5)
-        self.extensionList.setObjectName("extensionList")
-        self.gridLayout_4.addWidget(self.extensionList, 0, 0, 1, 1)
         self.extensionAdd = QtGui.QPushButton(self.gridLayoutWidget_5)
         self.extensionAdd.setObjectName("extensionAdd")
         self.gridLayout_4.addWidget(self.extensionAdd, 1, 0, 1, 1)
@@ -331,9 +328,6 @@ class Ui_MainWindow(object):
         self.label_3 = QtGui.QLabel(self.gridLayoutWidget_5)
         self.label_3.setObjectName("label_3")
         self.formLayout_4.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_3)
-        self.extensionDialplan = QtGui.QLineEdit(self.gridLayoutWidget_5)
-        self.extensionDialplan.setObjectName("extensionDialplan")
-        self.formLayout_4.setWidget(1, QtGui.QFormLayout.FieldRole, self.extensionDialplan)
         self.label_28 = QtGui.QLabel(self.gridLayoutWidget_5)
         self.label_28.setObjectName("label_28")
         self.formLayout_4.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_28)
@@ -354,13 +348,19 @@ class Ui_MainWindow(object):
         self.extensionDestinationMatch = QtGui.QLineEdit(self.gridLayoutWidget_5)
         self.extensionDestinationMatch.setObjectName("extensionDestinationMatch")
         self.formLayout_4.setWidget(0, QtGui.QFormLayout.FieldRole, self.extensionDestinationMatch)
-        self.extensionDomain = QtGui.QComboBox(self.gridLayoutWidget_5)
-        self.extensionDomain.setObjectName("extensionDomain")
-        self.formLayout_4.setWidget(2, QtGui.QFormLayout.FieldRole, self.extensionDomain)
-        self.extensionEndpoint = QtGui.QComboBox(self.gridLayoutWidget_5)
-        self.extensionEndpoint.setObjectName("extensionEndpoint")
-        self.formLayout_4.setWidget(3, QtGui.QFormLayout.FieldRole, self.extensionEndpoint)
+        self.extensionDomainId = QtGui.QComboBox(self.gridLayoutWidget_5)
+        self.extensionDomainId.setObjectName("extensionDomainId")
+        self.formLayout_4.setWidget(2, QtGui.QFormLayout.FieldRole, self.extensionDomainId)
+        self.extensionEndpointId = QtGui.QComboBox(self.gridLayoutWidget_5)
+        self.extensionEndpointId.setObjectName("extensionEndpointId")
+        self.formLayout_4.setWidget(3, QtGui.QFormLayout.FieldRole, self.extensionEndpointId)
+        self.extensionXmlDialplan = QtGui.QTextEdit(self.gridLayoutWidget_5)
+        self.extensionXmlDialplan.setObjectName("extensionXmlDialplan")
+        self.formLayout_4.setWidget(1, QtGui.QFormLayout.FieldRole, self.extensionXmlDialplan)
         self.gridLayout_4.addLayout(self.formLayout_4, 0, 1, 1, 1)
+        self.extensionViewList = QtGui.QTableView(self.gridLayoutWidget_5)
+        self.extensionViewList.setObjectName("extensionViewList")
+        self.gridLayout_4.addWidget(self.extensionViewList, 0, 0, 1, 1)
         self.tabWidget.addTab(self.extensionsTab, "")
         MainWindow.setCentralWidget(self.centralwidget)
 
@@ -375,28 +375,27 @@ class Ui_MainWindow(object):
         MainWindow.setTabOrder(self.connectionFreeswitchIpAddress, self.connectionFreeswitchPort)
         MainWindow.setTabOrder(self.connectionFreeswitchPort, self.connectionAdd)
         MainWindow.setTabOrder(self.connectionAdd, self.connectionSave)
-        MainWindow.setTabOrder(self.connectionSave, self.sipProfileList)
-        MainWindow.setTabOrder(self.sipProfileList, self.sipProfileName)
-        MainWindow.setTabOrder(self.sipProfileName, self.sipProfileExtRtpIp)
-        MainWindow.setTabOrder(self.sipProfileExtRtpIp, self.sipProfileExtSipIp)
-        MainWindow.setTabOrder(self.sipProfileExtSipIp, self.sipProfileRtpIp)
+        MainWindow.setTabOrder(self.connectionSave, self.sipProfileViewList)
+        MainWindow.setTabOrder(self.sipProfileViewList, self.sipProfileName)
+        MainWindow.setTabOrder(self.sipProfileName, self.sipProfileExternalRtpIp)
+        MainWindow.setTabOrder(self.sipProfileExternalRtpIp, self.sipProfileExternalSipIp)
+        MainWindow.setTabOrder(self.sipProfileExternalSipIp, self.sipProfileRtpIp)
         MainWindow.setTabOrder(self.sipProfileRtpIp, self.sipProfileSipIp)
         MainWindow.setTabOrder(self.sipProfileSipIp, self.sipProfileSipPort)
         MainWindow.setTabOrder(self.sipProfileSipPort, self.sipProfileAcceptBlindRegistration)
         MainWindow.setTabOrder(self.sipProfileAcceptBlindRegistration, self.sipProfileAuthenticateCalls)
-        MainWindow.setTabOrder(self.sipProfileAuthenticateCalls, self.sipProfileIsActive)
-        MainWindow.setTabOrder(self.sipProfileIsActive, self.sipProfileAdd)
+        MainWindow.setTabOrder(self.sipProfileAuthenticateCalls, self.sipProfileAdd)
         MainWindow.setTabOrder(self.sipProfileAdd, self.sipProfileSave)
-        MainWindow.setTabOrder(self.sipProfileSave, self.domainList)
-        MainWindow.setTabOrder(self.domainList, self.domainHostName)
-        MainWindow.setTabOrder(self.domainHostName, self.domainSipProfile)
-        MainWindow.setTabOrder(self.domainSipProfile, self.domainIsActive)
+        MainWindow.setTabOrder(self.sipProfileSave, self.domainViewList)
+        MainWindow.setTabOrder(self.domainViewList, self.domainHostName)
+        MainWindow.setTabOrder(self.domainHostName, self.domainSipProfileId)
+        MainWindow.setTabOrder(self.domainSipProfileId, self.domainIsActive)
         MainWindow.setTabOrder(self.domainIsActive, self.domainAdd)
         MainWindow.setTabOrder(self.domainAdd, self.domainSave)
-        MainWindow.setTabOrder(self.domainSave, self.gatewayList)
-        MainWindow.setTabOrder(self.gatewayList, self.gatewayName)
-        MainWindow.setTabOrder(self.gatewayName, self.comboBox)
-        MainWindow.setTabOrder(self.comboBox, self.gatewayUsername)
+        MainWindow.setTabOrder(self.domainSave, self.gatewayViewList)
+        MainWindow.setTabOrder(self.gatewayViewList, self.gatewayName)
+        MainWindow.setTabOrder(self.gatewayName, self.gatewaySipProfileId)
+        MainWindow.setTabOrder(self.gatewaySipProfileId, self.gatewayUsername)
         MainWindow.setTabOrder(self.gatewayUsername, self.gatewayPassword)
         MainWindow.setTabOrder(self.gatewayPassword, self.gatewayRealm)
         MainWindow.setTabOrder(self.gatewayRealm, self.gatewayFromDomain)
@@ -406,19 +405,18 @@ class Ui_MainWindow(object):
         MainWindow.setTabOrder(self.gatewayCallerIdInFromField, self.gatewayIsActive)
         MainWindow.setTabOrder(self.gatewayIsActive, self.gatewayAdd)
         MainWindow.setTabOrder(self.gatewayAdd, self.gatewaySave)
-        MainWindow.setTabOrder(self.gatewaySave, self.endpointList)
-        MainWindow.setTabOrder(self.endpointList, self.endpointUseId)
-        MainWindow.setTabOrder(self.endpointUseId, self.endpointPassword)
-        MainWindow.setTabOrder(self.endpointPassword, self.endpontDomain)
-        MainWindow.setTabOrder(self.endpontDomain, self.endpointIsActive)
+        MainWindow.setTabOrder(self.gatewaySave, self.endpointViewList)
+        MainWindow.setTabOrder(self.endpointViewList, self.endpointUserId)
+        MainWindow.setTabOrder(self.endpointUserId, self.endpointPassword)
+        MainWindow.setTabOrder(self.endpointPassword, self.endpointDomainId)
+        MainWindow.setTabOrder(self.endpointDomainId, self.endpointIsActive)
         MainWindow.setTabOrder(self.endpointIsActive, self.endpointAdd)
         MainWindow.setTabOrder(self.endpointAdd, self.endpointSave)
-        MainWindow.setTabOrder(self.endpointSave, self.extensionList)
-        MainWindow.setTabOrder(self.extensionList, self.extensionDestinationMatch)
-        MainWindow.setTabOrder(self.extensionDestinationMatch, self.extensionDialplan)
-        MainWindow.setTabOrder(self.extensionDialplan, self.extensionDomain)
-        MainWindow.setTabOrder(self.extensionDomain, self.extensionEndpoint)
-        MainWindow.setTabOrder(self.extensionEndpoint, self.extensionAuthenticateCalls)
+        MainWindow.setTabOrder(self.endpointSave, self.extensionViewList)
+        MainWindow.setTabOrder(self.extensionViewList, self.extensionDestinationMatch)
+        MainWindow.setTabOrder(self.extensionDestinationMatch, self.extensionDomainId)
+        MainWindow.setTabOrder(self.extensionDomainId, self.extensionEndpointId)
+        MainWindow.setTabOrder(self.extensionEndpointId, self.extensionAuthenticateCalls)
         MainWindow.setTabOrder(self.extensionAuthenticateCalls, self.extensionIsActive)
         MainWindow.setTabOrder(self.extensionIsActive, self.extensionAdd)
         MainWindow.setTabOrder(self.extensionAdd, self.extensionSave)
index fe6a5eb..04fbde6 100644 (file)
@@ -71,7 +71,7 @@ class Endpoint(models.Model):
 class Extension(models.Model):
     destination_match = models.CharField(max_length=100)
     xml_dialplan = models.TextField()
-    domain = models.CharField(max_length=100)
+    domain = models.ForeignKey(Domain)
     endpoint = models.ForeignKey(Endpoint)
     authenticate_calls = models.BooleanField()
     is_active = models.BooleanField()
index 568f590..0ac10c3 100644 (file)
           </widget>
          </item>
          <item row="1" column="1">
-          <widget class="QLineEdit" name="sipProfileExtRtpIp"/>
+          <widget class="QLineEdit" name="sipProfileExternalRtpIp"/>
          </item>
          <item row="2" column="0">
           <widget class="QLabel" name="label_4">
           </widget>
          </item>
          <item row="2" column="1">
-          <widget class="QLineEdit" name="sipProfileExtSipIp"/>
+          <widget class="QLineEdit" name="sipProfileExternalSipIp"/>
          </item>
          <item row="3" column="0">
           <widget class="QLabel" name="label_8">
         </widget>
        </item>
        <item row="0" column="0">
-        <widget class="QListView" name="sipProfileList"/>
+        <widget class="QTableView" name="sipProfileViewList"/>
        </item>
       </layout>
      </widget>
        </rect>
       </property>
       <layout class="QGridLayout" name="gridLayout_3">
-       <item row="0" column="0">
-        <widget class="QListView" name="domainList"/>
-       </item>
        <item row="1" column="0">
         <widget class="QPushButton" name="domainAdd">
          <property name="text">
           </widget>
          </item>
          <item row="1" column="1">
-          <widget class="QComboBox" name="domainSipProfile"/>
+          <widget class="QComboBox" name="domainSipProfileId"/>
          </item>
          <item row="2" column="0">
           <widget class="QCheckBox" name="domainIsActive">
          </item>
         </layout>
        </item>
+       <item row="0" column="0">
+        <widget class="QTableView" name="domainViewList"/>
+       </item>
       </layout>
      </widget>
     </widget>
        </rect>
       </property>
       <layout class="QGridLayout" name="gridLayout_8">
-       <item row="0" column="0">
-        <widget class="QListView" name="gatewayList"/>
-       </item>
        <item row="1" column="0">
         <widget class="QPushButton" name="gatewayAdd">
          <property name="text">
           </widget>
          </item>
          <item row="1" column="1">
-          <widget class="QComboBox" name="comboBox"/>
+          <widget class="QComboBox" name="gatewaySipProfileId"/>
          </item>
          <item row="2" column="1">
           <widget class="QLineEdit" name="gatewayUsername"/>
          </item>
         </layout>
        </item>
+       <item row="0" column="0">
+        <widget class="QTableView" name="gatewayViewList"/>
+       </item>
       </layout>
      </widget>
     </widget>
           </widget>
          </item>
          <item row="0" column="1">
-          <widget class="QLineEdit" name="endpointUseId"/>
+          <widget class="QLineEdit" name="endpointUserId"/>
          </item>
          <item row="1" column="0">
           <widget class="QLabel" name="label_26">
           </widget>
          </item>
          <item row="2" column="1">
-          <widget class="QComboBox" name="endpontDomain"/>
+          <widget class="QComboBox" name="endpointDomainId"/>
          </item>
          <item row="3" column="0">
           <widget class="QCheckBox" name="endpointIsActive">
         </layout>
        </item>
        <item row="0" column="0">
-        <widget class="QListWidget" name="endpointList"/>
+        <widget class="QTableView" name="endpointViewList"/>
        </item>
       </layout>
      </widget>
        </rect>
       </property>
       <layout class="QGridLayout" name="gridLayout_4">
-       <item row="0" column="0">
-        <widget class="QListView" name="extensionList"/>
-       </item>
        <item row="1" column="0">
         <widget class="QPushButton" name="extensionAdd">
          <property name="text">
            </property>
           </widget>
          </item>
-         <item row="1" column="1">
-          <widget class="QLineEdit" name="extensionDialplan"/>
-         </item>
          <item row="0" column="0">
           <widget class="QLabel" name="label_28">
            <property name="text">
           <widget class="QLineEdit" name="extensionDestinationMatch"/>
          </item>
          <item row="2" column="1">
-          <widget class="QComboBox" name="extensionDomain"/>
+          <widget class="QComboBox" name="extensionDomainId"/>
          </item>
          <item row="3" column="1">
-          <widget class="QComboBox" name="extensionEndpoint"/>
+          <widget class="QComboBox" name="extensionEndpointId"/>
+         </item>
+         <item row="1" column="1">
+          <widget class="QTextEdit" name="extensionXmlDialplan"/>
          </item>
         </layout>
        </item>
+       <item row="0" column="0">
+        <widget class="QTableView" name="extensionViewList"/>
+       </item>
       </layout>
      </widget>
     </widget>
   <tabstop>connectionFreeswitchPort</tabstop>
   <tabstop>connectionAdd</tabstop>
   <tabstop>connectionSave</tabstop>
-  <tabstop>sipProfileList</tabstop>
+  <tabstop>sipProfileViewList</tabstop>
   <tabstop>sipProfileName</tabstop>
-  <tabstop>sipProfileExtRtpIp</tabstop>
-  <tabstop>sipProfileExtSipIp</tabstop>
+  <tabstop>sipProfileExternalRtpIp</tabstop>
+  <tabstop>sipProfileExternalSipIp</tabstop>
   <tabstop>sipProfileRtpIp</tabstop>
   <tabstop>sipProfileSipIp</tabstop>
   <tabstop>sipProfileSipPort</tabstop>
   <tabstop>sipProfileAcceptBlindRegistration</tabstop>
   <tabstop>sipProfileAuthenticateCalls</tabstop>
-  <tabstop>sipProfileIsActive</tabstop>
   <tabstop>sipProfileAdd</tabstop>
   <tabstop>sipProfileSave</tabstop>
-  <tabstop>domainList</tabstop>
+  <tabstop>domainViewList</tabstop>
   <tabstop>domainHostName</tabstop>
-  <tabstop>domainSipProfile</tabstop>
+  <tabstop>domainSipProfileId</tabstop>
   <tabstop>domainIsActive</tabstop>
   <tabstop>domainAdd</tabstop>
   <tabstop>domainSave</tabstop>
-  <tabstop>gatewayList</tabstop>
+  <tabstop>gatewayViewList</tabstop>
   <tabstop>gatewayName</tabstop>
-  <tabstop>comboBox</tabstop>
+  <tabstop>gatewaySipProfileId</tabstop>
   <tabstop>gatewayUsername</tabstop>
   <tabstop>gatewayPassword</tabstop>
   <tabstop>gatewayRealm</tabstop>
   <tabstop>gatewayIsActive</tabstop>
   <tabstop>gatewayAdd</tabstop>
   <tabstop>gatewaySave</tabstop>
-  <tabstop>endpointList</tabstop>
-  <tabstop>endpointUseId</tabstop>
+  <tabstop>endpointViewList</tabstop>
+  <tabstop>endpointUserId</tabstop>
   <tabstop>endpointPassword</tabstop>
-  <tabstop>endpontDomain</tabstop>
+  <tabstop>endpointDomainId</tabstop>
   <tabstop>endpointIsActive</tabstop>
   <tabstop>endpointAdd</tabstop>
   <tabstop>endpointSave</tabstop>
-  <tabstop>extensionList</tabstop>
+  <tabstop>extensionViewList</tabstop>
   <tabstop>extensionDestinationMatch</tabstop>
-  <tabstop>extensionDialplan</tabstop>
-  <tabstop>extensionDomain</tabstop>
-  <tabstop>extensionEndpoint</tabstop>
+  <tabstop>extensionDomainId</tabstop>
+  <tabstop>extensionEndpointId</tabstop>
   <tabstop>extensionAuthenticateCalls</tabstop>
   <tabstop>extensionIsActive</tabstop>
   <tabstop>extensionAdd</tabstop>