Помогите ускорить выборку из active directory? Своих усилий хватило на следующий код:
модуль main_AD_list.py
from PyQt4 import QtGui, QtCore from ADD_AD_form import Ui_ADForm import win32com.client class myADWindow(QtGui.QWidget): def __init__(self, parent=None): super(myADWindow,self).__init__(parent) self.ui = Ui_ADForm() self.ui.setupUi(self) self.connect(self.ui.pushButton,QtCore.SIGNAL("clicked()"),QtGui.qApp.quit) self.connect(self.ui.pushButton_2,QtCore.SIGNAL("clicked()"),self.AD_list_Filter) def AD_list_Filter(self): GetObj = win32com.client.GetObject ou="LDAP://DC=cis/DC=compan/OU=region compani/OU=zavod" obj_ou = GetObj(ou) for o in obj_ou: item = QtGui.QTreeWidgetItem(self.ui.treeWidget) item.setText(0,o.Name) ou_n = ou+'/' + o.Name obj_ou_n = GetObj(ou_n) for o in obj_ou_n: item_2 = QtGui.QTreeWidgetItem(item) item_2.setText(0, o.Name) item.addChild(item_2) ou_u = ou_n +'/'+ o.Name obj_ou_u = GetObj(ou_u) # obj_u.Filter = ["User"] for o in obj_ou_u: item_3 = QtGui.QTreeWidgetItem(item_2) item_3.setText(0, o.Name) item.addChild(item_3) user = ou_u +'/'+ o.Name obj_user = GetObj(user) for o in obj_user: item_4 = QtGui.QTreeWidgetItem(item_3) item_4.setText(0, o.Name) item.addChild(item_4) user_g = user +'/'+ o.Name obj_user_g = GetObj(user_g) for o in obj_user_g: item_5 = QtGui.QTreeWidgetItem(item_4) item_5.setText(0, o.Name) item.addChild(item_5)
модуль формы ADD_AD_form
from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_ADForm(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) Form.resize(291, 291) self.treeWidget = QtGui.QTreeWidget(Form) self.treeWidget.setGeometry(QtCore.QRect(10, 10, 271, 191)) self.treeWidget.setObjectName(_fromUtf8("treeWidget")) self.treeWidget.headerItem().setText(0, _fromUtf8("1")) self.pushButton = QtGui.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(20, 240, 111, 41)) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.pushButton_2 = QtGui.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(160, 240, 111, 41)) self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) self.lineEdit = QtGui.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(10, 210, 271, 20)) self.lineEdit.setObjectName(_fromUtf8("lineEdit")) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("Form", "CLOSE", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("Form", "ADD", None, QtGui.QApplication.UnicodeUTF8))
все это соединяется модулем: ad_list
from PyQt4 import QtGui, QtCore from main_AD_list import myADWindow if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) window = myADWindow() window.show() sys.exit(app.exec_())
и все бы ничего но данные на форме показываются через пол часа после нажатия кнопки выборки.
ПОМОГИТЕ УСКОРИТЬ РАБОТУ!
Была идея как нибудь за кешировать результаты первоначальной выборки а потом тоько проверять изменения или загружать в виджет кеш но с реализацие что то не получается предложения в этом направлении тоже приветствуются.