Пример #1
0
    def on_pushCsomagtorles_clicked(self):
        ppont_deleted = 0

        if not self.keszito is None:

            qDeletePponts = QtSql.QSqlQuery()
            siker = qDeletePponts.exec_(
                """DELETE FROM ppont WHERE csomag_azon = 
                (SELECT csomag_azon FROM csomag WHERE csomag_azon = %s AND allapot = False AND keszito = '%s') RETURNING ppont_azon;"""
                % (str(self.selCsomagAzon), self.keszito))
            if siker:
                if qDeletePponts.size() > 0:
                    ppont_deleted = qDeletePponts.size()
                else:
                    QtWidgets.QMessageBox.warning(
                        None, u"Csomagtörlés",
                        u"Nem törölhető a csomaghoz kapcsolódó P-pont.")
                    return
            else:
                if qDeletePponts.lastError().type() != 0:
                    QtWidgets.QMessageBox.warning(
                        None, "Hiba:", "Hiba típus: %s" %
                        str(qDeletePponts.lastError().text()))
                    return

            qDeleteCsomag = QtSql.QSqlQuery()
            siker = qDeleteCsomag.exec_(
                """DELETE FROM csomag WHERE csomag_azon = %s AND allapot = False  AND keszito = '%s' RETURNING csomag_nev;"""
                % (str(self.selCsomagAzon), self.keszito))
            if siker:
                if qDeleteCsomag.size() == 1:
                    qDeleteCsomag.next()
                    QtWidgets.QMessageBox.warning(
                        None, u"Csomagtörlés",
                        u"Sikeres csomagtörlés: %s. Törölt pontok száma: %s" %
                        (qDeleteCsomag.value(0), str(ppont_deleted)))
                    self.selCsomagNev = None
                    self.selCsomagAzon = None
                    self.lineSelCsomag.setText('')
                    self.checkTorles.setChecked(False)
                    self.pushFileGeneralas.setEnabled(False)
                    ppont_deleted = 0
                    self.refresh_layers()
                    return
                else:
                    QtWidgets.QMessageBox.warning(
                        None, u"Csomagtörlés",
                        u"Nem történt csomagtörlés. Törölt pontok száma: %s" %
                        str(ppont_deleted))
                    return
            else:
                if qDeleteCsomag.lastError().type() != 0:
                    QtWidgets.QMessageBox.warning(
                        None, u"Hiba:", u"Hiba típus: %s" %
                        str(qDeleteCsomag.lastError().text()))
                    return
        else:
            QtWidgets.QMessageBox.warning(
                None, u"Csomagtörlés", u"Nincs bejelentkezett Csomagkészítő!")
Пример #2
0
    def on_pushPontszures_clicked(self):
        self.mintahalo = self.selectedMintavetel()
        self.mintater = self.comboMintater.currentText()
        self.eLayer.setSubsetString('"projminter"=\'%s\' and "net%s"=True' %
                                    (self.mintater, str(self.mintahalo)))
        self.newExtent()

        self.checkTeszt.setChecked(False)
        self.comboFelmero.clear()
        self.comboFormverzio.clear()
        self.lineTask.setText('')
        self.linePontok.setText('')

        queryFelmeroOpciok = QtSql.QSqlQuery()
        siker = queryFelmeroOpciok.exec_("""SELECT szemely FROM
            (SELECT szemely, szerep FROM szereposztas WHERE projminter = '%s' and aktiv is True) foo1 INNER JOIN
            (SELECT szerep FROM szerep WHERE csomagkapo is True) foo2
            ON foo1.szerep = foo2.szerep;""" % self.mintater)
        if siker:
            if queryFelmeroOpciok.size() > 0:
                while queryFelmeroOpciok.next():
                    self.comboFelmero.addItem(queryFelmeroOpciok.value(0))
            else:
                QtWidgets.QMessageBox.warning(
                    None, u"Csomagkiosztás",
                    u"Nincs felmérő rendelve a mintaterülethez.")
                return
        else:
            if queryFelmeroOpciok.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, "Hiba:", "Hiba típus: %s" %
                    str(queryFelmeroOpciok.lastError().text()))
                return

        queryFormOpciok = QtSql.QSqlQuery()
        siker = queryFormOpciok.exec_("""SELECT formverzio FROM formosztas
             WHERE projminter = '%s' and hasznalat is True;""" % self.mintater)
        if siker:
            if queryFormOpciok.size() > 0:
                while queryFormOpciok.next():
                    self.comboFormverzio.addItem(queryFormOpciok.value(0))
            else:
                QtWidgets.QMessageBox.warning(
                    None, u"Csomagkiosztás",
                    u"Nincs form rendelve a mintaterülethez.")
                return
        else:
            if queryFormOpciok.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, "Hiba:",
                    "Hiba típus: %s" % str(queryFormOpciok.lastError().text()))
                return

        self.frameCreate.setEnabled(True)
Пример #3
0
 def selectEpont(self, epontazon, mintaterulet):
     queryEpontData = QtSql.QSqlQuery()
     siker = queryEpontData.exec_(
         """SELECT bpont_azon,sor,oszlop,lon_wgs,lat_wgs FROM epont WHERE epont_azon in (%s) and projminter = '%s';"""
         % (str(epontazon), mintaterulet))
     if siker:
         if queryEpontData.size() > 0:
             while queryEpontData.next():
                 return [
                     queryEpontData.value(0),
                     queryEpontData.value(1),
                     queryEpontData.value(2),
                     queryEpontData.value(3),
                     queryEpontData.value(4)
                 ]
         else:
             QtWidgets.QMessageBox.warning(
                 None, u"Csomagkiosztás",
                 u"Az e-pont lekérdezés sikertelen.")
             return
     else:
         if queryEpontData.lastError().type() != 0:
             QtWidgets.QMessageBox.warning(
                 None, "Hiba:",
                 "Hiba típus: %s" % str(queryEpontData.lastError().text()))
             return
Пример #4
0
 def createCsomag(self, mintaterkod, mintaterulet, felmero, csomgeom,
                  pontszam, sor, oszlop, keszito, teszt, ponttavolsag,
                  formverzio, taskstr):
     queryCsomag = QtSql.QSqlQuery()
     siker = queryCsomag.exec_(
         """INSERT INTO csomag (mintater,projminter,felmero,geom,cs_pontszam,sorok,oszlopok,keszito,letrehozas,hatarido,teszt,halo,formverzio,task) 
 		VALUES ('%s','%s','%s',ST_Multi(ST_GeomFromText('%s',23700)),%s,%s,%s,'%s',CURRENT_TIMESTAMP(0),CURRENT_TIMESTAMP(0)+'2 month',%s,%s,'%s','%s') RETURNING csomag_azon, csomag_nev;"""
         % (mintaterkod, mintaterulet, felmero, csomgeom, str(pontszam),
            str(sor), str(oszlop), keszito, teszt, str(ponttavolsag),
            formverzio, taskstr))
     if siker:
         if queryCsomag.size() > 0:
             while queryCsomag.next():
                 return [queryCsomag.value(0), queryCsomag.value(1)]
         else:
             QtWidgets.QMessageBox.warning(
                 None, u"Csomagkiosztás",
                 u"A csomag készítés nem adott vissza azonosítót.")
             return
     else:
         if queryCsomag.lastError().type() != 0:
             QtWidgets.QMessageBox.warning(
                 None, "Hiba:",
                 "Hiba típus: %s" % str(queryCsomag.lastError().text()))
             return
Пример #5
0
 def createSorOszlop(self, epontlist, mintaterulet):
     querySorOszlop = QtSql.QSqlQuery()
     siker = querySorOszlop.exec_(
         """SELECT MIN(sor) smin, MAX(sor) smax, MIN(oszlop) omin, MAX(oszlop) omax 
         FROM epont WHERE epont_azon in (%s) and projminter = '%s'""" %
         (epontlist, mintaterulet))
     if siker:
         if querySorOszlop.size() > 0:
             while querySorOszlop.next():
                 return [
                     querySorOszlop.value(0),
                     querySorOszlop.value(1),
                     querySorOszlop.value(2),
                     querySorOszlop.value(3)
                 ]
         else:
             QtWidgets.QMessageBox.warning(
                 None, u"Csomagkiosztás",
                 u"A csomag nem kapott sor-oszlop értékeket.")
             return
     else:
         if querySorOszlop.lastError().type() != 0:
             QtWidgets.QMessageBox.warning(
                 None, "Hiba:",
                 "Hiba típus: %s" % str(querySorOszlop.lastError().text()))
             return
Пример #6
0
def DB_CreateConnection(self):
	
	global db
	db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
	proj = QgsProject.instance()
	db_path = QgsProject.instance().readPath("./")
	db_folder = QFileInfo(proj.fileName()).baseName()	   
	db_subfolder = os.path.normpath(db_path + "/" + db_folder +  "/DB")
	db_file = os.path.join(db_subfolder, "DB_SM.db")
	db.setDatabaseName(db_file)
	# self.dlg.DB_Project_Database.setText(db_file)
	
	db.setHostName("localhost")
	db.setPort(5432)

	#db.setUserName("root")
	db.open()
	if db.open():
		msgBox = QMessageBox()
		msgBox.setWindowIcon(QtGui.QIcon(':/QSWATMOD2/pics/sm_icon.png'))
		msgBox.setWindowTitle("Ready!")
		msgBox.setText("Connected to Database")
		msgBox.exec_()
		self.dlg.raise_() # Pop the dialog after execution
		query = QtSql.QSqlQuery(db)
		#Th Keep track of the references in the scenarios the foreign key statement is activated:
		#https://pythonschool.net/databases/referential-integrity/
		query.exec_("PRAGMA foreign_keys = ON")
		self.dlg.groupBox_SWAT.setEnabled(True)
	else:
		QMessageBox.critical(None, "Database Error",
			db.lastError().text()) 
		return False
Пример #7
0
 def DB_push_mf_userVal(self):
     db = db_functions.db_variable(self)
     query = QtSql.QSqlQuery(db)
     query.prepare(
         "UPDATE mf_inputs SET user_val = :UP1 WHERE parNames = 'ss'")
     query.bindValue(":UP1", self.lineEdit_ss_single.text())
     query.exec_()
 def create_query_obj_from_uri(self, uri):
     """
     creates an QtSql.QSqlQuery(db) instance with the database
     information stored in uri-object
     """
     db_type_identifier = self._QUERY_TYPE_DICT[self.flavor]
     db = QtSql.QSqlDatabase.addDatabase(db_type_identifier)
     db.setHostName(uri.host())
     try:
         db.setPort(int(uri.port()))
     except ValueError:
         # Non-integer port. TODO: could we use "if uri.port()"? And why
         # don't we use the .get_uri() method?
         pass
     db.setDatabaseName(uri.database())
     db.setUserName(uri.username())
     db.setPassword(uri.password())
     ok = db.open()
     if ok:
         self.query = QtSql.QSqlQuery(db)
     else:
         raise RuntimeError(
             "Failed to open database connection: {}".format(
                 db.lastError().driverText()
             )
         )
Пример #9
0
    def createCsomagGeom(self, ponttavolsag, epontlist, mintaterulet):
        halostr = ''
        if ponttavolsag > 50:
            halostr = str(ponttavolsag)

        queryGeomCreate = QtSql.QSqlQuery()
        siker = queryGeomCreate.exec_(
            """SELECT ST_AsText(ST_Multi(ST_Union(geom))) as csomgeom 
            FROM ekvad%s WHERE bpont_azon in (SELECT bpont_azon FROM epont WHERE epont_azon in (%s) 
            AND projminter = '%s');""" % (halostr, epontlist, mintaterulet))
        if siker:
            if queryGeomCreate.size() > 0:
                while queryGeomCreate.next():
                    return queryGeomCreate.value(0)
            else:
                QtWidgets.QMessageBox.warning(
                    None, u"Csomagkiosztás",
                    u"A csomag nem kapott geometriát.")
                return
        else:
            if queryGeomCreate.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, "Hiba:",
                    "Hiba típus: %s" % str(queryGeomCreate.lastError().text()))
                return
Пример #10
0
    def save_to_database(table, data):
        """Save Into database.

        :param table: Table target be inserted
        :type table: str

        :param data: Data to be inserted
        :type data: dict

        :return: id of row that is inserted
        :rtype: int
        """
        db = CadastaDatabase.open_database()
        if 'id' in data:
            # updating existing data
            row_id = data['id']
            del data['id']

            query_filter = []
            filter_string = '%(FIELD)s=%(VALUE)s'
            for key, value in data.iteritems():
                value = value
                # append it to query filter
                query_filter.append(filter_string % {
                    'FIELD': key,
                    'VALUE': value
                })
            query_data = {
                'TABLE': table,
                'SET': ','.join(query_filter),
                'ID': row_id
            }
            query_string = ('UPDATE %(TABLE)s SET %(SET)s '
                            'WHERE id=%(ID)s')
            query_string = query_string % query_data
        else:
            # inserting new data
            fields = []
            values = []
            for key, value in data.iteritems():
                fields.append(key)
                values.append(value)

            query_data = {
                'TABLE': table,
                'FIELDS': ','.join(fields),
                'VALUES': ','.join(values)
            }
            query_string = ('INSERT INTO %(TABLE)s (%(FIELDS)s) '
                            'VALUES (%(VALUES)s)')
            query_string = query_string % query_data
        query = QtSql.QSqlQuery(db)
        query.exec_(query_string)
        db.close()
        if query.numRowsAffected() < 1:
            return -1
        else:
            return query.lastInsertId()
Пример #11
0
    def on_pushFileGeneralas_clicked(self):
        if not self.keszito is None:
            general = False
            queryGenerated = QtSql.QSqlQuery()
            siker = queryGenerated.exec_(
                """SELECT allapot FROM csomag WHERE csomag_azon = %s;""" %
                (str(self.selCsomagAzon)))
            if siker:
                if queryGenerated.size() > 0:
                    while queryGenerated.next():
                        if queryGenerated.value(0):
                            dontes = QtWidgets.QMessageBox.question(
                                self, u'File Generálás',
                                u"A csomaghoz tartozó fájlokat már létrehozták. Újra kívánod generálni őket?",
                                QtWidgets.QMessageBox.Yes
                                | QtWidgets.QMessageBox.No,
                                QtWidgets.QMessageBox.No)
                            if dontes == QtWidgets.QMessageBox.Yes:
                                general = True
                            print(general)
                        else:
                            general = True
                else:
                    QtWidgets.QMessageBox.warning(None, u"File Generálás",
                                                  u"Hiányzó csomag rekord.")
                    return
            else:
                if queryGenerated.lastError().type() != 0:
                    QtWidgets.QMessageBox.warning(
                        None, u"Hiba:", u"Hiba típus: %s" %
                        str(queryGenerated.lastError().text()))
                    return

            if general:
                genfolder = str(
                    QtWidgets.QFileDialog.getExistingDirectory(
                        self, u"Válassz könyvtárt", "d:\SH",
                        QtWidgets.QFileDialog.ShowDirsOnly))
                if genfolder:
                    print(genfolder.replace('\\', '/'))
                    print(self.selCsomagAzon, genfolder)
                    generator(self.selCsomagAzon, genfolder.replace('\\', '/'),
                              self.keszito)
                else:
                    print('not yet')
                    return

        else:
            QtWidgets.QMessageBox.warning(
                None, u"File Generálás",
                u"Nincs bejelentkezett Csomagkészítő!")
            return
Пример #12
0
 def DB_resetTodefaultVal(self):
     msgBox = QMessageBox()
     msgBox.setWindowIcon(QtGui.QIcon(':/APEXMOD/pics/am_icon.png'))
     response = msgBox.question(
         self, 'Set to default?',
         "Are you sure you want to reset the current aquifer property settings to the default values?",
         QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
     if response == QMessageBox.Yes:
         db = db_functions.db_variable(self)      
         query = QtSql.QSqlQuery(db)
         query.exec_("SELECT default_val FROM mf_inputs WHERE parNames = 'ss' ")
         LK = str(query.first())
         self.lineEdit_ss_single.setText(str(query.value(0)))
         self.DB_push_mf_userVal()
Пример #13
0
    def delete_rows_from_database(table, row_ids):
        """Delete rows from database.

        :param table: Table target be inserted
        :type table: str

        :param row_ids: List id of row that will be deleted
        :type row_ids: [int]
        """
        db = CadastaDatabase.open_database()
        row_ids = ['%s' % row_id for row_id in row_ids]
        query_data = {
            'TABLE': table, 'ID': ','.join(row_ids)
        }
        query_string = 'DELETE FROM %(TABLE)s WHERE ID IN (%(ID)s)'
        query_string = query_string % query_data
        query = QtSql.QSqlQuery(db)
        query.exec_(query_string)
        if db:
            db.close()
Пример #14
0
    def checkEllenor(self):

        queryEllenor = QtSql.QSqlQuery()
        siker = queryEllenor.exec_("""SELECT projminter FROM szereposztas 
                        WHERE szerep in (SELECT szerep FROM szerep WHERE csomagoszto = True)
                        AND aktiv = True AND szemely = '%s';""" % csomadmin)
        if siker:
            if queryEllenor.size() == 0:
                return False
            elif queryEllenor.size() > 0:
                while queryEllenor.next():
                    ujMinta = [queryEllenor.value(0)]
                    self.mintateruletek.extend(ujMinta)
                return True
        else:
            if queryEllenor.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, "Hiba:",
                    "Hiba típus: %s" % str(queryEllenor.lastError().text()))
                return
Пример #15
0
    def get_from_database(table, filter_string):
        """Get rows from database.

        :param table: Table target be inserted
        :type table: str

        :param filter_string: Filter_string that will be used as filter
        :type filter_string: str

        :return: Query that is received
        :rtype: QSqlQuery
        """
        db = CadastaDatabase.open_database()
        query_string = ('SELECT * FROM %(TABLE)s ' % {'TABLE': table})
        if filter_string:
            query_string += 'WHERE %s' % filter_string
        query = QtSql.QSqlQuery(db)
        query.exec_(query_string)
        query.last()
        if db:
            db.close()
        return query
Пример #16
0
 def createPpont(self, csomazon, epontazon, bpontazon, x, psor, poszlop,
                 wgslon, wgslat, geomtext, mintaterulet):
     queryPpont = QtSql.QSqlQuery()
     siker = queryPpont.exec_(
         """INSERT INTO ppont (csomag_azon,epont_azon,bpont_azon,sorszam,sor,oszlop,wgs84_lon,wgs84_lat,geom,projminter)\
 		VALUES (%s,%s,%s,%s,%s,%s,%s,%s,ST_GeomFromText('%s',4326),'%s') RETURNING ppont_azon"""
         %
         (str(csomazon), str(epontazon), str(bpontazon), str(x), str(psor),
          str(poszlop), str(wgslon), str(wgslat), geomtext, mintaterulet))
     if siker:
         if queryPpont.size() > 0:
             while queryPpont.next():
                 return queryPpont.value(0)
         else:
             QtWidgets.QMessageBox.warning(
                 None, u"Csomagkiosztás",
                 u"A ppont készítés nem adott vissza azonosítót.")
             return
     else:
         if queryPpont.lastError().type() != 0:
             QtWidgets.QMessageBox.warning(
                 None, "Hiba:",
                 "Hiba típus: %s" % str(queryPpont.lastError().text()))
             return
Пример #17
0
def csomag_XML_elem(cs_felm, cs_azon, cs_nev, cs_pontsz, cs_gen, cs_hat,
                    cs_tom, cs_MD5, genfolder):
    """ XML minidom-document létrehozása a csomag adataival és a csomag_log rekord kezelése"""
    doc = Document()

    # csomag elem létrehozása
    csomag = doc.createElement('csomag')
    csomag.setAttribute("azonosito", '%s' % str(cs_azon))
    csomag.setAttribute("nev", '%s' % cs_nev)
    csomag.setAttribute("pontszam", '%s' % str(cs_pontsz))
    doc.appendChild(csomag)

    # a csomag gyermek elemeinek létrehozása
    generalas = doc.createElement('generalas')
    generalas_tartalom = doc.createTextNode('%s' % cs_gen)
    generalas.appendChild(generalas_tartalom)
    csomag.appendChild(generalas)

    hatarido = doc.createElement('hatarido')
    hatarido_tartalom = doc.createTextNode('%s' % cs_hat)
    hatarido.appendChild(hatarido_tartalom)
    csomag.appendChild(hatarido)

    muvelet = doc.createElement('muvelet')
    csomag.appendChild(muvelet)

    hash = doc.createElement('hash')
    csomag.appendChild(hash)

    # a művelet gyermek elemeinek létrehozása
    tomorites = doc.createElement('tomorites')
    tomorites_tartalom = doc.createTextNode('%s' % cs_tom)
    tomorites.appendChild(tomorites_tartalom)
    muvelet.appendChild(tomorites)

    # a művelet gyermek elemeinek létrehozása
    md5szerver = doc.createElement('MD5_szerver')
    md5szerver_tartalom = doc.createTextNode('%s' % cs_MD5)
    md5szerver.appendChild(md5szerver_tartalom)
    hash.appendChild(md5szerver)

    fname = genfolder + '/' + cs_felm + '/' + cs_nev + '.xml'
    # XML kiírása
    doc.writexml(open(fname, 'w'), indent="  ", addindent="  ", newl='\n')
    doc.unlink()

    if os.path.isfile(fname):
        queryLogId = QtSql.QSqlQuery()
        siker = queryLogId.exec_(
            '''SELECT package_id FROM csomag_log WHERE csomag_azon = %s;''' %
            (cs_azon))
        if siker:
            if queryLogId.size() == 1:
                queryLogId.next()
                return queryLogId.value(0), 2
            elif queryLogId.size() > 1:
                QtWidgets.QMessageBox.warning(
                    None, u"Csomag-log",
                    u"Csomag-log rekord lekérdezési hiba.")
                return 0, 0
        else:
            if queryLogId.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, u"Hiba:",
                    u"Hiba típus: %s" % str(queryLogId.lastError().text()))
                return 0, 0

        queryLog = QtSql.QSqlQuery()
        siker = queryLog.exec_(
            '''INSERT INTO csomag_log(felmero,csomag_azon,csomag_nev,cs_pontszam,cs_generalas,cs_hatarido,m_tomorites,hash_md5_szerver) 
            VALUES('%s',%s,'%s',%s,'%s','%s','%s','%s') RETURNING package_id ;'''
            % (cs_felm, cs_azon, cs_nev, cs_pontsz, cs_gen, cs_hat, cs_tom,
               cs_MD5))
        if siker:
            if queryLog.size() == 1:
                queryLog.next()
                return queryLog.value(0), 1
            else:
                QtWidgets.QMessageBox.warning(
                    None, u"Csomag-log", u"Csomag-log rekord rögzítési hiba.")
                return 0, 0

        else:
            if queryLog.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, u"Hiba:",
                    u"Hiba típus: %s" % str(queryLog.lastError().text()))
                return 0, 0

    else:
        print("No XML - No PackMan!")
        return 0, 0
Пример #18
0
def generator(csomazon, genfolder, keszito):
    # postgresql connection
    try:
        # csomag adatok lekérdezése
        prow = []
        queryGenerate = QtSql.QSqlQuery()
        siker = queryGenerate.exec_(
            """SELECT csomag_azon,csomag_nev,mintater,projminter,felmero,hatarido,sorok,oszlopok,letrehozas,
                formverzio,oscsomag FROM csomag WHERE csomag_azon = %s""" %
            (csomazon))
        if siker:
            if queryGenerate.size() == 1:
                queryGenerate.next()
                for i in range(11):
                    prow.append(queryGenerate.value(i))
            else:
                QtWidgets.QMessageBox.warning(None, u"File Generálás",
                                              u"Hiányzó csomag rekord.")
                return
        else:
            if queryGenerate.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, u"Hiba:",
                    u"Hiba típus: %s" % str(queryGenerate.lastError().text()))
                return

        print(prow)
        forward = True
        pontx = 0

        sql_list = []
        queryCreates = QtSql.QSqlQuery()
        crQuery = """SELECT table_sql FROM csomag_sql WHERE %s= True""" % (
            prow[9].strip())
        siker = queryCreates.exec_(crQuery)
        if siker:
            while queryCreates.next():
                sql_list.append(queryCreates.value(0))
        else:
            if queryCreates.lastError().type() != 0:
                QtWidgets.QMessageBox.warning(
                    None, u"Hiba:",
                    u"Hiba típus: %s" % str(queryCreates.lastError().text()))
                return
        if not len(sql_list): return

        try:
            # felhasználó könyvtárának létrehozása a megadott elérési út alatt - ha még nincs
            if not os.path.exists(genfolder + '/' + prow[4]):
                print('Create package folder:',
                      os.path.exists(genfolder + '/' + prow[4]))
                os.makedirs(genfolder + '/' + prow[4])

            # az SQLite adatbázis létrehozása, és kapcsolódás hozzá
            sdb = sqlite3.connect(genfolder + '/' + prow[4] + '/' + prow[1] +
                                  '.db')
            # sqlite táblák létrehozásának ciklusa
            for sql_rec in sql_list:
                scur = sdb.cursor()
                scur.execute(sql_rec)
                sdb.commit()

            # csomag rekord beszúrása
            prowselect = (prow[0], prow[1], prow[3], prow[4],
                          prow[5].toString('yyyy-MM-dd hh:mm:ss'), prow[6],
                          prow[7], prow[9].strip())
            print(prowselect)
            csrec = sdb.cursor()
            csrec.execute(
                'INSERT INTO csomag(csomag_id,csom_nev,mintater,felmero,hatarido,sor,oszlop,formverzio) VALUES(?,?,?,?,?,?,?,?)',
                prowselect)
            sdb.commit()

            # gpx változó létrehozása
            gpx = gpxpy.gpx.GPX()

            # ppont rekordok lekérdezése
            pponts = []
            queryPRec = QtSql.QSqlQuery()
            siker = queryPRec.exec_(
                """SELECT ppont_azon,csomag_azon,epont_azon,bpont_azon,sorszam,sor,oszlop,wgs84_lat,wgs84_lon,statusz 
                    FROM ppont WHERE csomag_azon=%s""" % (prow[0]))
            if siker:
                while queryPRec.next():
                    prec = []
                    for i in range(10):
                        prec.append(queryPRec.value(i))
                    pponts.append(prec)
            pontx = len(pponts)

            for ppont in pponts:
                # insert ppont records
                print(ppont)
                scur = sdb.cursor()
                if ppont[9] == 0:
                    # ha uj csomagról van szó
                    scur.execute(
                        '''INSERT INTO ppont(ppont_id,csomag_id,epont_id,bpont_id,sorszam,sor,oszlop,
                    wgs84_lat,wgs84_lon,statusz) VALUES(?,?,?,?,?,?,?,?,?,1)''',
                        (ppont[0], ppont[1], ppont[2], ppont[3], ppont[4],
                         ppont[5], ppont[6], ppont[7], ppont[8]))
                else:
                    # ha hibajavító csomagról van szó
                    scur.execute(
                        '''INSERT INTO ppont(ppont_id,csomag_id,epont_id,bpont_id,sorszam,sor,oszlop,
                    wgs84_lat,wgs84_lon,statusz) VALUES(?,?,?,?,?,?,?,?,?,?)''',
                        ppont)

                sdb.commit()

                # GPX waypoint beszúrások a gpx változóba
                gpx_wpt = gpxpy.gpx.GPXWaypoint(ppont[7],
                                                ppont[8],
                                                name=str(ppont[4]),
                                                symbol='Navaid, Orange')
                gpx.waypoints.append(gpx_wpt)

            # gpx fájl létrehozása és lezárása
            gpxfilename = genfolder + '/' + prow[4] + '/' + prow[1] + '.gpx'
            gpxfile = open(gpxfilename, 'a')
            gpxfile.write(gpx.to_xml())
            gpxfile.close()

            # a Garmin gpi fájl létrehozása GPSBabel program segítségével
            gpifilename = genfolder + '/' + prow[4] + '/' + prow[1] + '.gpi'
            pluginfolder = os.path.dirname(os.path.abspath(__file__))
            babelparancs = ''
            if platform == "linux" or platform == "linux2" or platform == "darwin":
                # linux and OS X
                babelparancs = 'gpsbabel -w -i gpx -f ' + gpxfilename + ' -o garmin_gpi,category=' + prow[1][:6] \
                    + prow[1][8:] + ',bitmap="' + pluginfolder + '/pont.bmp",unique=1 -F ' + gpifilename

            elif platform == "win32":
                # Windows...
                babelparancs = 'gpsbabel -w -i gpx -f ' + gpxfilename + ' -o garmin_gpi,category=' + prow[1][:6] \
                    + prow[1][8:] + ',bitmap="' + pluginfolder.replace('\\','/') + '/pont.bmp",unique=1 -F ' + gpifilename
                #   + prow[1][8:] + ",bitmap=d:/dev/pycharm_projects/scriptek/pont.bmp,unique=1 -F " + gpifilename
            else:
                QtWidgets.QMessageBox.warning(
                    None, u"Hiba:",
                    u"Operációs rendszer függési hiba: %s" % platform)
            if babelparancs:
                print(babelparancs)
                babelproc = os.system(babelparancs)
                print(babelproc)
                sleep(2)

        except sqlite3.Error as e:
            QtWidgets.QMessageBox.warning(None, u"Hiba:",
                                          u"Adatbázis hiba: %s" % e)
            forward = False

        except Exception as e:
            QtWidgets.QMessageBox.warning(None, u"Hiba:",
                                          u"Adatbázis lekérdezés hiba: %s" % e)
            forward = False

        finally:
            if sdb:
                sdb.close()

        if forward:
            # ha az eddigi műveletek sikeresen lezajlottak
            fname = genfolder + '/' + prow[4] + '/' + prow[1] + '.db'
            if os.path.isfile(fname):
                # adatbázis ZIP zömörítés
                zip_ok = csomag_zip(prow[1], prow[4], genfolder)
                md5_returned = None
                if zip_ok:
                    # MD5 value generálás
                    md5_returned = csomag_md5(genfolder + '/' + prow[4] + '/' +
                                              prow[1] + '.zip')

                if md5_returned is not None:
                    tom_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

                    # csomag XML element létrehozása, letárolása
                    # csomag_azon,csomag_nev,mintater,projminter,felmero,hatarido,sorok,oszlopok,letrehozas,formverzio,oscsomag
                    # (cs_felm,  cs_azon, cs_nev, cs_pontsz, cs_gen, cs_hat, cs_tom, cs_MD5)
                    logazon, logrend = csomag_XML_elem(
                        prow[4], prow[0], prow[1], pontx,
                        prow[8].toString('yyyy-MM-dd hh:mm:ss'),
                        prow[5].toString('yyyy-MM-dd hh:mm:ss'), tom_time,
                        md5_returned, genfolder)

                    if logazon:
                        # ha első alkalommal törénik a generálás
                        if logrend == 1:
                            # a csomag rekord állapotának megváltoztatása a Postgresql-ben
                            queryCsomStatus = QtSql.QSqlQuery()
                            siker = queryCsomStatus.exec_(
                                """UPDATE csomag SET allapot = True WHERE csomag_azon = %s"""
                                % (prow[0]))
                            if siker:
                                print('Package state = True')
                            else:
                                if queryCsomStatus.lastError().type() != 0:
                                    QtWidgets.QMessageBox.warning(
                                        None, u"Hiba:", u"Hiba típus: %s" %
                                        str(queryCsomStatus.lastError().text())
                                    )
                                    return

                            # a ppont rekordok státuszának megváltoztatása a Postgresql-ben
                            queryPontStatus = QtSql.QSqlQuery()
                            siker = queryPontStatus.exec_(
                                """UPDATE ppont SET statusz = 1 WHERE csomag_azon = %s"""
                                % (prow[0]))
                            if siker:
                                print('Pponts state: 1')
                            else:
                                if queryPontStatus.lastError().type() != 0:
                                    QtWidgets.QMessageBox.warning(
                                        None, u"Hiba:", u"Hiba típus: %s" %
                                        str(queryPontStatus.lastError().text())
                                    )
                                    return

                        # a fájlgenerálás bejegyzése a csomag_gen táblába
                        queryGenLog = QtSql.QSqlQuery()
                        siker = queryGenLog.exec_(
                            '''INSERT INTO csomag_gen(package_id,csomag_nev,file_generalas,gen_mod,gen_rend,kezdemenyezo) 
                            VALUES(%s,'%s','%s','manual',%s,'%s') RETURNING gen_id ;'''
                            % (logazon, prow[1], tom_time, logrend, keszito))
                        if siker:
                            if queryGenLog.size() == 1:
                                queryGenLog.next()
                                print('gen_id:', queryGenLog.value(0),
                                      'package_id:', logazon)
                            else:
                                QtWidgets.QMessageBox.warning(
                                    None, u"Csomag-gen",
                                    u"Csomag generálás rekord rögzítési hiba.")
                                return
                        else:
                            if queryGenLog.lastError().type() != 0:
                                QtWidgets.QMessageBox.warning(
                                    None, u"Hiba:", u"Hiba típus: %s" %
                                    str(queryGenLog.lastError().text()))
                                return

                    else:
                        # a fájlok törlése építhető be ide, ha sikertelen volt a csomag_log rekord kezelése
                        pass
                else:
                    QtWidgets.QMessageBox.warning(None, u"Hiba:",
                                                  u"MD5 generálás hiba")
                    return

            QtWidgets.QMessageBox.warning(
                None, u"Csomag generálás",
                u"Létrehozásra kerültek a csomag fájljai")
            return

        QtWidgets.QMessageBox.warning(None, u"Csomag generálás hiba",
                                      u"A fájlok generálása elakadt.")
        return

    except Exception as e:
        QtWidgets.QMessageBox.warning(None, u"Hiba:",
                                      u"Generálás hiba: %s" % e)
Пример #19
0
 def DB_Pull_mf_inputs(self):
     db = db_functions.db_variable(self)      
     query = QtSql.QSqlQuery(db)
     query.exec_("SELECT user_val FROM mf_inputs WHERE parNames = 'ss' ")
     LK = str(query.first()) # What does LK do?
     self.lineEdit_ss_single.setText(str(query.value(0)))