示例#1
0
    def doKladr(self):
        if self.dlgKladr == None:
            self.dlgKladr = Kladr(self.iface)

        self.dlgKladr.idRegion = self.comboBoxRegion.itemData(
            self.comboBoxRegion.currentIndex())
        self.dlgKladr.fillFirstComboBox()
        self.dlgKladr.exec_()
        if self.dlgKladr.kladr > '':
            self.lineEditKLADR.setText(self.dlgKladr.kladr)
            self.lineEditOKATO.setText(self.dlgKladr.okato)
            self.lineEditIndeks.setText(self.dlgKladr.index)
            self.comboBoxTRayon.setFocus()
示例#2
0
    def doKladr(self):
        if self.dlgKladr == None:
            self.dlgKladr = Kladr(self.iface)

        self.dlgKladr.idRegion = self.comboBoxRegion.itemData(self.comboBoxRegion.currentIndex())
        self.dlgKladr.fillFirstComboBox()
        self.dlgKladr.exec_()
        if self.dlgKladr.kladr > '':
            self.lineEditKLADR.setText(self.dlgKladr.kladr)
            self.lineEditOKATO.setText(self.dlgKladr.okato)
            self.lineEditIndeks.setText(self.dlgKladr.index)
            self.comboBoxTRayon.setFocus()
示例#3
0
class address(QDialog,  Ui_Address):
    def __init__(self, iface):
        QDialog.__init__(self, iface.mainWindow())
        self.iface = iface
        self.canvas = self.iface.mapCanvas()
        self.setupUi(self)

        self.dlgKladr = None
        self.dlgDocument = None

        self.layer = get_vector_layer_by_name(gln['pb_adres'])
        self.layerlink = get_vector_layer_by_name(gln['pb_uchastok_adres'])

        self.id = None
        self.id_uchastok = None
        self.action = None
        self.okato = ''
        self.kladr = ''
        self.indeks = ''
        self.id_region = ''
        self.idt_rayon = ''
        self.id_rayon = 0
        self.idt_mo = ''
        self.id_mo = 0
        self.idt_gorod_rayon = ''
        self.id_gorod_rayon = 0
        self.idt_selsovet = ''
        self.id_selsovet = 0
        self.idt_naselen_punkt = ''
        self.id_naselen_punkt = 0
        self.idt_ulica = ''
        self.id_ulica = 0
        self.idt_dom = ''
        self.id_dom = 0
        self.idt_korpus = ''
        self.id_korpus = 0
        self.idt_stroenie = ''
        self.id_stroenie = 0
        self.idt_kvartira = ''
        self.id_kvartira = 0
        self.inoe = ''
        self.opisanie = ''
        self.guid_document = ''

        self.connect(self.pushButtonRefresh, SIGNAL("clicked()"), self.refresh)        
        self.connect(self.pushButtonCreateDesc, SIGNAL("clicked()"), self.createDescription)        
        self.connect(self.pushButtonOk, SIGNAL("clicked()"), self.save)        
        self.connect(self.pushButtonClose, SIGNAL("clicked()"), self.close)        
        self.connect(self.pushButtonKladr, SIGNAL("clicked()"), self.doKladr)        
        self.connect(self.pushButtonDocument, SIGNAL("clicked()"), self.doDocument)        
        self.connect(self.comboBoxRegion, SIGNAL("currentIndexChanged(int)"), self.regionSelect)        

    def dlgFill(self):
        tmp = []
        tmp.append([self.lineEditOKATO, self.okato])
        tmp.append([self.lineEditKLADR, self.kladr])
        tmp.append([self.lineEditIndeks, self.indeks])
        tmp.append([self.textEditInoe, self.inoe])
        tmp.append([self.textEditOpisanie, self.opisanie])
        for i in tmp:
            i[0].setText(reNull(i[1], ''))
        del tmp
        
        fillComboBox(self.comboBoxRegion, 'cl_region', 'id', 'znachenie', self.id_region)

        tmp = []
        tmp.append([self.comboBoxTRayon, 'cl_rayon', 'id', 'znachenie', self.idt_rayon])
        tmp.append([self.comboBoxTMo, 'cl_ato_rayonogo_podchineniya', 'id', 'znachenie', self.idt_mo])
        tmp.append([self.comboBoxTGorodRayon, 'cl_gorodskoy_rayon', 'id', 'znachenie', self.idt_gorod_rayon])
        tmp.append([self.comboBoxTSelsovet, 'cl_selsovet', 'id', 'znachenie', self.idt_selsovet])
        tmp.append([self.comboBoxTNaselenPunkt, 'cl_naselen_punkt', 'id', 'znachenie', self.idt_naselen_punkt])
        tmp.append([self.comboBoxTUlica, 'cl_ulica', 'id', 'znachenie', self.idt_ulica])
        tmp.append([self.comboBoxTDom, 'cl_dom', 'id', 'znachenie', self.idt_dom])
        tmp.append([self.comboBoxTKorpus, 'cl_korpus', 'id', 'znachenie', self.idt_korpus])
        tmp.append([self.comboBoxTStroenie, 'cl_stroenie', 'id', 'znachenie', self.idt_stroenie])
        tmp.append([self.comboBoxTKvartira, 'cl_kvartira', 'id', 'znachenie', self.idt_kvartira])
        for i in tmp:
            fillComboBox(i[0], i[1], i[2], i[3], i[4])
        del tmp

        tmp = []
        tmp.append([self.comboBoxRayon, 'pb_rayon', 'id', 'naimenovanie', self.id_rayon])
        tmp.append([self.comboBoxMo, 'pb_mo', 'id', 'naimenovanie', self.id_mo])
        tmp.append([self.comboBoxGorodRayon, 'pb_gorodskoy_rayon', 'id', 'naimenovanie', self.id_gorod_rayon])
        tmp.append([self.comboBoxSelsovet, 'pb_selsovet', 'id', 'naimenovanie', self.id_selsovet])
        tmp.append([self.comboBoxNaselenPunkt, 'pb_naselen_punkt', 'id', 'naimenovanie', self.id_naselen_punkt])
        tmp.append([self.comboBoxUlica, 'pb_ulica', 'id', 'naimenovanie', self.id_ulica])
        tmp.append([self.comboBoxDom, 'pb_dom', 'id', 'naimenovanie', self.id_dom])
        tmp.append([self.comboBoxKorpus, 'pb_korpus', 'id', 'naimenovanie', self.id_korpus])
        tmp.append([self.comboBoxStroenie, 'pb_stroenie', 'id', 'naimenovanie', self.id_stroenie])
        tmp.append([self.comboBoxKvartira, 'pb_kvartira', 'id', 'naimenovanie', self.id_kvartira])
        for i in tmp:
            fillComboBox(i[0], i[1], i[2], i[3], i[4])
        del tmp

        self.comboBoxDocument.clear()
        self.comboBoxDocument.addItem(u' ', None)

        if self.guid_document > ' ':
            attributesDocument = attributesByKeys('pb_document', 'guid', [str(self.guid_document)], attributesNamesDocument)
            if len(attributesDocument) == 1:
                attributesDocument = attributesDocument[0]
                title = attributesDocument['number_doc'] + ' ' + attributesDocument['date'].toString('yyyy-MM-dd') + ' ' + attributesDocument['name'][:33]
                self.comboBoxDocument.addItem(unicode(title), str(self.guid_document))
                self.comboBoxDocument.setCurrentIndex(1)

    def checkClassValue(self, cBox, cBoxT, ln):
        '''
        Проверка наличия в классификаторе выбранного или введенного значения cBox с учетом значения cBoxT
        Пример - может быть и проспект Ленина и улица.
        checkClassValue():string
        ln: string
        cBox, cBoxT:QComboBox()
        '''
        isCreateRecord = False
        p = get_vector_layer_by_name(gln[ln]).dataProvider()
        
        if (cBox.itemData(cBox.currentIndex())) and (cBoxT.itemData(cBoxT.currentIndex()) > ' '):
            typeValue = unicode(cBoxT.itemData(cBoxT.currentIndex()))
            textValue = unicode(cBox.currentText()).strip()

            typeName = unicode(p.fields()[1].name())
            textName = unicode(p.fields()[2].name())

            searchCondition = '\"' + typeName + '\" = \'' + typeValue + '\' AND \"' + textName + '\" = \'' + textValue + '\''
            attributes = attributesBySearchCondition(ln, searchCondition, ['id'])

            if len(attributes) == 1:
                id = int(attributes[0]['id'])
                return id

            else:
                isCreateRecord = True
        else:
            isCreateRecord = True

        if isCreateRecord:
            typeValue = unicode(cBoxT.itemData(cBoxT.currentIndex()))
            textValue = unicode(cBox.currentText()).strip()

            typeName = unicode(p.fields()[1].name())
            textName = unicode(p.fields()[2].name())

            listNames  = [typeName, textName]
            listValues = [typeValue, textValue]
            if insertFeatures(ln, listNames, [listValues]):
                searchCondition = '\"' + typeName + '\" = \'' + typeValue + '\' AND \"' + textName + '\" = \'' + textValue + '\''
                attributes = attributesBySearchCondition(ln, searchCondition, ['id'])

                if len(attributes) == 1:
                    id = int(attributes[0]['id'])
                    return id

                else:
                    return 0
            else:
                return 0
                
    def refresh(self):
        reply = QMessageBox.question(self, u'Потверждение обновления атрибутов', 
                                           u'Действительно желаете обновить значения атрибутов данными из базы?', 
                                           okay|cancel, defaultButton=cancel)
        if reply == okay: self.dlgFill()

    def save(self):
        listNames  = ['okato', 'kladr', 'id_region', 'opisanie']
        listValues = []
        listValues.append(self.lineEditOKATO.text())
        listValues.append(self.lineEditKLADR.text())
        listValues.append(self.comboBoxRegion.itemData(self.comboBoxRegion.currentIndex()))
        listValues.append(self.textEditOpisanie.toPlainText())
    
        listNames.append('indeks')
        listValues.append(self.lineEditIndeks.text())
        listNames.append('inoe')
        listValues.append(self.textEditInoe.toPlainText())

        if self.comboBoxDocument.currentIndex() > 0:
            listNames.append('guid_document')
            listValues.append(self.comboBoxDocument.itemData(self.comboBoxDocument.currentIndex()))

        self.id_rayon = self.checkClassValue(self.comboBoxRayon, 
                                             self.comboBoxTRayon, 
                                             'pb_rayon')
        if self.id_rayon > 0: 
            listNames.append('id_rayon')
            listValues.append(self.id_rayon)

        self.id_mo = self.checkClassValue(self.comboBoxMo, 
                                          self.comboBoxTMo, 
                                          'pb_mo')
        if self.id_mo > 0: 
            listNames.append('id_mo')
            listValues.append(self.id_mo)

        self.id_gorod_rayon = self.checkClassValue(self.comboBoxGorodRayon, 
                                                   self.comboBoxTGorodRayon, 
                                                   'pb_gorodskoy_rayon')
        if self.id_gorod_rayon > 0: 
            listNames.append('id_gorod_rayon')
            listValues.append(self.id_gorod_rayon)

        self.id_selsovet = self.checkClassValue(self.comboBoxSelsovet, 
                                                self.comboBoxTSelsovet, 
                                                'pb_selsovet')
        if self.id_selsovet > 0: 
            listNames.append('id_selsovet')
            listValues.append(self.id_selsovet)

        self.id_naselen_punkt = self.checkClassValue(self.comboBoxNaselenPunkt, 
                                                     self.comboBoxTNaselenPunkt, 
                                                     'pb_naselen_punkt')
        if self.id_naselen_punkt > 0: 
            listNames.append('id_naselen_punkt')
            listValues.append(self.id_naselen_punkt)

        self.id_ulica = self.checkClassValue(self.comboBoxUlica, 
                                             self.comboBoxTUlica, 
                                             'pb_ulica')
        if self.id_ulica > 0: 
            listNames.append('id_ulica')
            listValues.append(self.id_ulica)

        self.id_dom = self.checkClassValue(self.comboBoxDom, 
                                           self.comboBoxTDom, 
                                           'pb_dom')
        if self.id_dom > 0: 
            listNames.append('id_dom')
            listValues.append(self.id_dom)

        self.id_korpus = self.checkClassValue(self.comboBoxKorpus, 
                                              self.comboBoxTKorpus, 
                                              'pb_korpus')
        if self.id_korpus > 0: 
            listNames.append('id_korpus')
            listValues.append(self.id_korpus)

        self.id_stroenie = self.checkClassValue(self.comboBoxStroenie, 
                                                self.comboBoxTStroenie, 
                                                'pb_stroenie')
        if self.id_stroenie > 0: 
            listNames.append('id_stroenie')
            listValues.append(self.id_stroenie)

        self.id_kvartira = self.checkClassValue(self.comboBoxKvartira, 
                                                self.comboBoxTKvartira, 
                                                'pb_kvartira')
        if self.id_kvartira > 0: 
            listNames.append('id_kvartira')
            listValues.append(self.id_kvartira)

        if self.action == 'add':
            listNames.append('komanda_serveru')
            listValues.append('id_uch=' + str(self.id_uchastok))

            insertFeatures('pb_adres', listNames, [listValues])

        elif self.action == 'edit':
            self.layer.setSubsetString('\"id\"=' + str(self.id))
            updateFeature('pb_adres', self.id, listNames, listValues)

        else:
            QMessageBox.warning(self.iface.mainWindow(), u'Ошибка вызова диалога редактирования адреса', 
                                                         u'Не определена цель вызова диалога')
        self.done(1)

    def createDescription(self):
        if self.textEditOpisanie.toPlainText() < ' ':
            opisanie = reNull(self.comboBoxRegion.currentText(), '')

            listComBox = [[self.comboBoxTRayon,         self.comboBoxRayon],
                          [self.comboBoxTMo,            self.comboBoxMo],
                          [self.comboBoxTGorodRayon,    self.comboBoxGorodRayon],
                          [self.comboBoxTSelsovet,      self.comboBoxSelsovet],
                          [self.comboBoxTNaselenPunkt,  self.comboBoxNaselenPunkt],
                          [self.comboBoxTUlica,         self.comboBoxUlica],
                          [self.comboBoxTDom,           self.comboBoxDom],
                          [self.comboBoxTKorpus,        self.comboBoxKorpus],
                          [self.comboBoxTStroenie,      self.comboBoxStroenie],
                          [self.comboBoxTKvartira,      self.comboBoxKvartira]]

            for every in listComBox:
                row = reNull(every[0].itemData(every[0].currentIndex()), '') 
                row = row + '. ' + reNull(every[1].currentText(), '')
                if row > '. ': 
                    if opisanie > '': 
                        opisanie = opisanie +', '+ row
                    else: 
                        opisanie = row

            if opisanie > '. ': 
                self.textEditOpisanie.setText(opisanie)

    def regionSelect(self, itemIndex):
        self.pushButtonKladr.setEnabled(False)
        if itemIndex >= 0:
            if self.comboBoxRegion.itemData(itemIndex) > '00':
                self.pushButtonKladr.setEnabled(True)
    
    
    def doKladr(self):
        if self.dlgKladr == None:
            self.dlgKladr = Kladr(self.iface)

        self.dlgKladr.idRegion = self.comboBoxRegion.itemData(self.comboBoxRegion.currentIndex())
        self.dlgKladr.fillFirstComboBox()
        self.dlgKladr.exec_()
        if self.dlgKladr.kladr > '':
            self.lineEditKLADR.setText(self.dlgKladr.kladr)
            self.lineEditOKATO.setText(self.dlgKladr.okato)
            self.lineEditIndeks.setText(self.dlgKladr.index)
            self.comboBoxTRayon.setFocus()
    
    def doDocument(self):
        if self.dlgDocument == None:
            self.dlgDocument = Document(self.iface)
            self.dlgDocument.fillTree()
        
        self.dlgDocument.selectedGuid = None

        self.dlgDocument.exec_()
        if self.dlgDocument.selectedGuid != None:

            self.comboBoxDocument.clear()
            self.comboBoxDocument.addItem(u' ', None)

            if self.dlgDocument.selectedGuid > ' ':
                attributesDocument = attributesByKeys('pb_document', 
                                                      'guid', 
                                                      [str(self.dlgDocument.selectedGuid)], 
                                                      attributesNamesDocument)
                if len(attributesDocument) == 1:
                    attributesDocument = attributesDocument[0]
                    title = attributesDocument['number_doc'] + ' ' + attributesDocument['date'].toString('yyyy-MM-dd') + ' ' + attributesDocument['name'][:33]
                    self.comboBoxDocument.addItem(unicode(title), str(self.dlgDocument.selectedGuid))
                    self.comboBoxDocument.setCurrentIndex(1)
    
    def close(self):
        self.done(0)
示例#4
0
class address(QDialog, Ui_Address):
    def __init__(self, iface):
        QDialog.__init__(self, iface.mainWindow())
        self.iface = iface
        self.canvas = self.iface.mapCanvas()
        self.setupUi(self)

        self.dlgKladr = None
        self.dlgDocument = None

        self.layer = get_vector_layer_by_name(gln['pb_adres'])
        self.layerlink = get_vector_layer_by_name(gln['pb_uchastok_adres'])

        self.id = None
        self.id_uchastok = None
        self.action = None
        self.okato = ''
        self.kladr = ''
        self.indeks = ''
        self.id_region = ''
        self.idt_rayon = ''
        self.id_rayon = 0
        self.idt_mo = ''
        self.id_mo = 0
        self.idt_gorod_rayon = ''
        self.id_gorod_rayon = 0
        self.idt_selsovet = ''
        self.id_selsovet = 0
        self.idt_naselen_punkt = ''
        self.id_naselen_punkt = 0
        self.idt_ulica = ''
        self.id_ulica = 0
        self.idt_dom = ''
        self.id_dom = 0
        self.idt_korpus = ''
        self.id_korpus = 0
        self.idt_stroenie = ''
        self.id_stroenie = 0
        self.idt_kvartira = ''
        self.id_kvartira = 0
        self.inoe = ''
        self.opisanie = ''
        self.guid_document = ''

        self.connect(self.pushButtonRefresh, SIGNAL("clicked()"), self.refresh)
        self.connect(self.pushButtonCreateDesc, SIGNAL("clicked()"),
                     self.createDescription)
        self.connect(self.pushButtonOk, SIGNAL("clicked()"), self.save)
        self.connect(self.pushButtonClose, SIGNAL("clicked()"), self.close)
        self.connect(self.pushButtonKladr, SIGNAL("clicked()"), self.doKladr)
        self.connect(self.pushButtonDocument, SIGNAL("clicked()"),
                     self.doDocument)
        self.connect(self.comboBoxRegion, SIGNAL("currentIndexChanged(int)"),
                     self.regionSelect)

    def dlgFill(self):
        tmp = []
        tmp.append([self.lineEditOKATO, self.okato])
        tmp.append([self.lineEditKLADR, self.kladr])
        tmp.append([self.lineEditIndeks, self.indeks])
        tmp.append([self.textEditInoe, self.inoe])
        tmp.append([self.textEditOpisanie, self.opisanie])
        for i in tmp:
            i[0].setText(reNull(i[1], ''))
        del tmp

        fillComboBox(self.comboBoxRegion, 'cl_region', 'id', 'znachenie',
                     self.id_region)

        tmp = []
        tmp.append([
            self.comboBoxTRayon, 'cl_rayon', 'id', 'znachenie', self.idt_rayon
        ])
        tmp.append([
            self.comboBoxTMo, 'cl_ato_rayonogo_podchineniya', 'id',
            'znachenie', self.idt_mo
        ])
        tmp.append([
            self.comboBoxTGorodRayon, 'cl_gorodskoy_rayon', 'id', 'znachenie',
            self.idt_gorod_rayon
        ])
        tmp.append([
            self.comboBoxTSelsovet, 'cl_selsovet', 'id', 'znachenie',
            self.idt_selsovet
        ])
        tmp.append([
            self.comboBoxTNaselenPunkt, 'cl_naselen_punkt', 'id', 'znachenie',
            self.idt_naselen_punkt
        ])
        tmp.append([
            self.comboBoxTUlica, 'cl_ulica', 'id', 'znachenie', self.idt_ulica
        ])
        tmp.append(
            [self.comboBoxTDom, 'cl_dom', 'id', 'znachenie', self.idt_dom])
        tmp.append([
            self.comboBoxTKorpus, 'cl_korpus', 'id', 'znachenie',
            self.idt_korpus
        ])
        tmp.append([
            self.comboBoxTStroenie, 'cl_stroenie', 'id', 'znachenie',
            self.idt_stroenie
        ])
        tmp.append([
            self.comboBoxTKvartira, 'cl_kvartira', 'id', 'znachenie',
            self.idt_kvartira
        ])
        for i in tmp:
            fillComboBox(i[0], i[1], i[2], i[3], i[4])
        del tmp

        tmp = []
        tmp.append([
            self.comboBoxRayon, 'pb_rayon', 'id', 'naimenovanie', self.id_rayon
        ])
        tmp.append(
            [self.comboBoxMo, 'pb_mo', 'id', 'naimenovanie', self.id_mo])
        tmp.append([
            self.comboBoxGorodRayon, 'pb_gorodskoy_rayon', 'id',
            'naimenovanie', self.id_gorod_rayon
        ])
        tmp.append([
            self.comboBoxSelsovet, 'pb_selsovet', 'id', 'naimenovanie',
            self.id_selsovet
        ])
        tmp.append([
            self.comboBoxNaselenPunkt, 'pb_naselen_punkt', 'id',
            'naimenovanie', self.id_naselen_punkt
        ])
        tmp.append([
            self.comboBoxUlica, 'pb_ulica', 'id', 'naimenovanie', self.id_ulica
        ])
        tmp.append(
            [self.comboBoxDom, 'pb_dom', 'id', 'naimenovanie', self.id_dom])
        tmp.append([
            self.comboBoxKorpus, 'pb_korpus', 'id', 'naimenovanie',
            self.id_korpus
        ])
        tmp.append([
            self.comboBoxStroenie, 'pb_stroenie', 'id', 'naimenovanie',
            self.id_stroenie
        ])
        tmp.append([
            self.comboBoxKvartira, 'pb_kvartira', 'id', 'naimenovanie',
            self.id_kvartira
        ])
        for i in tmp:
            fillComboBox(i[0], i[1], i[2], i[3], i[4])
        del tmp

        self.comboBoxDocument.clear()
        self.comboBoxDocument.addItem(u' ', None)

        if self.guid_document > ' ':
            attributesDocument = attributesByKeys('pb_document', 'guid',
                                                  [str(self.guid_document)],
                                                  attributesNamesDocument)
            if len(attributesDocument) == 1:
                attributesDocument = attributesDocument[0]
                title = attributesDocument[
                    'number_doc'] + ' ' + attributesDocument['date'].toString(
                        'yyyy-MM-dd') + ' ' + attributesDocument['name'][:33]
                self.comboBoxDocument.addItem(unicode(title),
                                              str(self.guid_document))
                self.comboBoxDocument.setCurrentIndex(1)

    def checkClassValue(self, cBox, cBoxT, ln):
        '''
        Проверка наличия в классификаторе выбранного или введенного значения cBox с учетом значения cBoxT
        Пример - может быть и проспект Ленина и улица.
        checkClassValue():string
        ln: string
        cBox, cBoxT:QComboBox()
        '''
        isCreateRecord = False
        p = get_vector_layer_by_name(gln[ln]).dataProvider()

        if (cBox.itemData(cBox.currentIndex())) and (cBoxT.itemData(
                cBoxT.currentIndex()) > ' '):
            typeValue = unicode(cBoxT.itemData(cBoxT.currentIndex()))
            textValue = unicode(cBox.currentText()).strip()

            typeName = unicode(p.fields()[1].name())
            textName = unicode(p.fields()[2].name())

            searchCondition = '\"' + typeName + '\" = \'' + typeValue + '\' AND \"' + textName + '\" = \'' + textValue + '\''
            attributes = attributesBySearchCondition(ln, searchCondition,
                                                     ['id'])

            if len(attributes) == 1:
                id = int(attributes[0]['id'])
                return id

            else:
                isCreateRecord = True
        else:
            isCreateRecord = True

        if isCreateRecord:
            typeValue = unicode(cBoxT.itemData(cBoxT.currentIndex()))
            textValue = unicode(cBox.currentText()).strip()

            typeName = unicode(p.fields()[1].name())
            textName = unicode(p.fields()[2].name())

            listNames = [typeName, textName]
            listValues = [typeValue, textValue]
            if insertFeatures(ln, listNames, [listValues]):
                searchCondition = '\"' + typeName + '\" = \'' + typeValue + '\' AND \"' + textName + '\" = \'' + textValue + '\''
                attributes = attributesBySearchCondition(
                    ln, searchCondition, ['id'])

                if len(attributes) == 1:
                    id = int(attributes[0]['id'])
                    return id

                else:
                    return 0
            else:
                return 0

    def refresh(self):
        reply = QMessageBox.question(
            self,
            u'Потверждение обновления атрибутов',
            u'Действительно желаете обновить значения атрибутов данными из базы?',
            okay | cancel,
            defaultButton=cancel)
        if reply == okay: self.dlgFill()

    def save(self):
        listNames = ['okato', 'kladr', 'id_region', 'opisanie']
        listValues = []
        listValues.append(self.lineEditOKATO.text())
        listValues.append(self.lineEditKLADR.text())
        listValues.append(
            self.comboBoxRegion.itemData(self.comboBoxRegion.currentIndex()))
        listValues.append(self.textEditOpisanie.toPlainText())

        listNames.append('indeks')
        listValues.append(self.lineEditIndeks.text())
        listNames.append('inoe')
        listValues.append(self.textEditInoe.toPlainText())

        if self.comboBoxDocument.currentIndex() > 0:
            listNames.append('guid_document')
            listValues.append(
                self.comboBoxDocument.itemData(
                    self.comboBoxDocument.currentIndex()))

        self.id_rayon = self.checkClassValue(self.comboBoxRayon,
                                             self.comboBoxTRayon, 'pb_rayon')
        if self.id_rayon > 0:
            listNames.append('id_rayon')
            listValues.append(self.id_rayon)

        self.id_mo = self.checkClassValue(self.comboBoxMo, self.comboBoxTMo,
                                          'pb_mo')
        if self.id_mo > 0:
            listNames.append('id_mo')
            listValues.append(self.id_mo)

        self.id_gorod_rayon = self.checkClassValue(self.comboBoxGorodRayon,
                                                   self.comboBoxTGorodRayon,
                                                   'pb_gorodskoy_rayon')
        if self.id_gorod_rayon > 0:
            listNames.append('id_gorod_rayon')
            listValues.append(self.id_gorod_rayon)

        self.id_selsovet = self.checkClassValue(self.comboBoxSelsovet,
                                                self.comboBoxTSelsovet,
                                                'pb_selsovet')
        if self.id_selsovet > 0:
            listNames.append('id_selsovet')
            listValues.append(self.id_selsovet)

        self.id_naselen_punkt = self.checkClassValue(
            self.comboBoxNaselenPunkt, self.comboBoxTNaselenPunkt,
            'pb_naselen_punkt')
        if self.id_naselen_punkt > 0:
            listNames.append('id_naselen_punkt')
            listValues.append(self.id_naselen_punkt)

        self.id_ulica = self.checkClassValue(self.comboBoxUlica,
                                             self.comboBoxTUlica, 'pb_ulica')
        if self.id_ulica > 0:
            listNames.append('id_ulica')
            listValues.append(self.id_ulica)

        self.id_dom = self.checkClassValue(self.comboBoxDom, self.comboBoxTDom,
                                           'pb_dom')
        if self.id_dom > 0:
            listNames.append('id_dom')
            listValues.append(self.id_dom)

        self.id_korpus = self.checkClassValue(self.comboBoxKorpus,
                                              self.comboBoxTKorpus,
                                              'pb_korpus')
        if self.id_korpus > 0:
            listNames.append('id_korpus')
            listValues.append(self.id_korpus)

        self.id_stroenie = self.checkClassValue(self.comboBoxStroenie,
                                                self.comboBoxTStroenie,
                                                'pb_stroenie')
        if self.id_stroenie > 0:
            listNames.append('id_stroenie')
            listValues.append(self.id_stroenie)

        self.id_kvartira = self.checkClassValue(self.comboBoxKvartira,
                                                self.comboBoxTKvartira,
                                                'pb_kvartira')
        if self.id_kvartira > 0:
            listNames.append('id_kvartira')
            listValues.append(self.id_kvartira)

        if self.action == 'add':
            listNames.append('komanda_serveru')
            listValues.append('id_uch=' + str(self.id_uchastok))

            insertFeatures('pb_adres', listNames, [listValues])

        elif self.action == 'edit':
            self.layer.setSubsetString('\"id\"=' + str(self.id))
            updateFeature('pb_adres', self.id, listNames, listValues)

        else:
            QMessageBox.warning(
                self.iface.mainWindow(),
                u'Ошибка вызова диалога редактирования адреса',
                u'Не определена цель вызова диалога')
        self.done(1)

    def createDescription(self):
        if self.textEditOpisanie.toPlainText() < ' ':
            opisanie = reNull(self.comboBoxRegion.currentText(), '')

            listComBox = [[self.comboBoxTRayon, self.comboBoxRayon],
                          [self.comboBoxTMo, self.comboBoxMo],
                          [self.comboBoxTGorodRayon, self.comboBoxGorodRayon],
                          [self.comboBoxTSelsovet, self.comboBoxSelsovet],
                          [
                              self.comboBoxTNaselenPunkt,
                              self.comboBoxNaselenPunkt
                          ], [self.comboBoxTUlica, self.comboBoxUlica],
                          [self.comboBoxTDom, self.comboBoxDom],
                          [self.comboBoxTKorpus, self.comboBoxKorpus],
                          [self.comboBoxTStroenie, self.comboBoxStroenie],
                          [self.comboBoxTKvartira, self.comboBoxKvartira]]

            for every in listComBox:
                row = reNull(every[0].itemData(every[0].currentIndex()), '')
                row = row + '. ' + reNull(every[1].currentText(), '')
                if row > '. ':
                    if opisanie > '':
                        opisanie = opisanie + ', ' + row
                    else:
                        opisanie = row

            if opisanie > '. ':
                self.textEditOpisanie.setText(opisanie)

    def regionSelect(self, itemIndex):
        self.pushButtonKladr.setEnabled(False)
        if itemIndex >= 0:
            if self.comboBoxRegion.itemData(itemIndex) > '00':
                self.pushButtonKladr.setEnabled(True)

    def doKladr(self):
        if self.dlgKladr == None:
            self.dlgKladr = Kladr(self.iface)

        self.dlgKladr.idRegion = self.comboBoxRegion.itemData(
            self.comboBoxRegion.currentIndex())
        self.dlgKladr.fillFirstComboBox()
        self.dlgKladr.exec_()
        if self.dlgKladr.kladr > '':
            self.lineEditKLADR.setText(self.dlgKladr.kladr)
            self.lineEditOKATO.setText(self.dlgKladr.okato)
            self.lineEditIndeks.setText(self.dlgKladr.index)
            self.comboBoxTRayon.setFocus()

    def doDocument(self):
        if self.dlgDocument == None:
            self.dlgDocument = Document(self.iface)
            self.dlgDocument.fillTree()

        self.dlgDocument.selectedGuid = None

        self.dlgDocument.exec_()
        if self.dlgDocument.selectedGuid != None:

            self.comboBoxDocument.clear()
            self.comboBoxDocument.addItem(u' ', None)

            if self.dlgDocument.selectedGuid > ' ':
                attributesDocument = attributesByKeys(
                    'pb_document', 'guid',
                    [str(self.dlgDocument.selectedGuid)],
                    attributesNamesDocument)
                if len(attributesDocument) == 1:
                    attributesDocument = attributesDocument[0]
                    title = attributesDocument[
                        'number_doc'] + ' ' + attributesDocument[
                            'date'].toString(
                                'yyyy-MM-dd'
                            ) + ' ' + attributesDocument['name'][:33]
                    self.comboBoxDocument.addItem(
                        unicode(title), str(self.dlgDocument.selectedGuid))
                    self.comboBoxDocument.setCurrentIndex(1)

    def close(self):
        self.done(0)