示例#1
0
文件: sys.py 项目: Miguel-J/pineboo
    def afterCommit_flfiles(self, cur_files_: "isqlcursor.ISqlCursor") -> bool:
        """After commit flfiles."""

        if cur_files_.modeAccess() != cur_files_.Browse:
            _qry = qsa.FLSqlQuery()
            _qry.setTablesList(u"flserial")
            _qry.setSelect(u"sha")
            _qry.setFrom(u"flfiles")
            _qry.setForwardOnly(True)
            _serial_value = cur_files_.valueBuffer(u"sha")
            if _qry.exec_():
                if _qry.first():
                    util = qsa.FLUtil()
                    _v = util.sha1(_qry.value(0))
                    while _qry.next():
                        if _qry.value(0) is not None:
                            _v = util.sha1(_v + _qry.value(0))

                    _serial_value = _v

            _cur_serial = qsa.FLSqlCursor(u"flserial")
            _cur_serial.select()
            if _cur_serial.first():
                _cur_serial.setModeAccess(_cur_serial.Edit)
            else:
                _cur_serial.setModeAccess(_cur_serial.Insert)
            _cur_serial.refreshBuffer()
            _cur_serial.setValueBuffer(u"sha", _serial_value)
            _cur_serial.commitBuffer()

        return True
示例#2
0
    def test_sqlSelect(self) -> None:
        """Test sqlSelect."""

        from pineboolib.qsa import qsa

        cursor_areas = qsa.FLSqlCursor("flareas")
        cursor_areas.setModeAccess(cursor_areas.Insert)
        cursor_areas.refreshBuffer()
        cursor_areas.setValueBuffer("idarea", "Y")
        cursor_areas.setValueBuffer("descripcion", "123oX")
        self.assertTrue(cursor_areas.commitBuffer())
        cx = cursor_areas.db()

        util = qsa.FLUtil()
        self.assertEqual(
            util.sqlSelect("flareas", "descripcion", "idarea='Y'"), "123oX")
        self.assertEqual(
            util.sqlSelect("flareas", "descripcion", "idarea='Y'",
                           ["flareas"]), "123oX")
        self.assertEqual(
            util.sqlSelect("flareas", "descripcion", "idarea='Y'", ["flareas"],
                           0), "123oX")
        self.assertEqual(
            util.sqlSelect("flareas", "descripcion", "idarea='Y'", ["flareas"],
                           cx), "123oX")
        self.assertEqual(
            util.sqlSelect("flareas", "descripcion", "idarea='Y'", ["flareas"],
                           0, "default"),
            "123oX",
        )

        self.assertEqual(
            util.sqlSelect("flareas", "descripcion", "idarea='Y'", ["flareas"],
                           0, cx), "123oX")
    def test_kugar_parser_1(self) -> None:
        """Test parser."""

        from pineboolib.qsa import qsa

        from pineboolib.plugins.mainform.eneboo import eneboo
        import os

        application.PROJECT.main_form = eneboo
        # application.project.main_form.mainWindow = application.project.main_form.MainForm()
        # application.project.main_form.mainWindow.initScript()
        # application.project.main_window = application.project.main_form.mainWindow

        application.PROJECT.main_window = application.PROJECT.main_form.MainForm(
        )  # type: ignore
        application.PROJECT.main_window.initScript()

        qsa_sys = qsa.sys
        path = fixture_path("principal.eneboopkg")
        self.assertTrue(os.path.exists(path))
        qsa_sys.loadModules(path, False)
        qsa.from_project("flfactppal").iface.valoresIniciales()

        cur_paises = qsa.FLSqlCursor("paises")
        """
        cur_paises.setModeAccess(cur_paises.Insert)
        cur_paises.refreshBuffer()
        cur_paises.setValueBuffer("codpais", "ES")
        cur_paises.setValueBuffer("nombre", "ESPAÑA")
        self.assertTrue(cur_paises.commitBuffer())
        cur_paises.setModeAccess(cur_paises.Insert)
        cur_paises.refreshBuffer()
        cur_paises.setValueBuffer("codpais", "PT")
        cur_paises.setValueBuffer("nombre", "PORTUGAL")
        self.assertTrue(cur_paises.commitBuffer())
        """
        cur_paises.select("1=1")
        cur_paises.first()
        init_ = cur_paises.valueBuffer("codpais")
        cur_paises.last()
        last_ = cur_paises.valueBuffer("codpais")
        qry_paises = qsa.FLSqlQuery("paises")
        qry_paises.setValueParam("from", init_)
        qry_paises.setValueParam("to", last_)

        rpt_viewer_ = qsa.FLReportViewer()
        rpt_viewer_.setReportTemplate("paises")
        rpt_viewer_.setReportData(qry_paises)

        rpt_viewer_.renderReport()
        if rpt_viewer_.rptEngine_ and hasattr(rpt_viewer_.rptEngine_,
                                              "parser_"):
            pdf_file = rpt_viewer_.rptEngine_.parser_.get_file_name()

        self.assertTrue(pdf_file)
示例#4
0
    def test_transaction_level(self) -> None:
        from pineboolib.qsa import qsa
        from pineboolib.application.metadata import pnrelationmetadata

        sys_1 = systype.SysType()
        sys_2 = qsa.sys

        self.assertEqual(sys_1.transactionLevel(), 0)
        self.assertEqual(sys_2.transactionLevel(), 0)

        cur_areas = qsa.FLSqlCursor("flareas")

        cursor = qsa.FLSqlCursor("flareas")
        cursor.setModeAccess(cursor.Insert)
        cursor.refreshBuffer()
        cursor.setValueBuffer("bloqueo", True)
        cursor.setValueBuffer("idarea", "H")
        cursor.setValueBuffer("descripcion", "Área de prueba H")
        self.assertTrue(cursor.commitBuffer())
        rel = pnrelationmetadata.PNRelationMetaData(
            "flareas", "idarea",
            pnrelationmetadata.PNRelationMetaData.RELATION_1M)
        rel.setField("idarea")
        cur_areas.select("idarea ='H'")
        cur_areas.first()
        self.assertEqual(cur_areas.valueBuffer("idarea"), "H")
        cur_areas.setModeAccess(cur_areas.Edit)
        cur_areas.refreshBuffer()
        cur_modulos = qsa.FLSqlCursor("flmodules", True, "default", cur_areas,
                                      rel)
        cur_modulos.select()
        cur_modulos.refreshBuffer()
        self.assertEqual(sys_1.transactionLevel(), 0)
        self.assertEqual(sys_2.transactionLevel(), 0)

        cur_modulos.setModeAccess(cur_modulos.Insert)
        cur_modulos.transaction()
        self.assertEqual(sys_1.transactionLevel(), 1)
        self.assertEqual(sys_2.transactionLevel(), 1)
        self.assertTrue(cur_modulos.rollback())
示例#5
0
    def test_initialization(self) -> None:
        """Test flformrecord cursor assignment"""

        from pineboolib.qsa import qsa
        import os

        path = fixture_path("principal.eneboopkg")
        self.assertTrue(os.path.exists(path))
        qsa.sys.loadModules(path, False)

        form_search_1 = qsa.FLFormSearchDB("bancos")
        self.assertEqual(form_search_1.cursor().metadata().name(), "bancos")
        self.assertEqual(form_search_1.action().name(), "bancos")
        self.assertEqual(form_search_1.parent(), QtWidgets.QApplication.activeModalWidget())

        parent_2 = QtWidgets.QWidget()

        form_search_2 = qsa.FLFormSearchDB("clientes", parent_2)
        self.assertEqual(form_search_2.cursor().metadata().name(), "clientes")
        self.assertEqual(form_search_2.action().name(), "clientes")
        self.assertEqual(form_search_2.parent(), parent_2)

        parent_3 = QtWidgets.QWidget()
        cur_3 = qsa.FLSqlCursor("proveedores")
        form_search_3 = qsa.FLFormSearchDB(cur_3, "proveedores", parent_3)
        self.assertEqual(form_search_3.cursor().metadata().name(), "proveedores")
        self.assertEqual(form_search_3.action().name(), "proveedores")
        self.assertEqual(form_search_3.parent(), parent_3)
        self.assertEqual(form_search_3.cursor(), cur_3)

        parent_4 = None
        cur_4 = qsa.FLSqlCursor("proveedores")
        form_search_4 = qsa.FLFormSearchDB(cur_4, "proveedores", parent_4)
        self.assertEqual(form_search_4.cursor().metadata().name(), "proveedores")
        self.assertEqual(form_search_4.action().name(), "proveedores")
        self.assertEqual(form_search_4.parent(), QtWidgets.QApplication.activeModalWidget())
        self.assertEqual(form_search_4.cursor(), cur_4)
示例#6
0
    def test_flsqlquery_date_null(self) -> None:
        """Test FLSqlQuery date null."""

        from pineboolib.qsa import qsa

        cursor = qsa.FLSqlCursor("fltest")
        cursor.setModeAccess(cursor.Insert)
        cursor.refreshBuffer()
        self.assertTrue(cursor.commitBuffer())

        qry = qsa.FLSqlQuery()
        qry.setTablesList("fltest")
        qry.setSelect("date_field")
        qry.setFrom("fltest")
        qry.setWhere("1=1 LIMIT 1")
        self.assertTrue(qry.exec_())
        self.assertTrue(qry.first())
        self.assertEqual(str(qry.value(0)), "")
示例#7
0
    def cargarFicheroEnBD(self, nombre: str, contenido: str,
                          log: "QtWidgets.QTextEdit", directorio: str) -> None:
        """Load a file into database."""
        if (not qsa.util.isFLDefFile(contenido)
                and not nombre.endswith(u".mod")
                and not nombre.endswith(u".xpm")
                and not nombre.endswith(u".signatures")
                and not nombre.endswith(u".checksum")
                and not nombre.endswith(u".certificates")
                and not nombre.endswith(u".qs") and not nombre.endswith(u".ar")
                and not nombre.endswith(u".py")
                and not nombre.endswith(u".kut")):
            return
        cursorFicheros = qsa.FLSqlCursor(u"flfiles")
        cursor = self.cursor()
        cursorFicheros.select(qsa.ustr(u"nombre = '", nombre, u"'"))
        if not cursorFicheros.first():
            if nombre.endswith(u".ar"):
                if not self.cargarAr(nombre, contenido, log, directorio):
                    return
            log.append(
                qsa.util.translate(u"scripts", u"- Cargando :: ") + nombre)
            cursorFicheros.setModeAccess(cursorFicheros.Insert)
            cursorFicheros.refreshBuffer()
            cursorFicheros.setValueBuffer(u"nombre", nombre)
            cursorFicheros.setValueBuffer(u"idmodulo",
                                          cursor.valueBuffer(u"idmodulo"))
            cursorFicheros.setValueBuffer(u"sha", qsa.util.sha1(contenido))
            cursorFicheros.setValueBuffer(u"contenido", contenido)
            cursorFicheros.commitBuffer()

        else:
            cursorFicheros.setModeAccess(cursorFicheros.Edit)
            cursorFicheros.refreshBuffer()
            contenidoCopia = cursorFicheros.valueBuffer(u"contenido")
            if contenidoCopia != contenido:
                log.append(
                    qsa.util.translate(u"scripts", u"- Actualizando :: ") +
                    nombre)
                cursorFicheros.setModeAccess(cursorFicheros.Insert)
                cursorFicheros.refreshBuffer()
                d = qsa.Date()
                cursorFicheros.setValueBuffer(u"nombre",
                                              nombre + qsa.parseString(d))
                cursorFicheros.setValueBuffer(u"idmodulo",
                                              cursor.valueBuffer(u"idmodulo"))
                cursorFicheros.setValueBuffer(u"contenido", contenidoCopia)
                cursorFicheros.commitBuffer()
                log.append(
                    qsa.util.translate(u"scripts", u"- Backup :: ") + nombre +
                    qsa.parseString(d))
                cursorFicheros.select(qsa.ustr(u"nombre = '", nombre, u"'"))
                cursorFicheros.first()
                cursorFicheros.setModeAccess(cursorFicheros.Edit)
                cursorFicheros.refreshBuffer()
                cursorFicheros.setValueBuffer(u"idmodulo",
                                              cursor.valueBuffer(u"idmodulo"))
                cursorFicheros.setValueBuffer(u"sha", qsa.util.sha1(contenido))
                cursorFicheros.setValueBuffer(u"contenido", contenido)
                cursorFicheros.commitBuffer()
                if nombre.endswith(u".ar"):
                    self.cargarAr(nombre, contenido, log, directorio)
示例#8
0
    def exportarADisco(self, directorio: str) -> None:
        """Export a module to disk."""
        if directorio:
            tdb_lineas = self.child(u"lineas")
            if tdb_lineas is None:
                raise Exception("lineas control not found")

            curFiles = tdb_lineas.cursor()
            cursorModules = qsa.FLSqlCursor(u"flmodules")
            cursorAreas = qsa.FLSqlCursor(u"flareas")
            if curFiles.size() != 0:
                dir = qsa.Dir()
                idModulo = self.cursor().valueBuffer(u"idmodulo")
                log = self.child(u"log")
                if log is None:
                    raise Exception("Log control not found!.")

                log.text = u""
                directorio = qsa.Dir.cleanDirPath(
                    qsa.ustr(directorio, u"/", idModulo))
                if not dir.fileExists(directorio):
                    dir.mkdir(directorio)
                if not dir.fileExists(qsa.ustr(directorio, u"/forms")):
                    dir.mkdir(qsa.ustr(directorio, u"/forms"))
                if not dir.fileExists(qsa.ustr(directorio, u"/scripts")):
                    dir.mkdir(qsa.ustr(directorio, u"/scripts"))
                if not dir.fileExists(qsa.ustr(directorio, u"/queries")):
                    dir.mkdir(qsa.ustr(directorio, u"/queries"))
                if not dir.fileExists(qsa.ustr(directorio, u"/tables")):
                    dir.mkdir(qsa.ustr(directorio, u"/tables"))
                if not dir.fileExists(qsa.ustr(directorio, u"/reports")):
                    dir.mkdir(qsa.ustr(directorio, u"/reports"))
                if not dir.fileExists(qsa.ustr(directorio, u"/translations")):
                    dir.mkdir(qsa.ustr(directorio, u"/translations"))
                curFiles.first()
                file = None
                tipo = None
                contenido = ""
                self.setDisabled(True)
                s01_dowhile_1stloop = True
                while s01_dowhile_1stloop or curFiles.next():
                    s01_dowhile_1stloop = False
                    file = curFiles.valueBuffer(u"nombre")
                    tipo = self.tipoDeFichero(file)
                    contenido = curFiles.valueBuffer(u"contenido")
                    if not contenido == "":
                        s01_when = tipo
                        s01_do_work, s01_work_done = False, False
                        if s01_when == u".xml":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(u"ISO-8859-1",
                                          qsa.ustr(directorio, u"/", file),
                                          contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".mod":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(u"ISO-8859-1",
                                          qsa.ustr(directorio, u"/", file),
                                          contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".xpm":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(u"ISO-8859-1",
                                          qsa.ustr(directorio, u"/", file),
                                          contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".signatures":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(u"ISO-8859-1",
                                          qsa.ustr(directorio, u"/", file),
                                          contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".certificates":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(u"ISO-8859-1",
                                          qsa.ustr(directorio, u"/", file),
                                          contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".checksum":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(u"ISO-8859-1",
                                          qsa.ustr(directorio, u"/", file),
                                          contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".ui":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"ISO-8859-1",
                                qsa.ustr(directorio, u"/forms/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".qs":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"ISO-8859-1",
                                qsa.ustr(directorio, u"/scripts/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".py":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"UTF-8",
                                qsa.ustr(directorio, u"/scripts/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK

                        if s01_when == u".qry":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"ISO-8859-1",
                                qsa.ustr(directorio, u"/queries/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".mtd":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"ISO-8859-1",
                                qsa.ustr(directorio, u"/tables/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".kut":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"UTF-8",
                                qsa.ustr(directorio, u"/reports/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if s01_when == u".ts":
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            qsa.sys.write(
                                u"UTF-8",
                                qsa.ustr(directorio, u"/translations/", file),
                                contenido)
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Exportando ", file, u".")))
                            s01_do_work = False  # BREAK
                        if not s01_work_done:
                            s01_do_work, s01_work_done = True, True
                        if s01_do_work:
                            log.append(
                                qsa.util.translate(
                                    u"scripts",
                                    qsa.ustr(u"* Omitiendo ", file, u".")))

                    qsa.sys.processEvents()

                cursorModules.select(qsa.ustr(u"idmodulo = '", idModulo, u"'"))
                if cursorModules.first():
                    cursorAreas.select(
                        qsa.ustr(u"idarea = '",
                                 cursorModules.valueBuffer(u"idarea"), u"'"))
                    cursorAreas.first()
                    areaName = cursorAreas.valueBuffer(u"descripcion")
                    if not qsa.FileStatic.exists(
                            qsa.ustr(directorio, u"/",
                                     cursorModules.valueBuffer(u"idmodulo"),
                                     u".xpm")):
                        qsa.sys.write(
                            u"ISO-8859-1",
                            qsa.ustr(directorio, u"/",
                                     cursorModules.valueBuffer(u"idmodulo"),
                                     u".xpm"),
                            cursorModules.valueBuffer(u"icono"),
                        )
                        log.append(
                            qsa.util.translate(
                                u"scripts",
                                qsa.ustr(
                                    u"* Exportando ",
                                    cursorModules.valueBuffer(u"idmodulo"),
                                    u".xpm (Regenerado).",
                                ),
                            ))
                    if not qsa.FileStatic.exists(
                            qsa.ustr(directorio, u"/",
                                     cursorModules.valueBuffer(u"idmodulo"),
                                     u".mod")):
                        contenido = qsa.ustr(
                            u"<!DOCTYPE MODULE>\n<MODULE>\n<name>",
                            cursorModules.valueBuffer(u"idmodulo"),
                            u'</name>\n<alias>QT_TRANSLATE_NOOP("FLWidgetApplication","',
                            cursorModules.valueBuffer(u"descripcion"),
                            u'")</alias>\n<area>',
                            cursorModules.valueBuffer(u"idarea"),
                            u'</area>\n<areaname>QT_TRANSLATE_NOOP("FLWidgetApplication","',
                            areaName,
                            u'")</areaname>\n<version>',
                            cursorModules.valueBuffer(u"version"),
                            u"</version>\n<icon>",
                            cursorModules.valueBuffer(u"idmodulo"),
                            u".xpm</icon>\n<flversion>",
                            cursorModules.valueBuffer(u"version"),
                            u"</flversion>\n<description>",
                            cursorModules.valueBuffer(u"idmodulo"),
                            u"</description>\n</MODULE>",
                        )
                        qsa.sys.write(
                            u"ISO-8859-1",
                            qsa.ustr(directorio, u"/",
                                     cursorModules.valueBuffer(u"idmodulo"),
                                     u".mod"),
                            contenido,
                        )
                        log.append(
                            qsa.util.translate(
                                u"scripts",
                                qsa.ustr(
                                    u"* Generando ",
                                    cursorModules.valueBuffer(u"idmodulo"),
                                    u".mod (Regenerado).",
                                ),
                            ))

                self.setDisabled(False)
                log.append(
                    qsa.util.translate(u"scripts",
                                       u"* Exportación finalizada."))
示例#9
0
    def test_basic_4(self) -> None:
        """Test basic test 4."""
        from pineboolib.qsa import qsa
        from pineboolib import application
        from pineboolib.application.metadata import pntablemetadata, pnfieldmetadata
        import os

        qsa_sys = qsa.sys
        path = fixture_path("principal.eneboopkg")
        self.assertTrue(os.path.exists(path))
        qsa_sys.loadModules(path, False)
        widget = qsa.from_project("flfactppal")
        widget.iface.valoresIniciales()
        cur_clientes = qsa.FLSqlCursor("clientes")
        cur_clientes.setModeAccess(cur_clientes.Insert)
        cur_clientes.refreshBuffer()
        # cur_clientes.setValueBuffer("codigo", "000001")
        cur_clientes.setValueBuffer("nombre", "cliente de prueba")
        cur_clientes.setValueBuffer("cifnif", "01234567H")
        cur_clientes.setValueBuffer("codserie", "A")
        self.assertTrue(cur_clientes.commitBuffer())
        cur_clientes.commit()
        cur_clientes.conn().doTransaction(cur_clientes)

        mtd_tareas = pntablemetadata.PNTableMetaData("tareas")
        field_01 = pnfieldmetadata.PNFieldMetaData(
            "idtarea",
            "Id",
            False,
            True,
            "serial",
            0,
            True,
            True,
            True,
            0,
            0,
            True,
            True,
            False,
            None,
            False,
            False,
            False,
            True,
            False,
        )
        field_02 = pnfieldmetadata.PNFieldMetaData(
            "nombre",
            "Nombre",
            False,
            False,
            "string",
            10,
            False,
            True,
            True,
            0,
            0,
            False,
            False,
            False,
            None,
            False,
            False,
            True,
            False,
            False,
        )
        field_03 = pnfieldmetadata.PNFieldMetaData(
            "fechaini",
            "Fecha Inicial",
            True,
            False,
            "date",
            0,
            False,
            True,
            True,
            0,
            0,
            False,
            False,
            False,
            None,
            False,
            False,
            True,
            False,
            False,
        )
        field_04 = pnfieldmetadata.PNFieldMetaData(
            "fechafinal",
            "Fecha Final",
            True,
            False,
            "date",
            0,
            False,
            True,
            True,
            0,
            0,
            False,
            False,
            False,
            None,
            False,
            False,
            True,
            False,
            False,
        )
        mtd_tareas.addFieldMD(field_01)
        mtd_tareas.addFieldMD(field_02)
        mtd_tareas.addFieldMD(field_03)
        mtd_tareas.addFieldMD(field_04)
        self.assertEqual(mtd_tareas.fieldListArray(False),
                         ["idtarea", "nombre", "fechaini", "fechafinal"])
        application.PROJECT.conn_manager.manager(
        ).cache_metadata_["tareas"] = mtd_tareas
        application.PROJECT.conn_manager.manager().createTable("tareas")
        self.assertTrue(
            application.PROJECT.conn_manager.manager().existsTable("tareas"))

        cur_tareas = qsa.FLSqlCursor("tareas")
        self.assertEqual(
            cur_tareas.metadata().fieldListArray(False),
            ["idtarea", "nombre", "fechaini", "fechafinal"],
        )

        cur_tareas.setModeAccess(cur_tareas.Insert)
        cur_tareas.refreshBuffer()
        # cur_tareas.setValueBuffer("idtarea", 1)
        cur_tareas.setValueBuffer("nombre", "prueba1")
        self.assertTrue(cur_tareas.commitBuffer())
        cur_tareas.setModeAccess(cur_tareas.Insert)
        cur_tareas.refreshBuffer()
        # cur_tareas.setValueBuffer("idtarea", 2)
        cur_tareas.setValueBuffer("nombre", "prueba2")
        cur_tareas.setValueBuffer("fechaini", str(qsa.Date()))
        cur_tareas.setValueBuffer("fechafinal", str(qsa.Date()))
        self.assertTrue(cur_tareas.commitBuffer())
        cur_tareas.setModeAccess(cur_tareas.Insert)
        cur_tareas.refreshBuffer()
        # cur_tareas.setValueBuffer("idtarea", 3)
        cur_tareas.setValueBuffer("nombre", "prueba3")
        cur_tareas.setValueBuffer("fechaini", str(qsa.Date()))
        cur_tareas.setValueBuffer("fechafinal", str(qsa.Date()))
        self.assertTrue(cur_tareas.commitBuffer())
        cur_tareas.setModeAccess(cur_tareas.Insert)
        cur_tareas.refreshBuffer()
        cur_tareas.setValueBuffer("nombre", "prueba4")
        cur_tareas.setValueBuffer("fechaini", str(qsa.Date()))
        self.assertTrue(cur_tareas.commitBuffer())
        cur_tareas.setModeAccess(cur_tareas.Insert)
        cur_tareas.refreshBuffer()
        # cur_tareas.setValueBuffer("idtarea", 3)
        cur_tareas.setValueBuffer("nombre", "prueba5")
        cur_tareas.setValueBuffer("fechafinal", str(qsa.Date()))
        self.assertTrue(cur_tareas.commitBuffer())
        cur_tareas.commit()

        qry = qsa.FLSqlQuery()
        qry.setSelect("idtarea,nombre,fechaini,fechafinal")
        qry.setFrom("tareas")
        qry.setWhere("1=1")
        qry.setOrderBy("idtarea")
        self.assertTrue(qry.exec_())
        self.assertTrue(qry.first())
        self.assertEqual(qry.value("fechaini"), "")
        self.assertEqual(qry.value("fechafinal"), "")
        self.assertTrue(qry.next())
        self.assertNotEqual(qry.value("fechaini"), "")
        self.assertNotEqual(qry.value("fechafinal"), "")
        self.assertTrue(qry.next())
        self.assertNotEqual(qry.value("fechaini"), "")
        self.assertNotEqual(qry.value("fechafinal"), "")
        self.assertTrue(qry.next())
        self.assertNotEqual(qry.value("fechaini"), "")
        self.assertEqual(qry.value("fechafinal"), "")
        self.assertTrue(qry.next())
        self.assertEqual(qry.value("fechaini"), "")
        self.assertNotEqual(qry.value("fechafinal"), "")
示例#10
0
    def cargarModulo(self, nombre_fichero: str) -> bool:
        """Load modules."""
        util = qsa.FLUtil()
        fichero = qsa.File(nombre_fichero, "iso-8859-15")
        modulo = None
        descripcion = None
        area = None
        desArea = None
        version = None
        nombreIcono = None
        # versionMinimaFL = None
        dependencias = qsa.Array()
        fichero.open(qsa.File.ReadOnly)
        f = fichero.read()
        xmlModule = qsa.FLDomDocument()
        if xmlModule.setContent(f):
            nodeModule = xmlModule.namedItem(u"MODULE")
            if not nodeModule:
                qsa.MessageBox.critical(
                    util.translate(u"scripts",
                                   u"Error en la carga del fichero xml .mod"),
                    qsa.MessageBox.Ok,
                    qsa.MessageBox.NoButton,
                )
            modulo = nodeModule.namedItem(u"name").toElement().text()
            descripcion = nodeModule.namedItem(u"alias").toElement().text()
            area = nodeModule.namedItem(u"area").toElement().text()
            desArea = nodeModule.namedItem(u"areaname").toElement().text()
            version = nodeModule.namedItem(u"version").toElement().text()
            nombreIcono = nodeModule.namedItem(u"icon").toElement().text()
            # if nodeModule.namedItem(u"flversion"):
            #    versionMinimaFL = nodeModule.namedItem(u"flversion").toElement().text()
            if nodeModule.namedItem(u"dependencies"):
                nodeDepend = xmlModule.elementsByTagName(u"dependency")
                i = 0
                while_pass = True
                while i < len(nodeDepend):
                    if not while_pass:
                        i += 1
                        while_pass = True
                        continue
                    while_pass = False
                    dependencias[i] = nodeDepend.item(i).toElement().text()
                    i += 1
                    while_pass = True
                    try:
                        i < len(nodeDepend)
                    except Exception:
                        break

        else:
            if not isinstance(f, str):
                raise Exception("data must be str, not bytes!!")
            aF = f.split(u"\n")
            modulo = self.dameValor(aF[0])
            descripcion = self.dameValor(aF[1])
            area = self.dameValor(aF[2]) or ""
            desArea = self.dameValor(aF[3])
            version = self.dameValor(aF[4])
            nombreIcono = self.dameValor(aF[5])

        descripcion = self.traducirCadena(descripcion or "", fichero.path
                                          or "", modulo or "")
        desArea = self.traducirCadena(desArea or "", fichero.path or "", modulo
                                      or "")
        fichIcono = qsa.File(qsa.ustr(fichero.path, u"/", nombreIcono))
        fichIcono.open(qsa.File.ReadOnly)
        icono = fichIcono.read()

        if not util.sqlSelect(u"flareas", u"idarea",
                              qsa.ustr(u"idarea = '", area, u"'")):
            if not util.sqlInsert(u"flareas", u"idarea,descripcion",
                                  qsa.ustr(area, u",", desArea)):
                qsa.MessageBox.warning(
                    util.translate(u"scripts", u"Error al crear el área:\n") +
                    area,
                    qsa.MessageBox.Ok,
                    qsa.MessageBox.NoButton,
                )
                return False
        recargar = util.sqlSelect(u"flmodules", u"idmodulo",
                                  qsa.ustr(u"idmodulo = '", modulo, u"'"))
        curModulo = qsa.FLSqlCursor(u"flmodules")
        if recargar:
            # WITH_START
            curModulo.select(qsa.ustr(u"idmodulo = '", modulo, u"'"))
            curModulo.first()
            curModulo.setModeAccess(curModulo.Edit)
            # WITH_END

        else:
            curModulo.setModeAccess(curModulo.Insert)

        # WITH_START
        curModulo.refreshBuffer()
        curModulo.setValueBuffer(u"idmodulo", modulo)
        curModulo.setValueBuffer(u"descripcion", descripcion)
        curModulo.setValueBuffer(u"idarea", area)
        curModulo.setValueBuffer(u"version", version)
        curModulo.setValueBuffer(u"icono", icono)
        curModulo.commitBuffer()
        # WITH_END
        # curSeleccion = qsa.FLSqlCursor(u"flmodules")
        curModulo.setMainFilter(qsa.ustr(u"idmodulo = '", modulo, u"'"))
        curModulo.editRecord(False)
        qsa.from_project("formRecordflmodules").cargarDeDisco(
            qsa.ustr(fichero.path, u"/"), False)
        qsa.from_project("formRecordflmodules").accept()

        setting = "scripts/sys/modLastModule_%s" % qsa.sys.nameBD()
        nombre_fichero = "%s" % os.path.abspath(nombre_fichero)
        qsa.util.writeSettingEntry(setting, nombre_fichero)
        qsa.sys.processEvents()

        return True