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)
Example #2
0
    def test_form_globals(self) -> None:
        """Test form acls globals."""
        from pineboolib.qsa import qsa
        from pineboolib import application
        import importlib

        sys_type = systype.SysType()
        sys_type.installACL("tercera")
        acl = pnaccesscontrollists.PNAccessControlLists()
        acl.init()
        flapplication.aqApp.set_acl(acl)

        project = application.PROJECT
        project.main_form = importlib.import_module(
            "pineboolib.plugins.mainform.eneboo.eneboo")
        project.main_window = getattr(project.main_form, "mainWindow", None)
        main_form_ = getattr(project.main_form, "MainForm", None)
        self.assertTrue(main_form_)
        self.main_w = main_form_()
        self.main_w.initScript()
        self.main_w.show()
        self.assertTrue(self.main_w)

        form = qsa.from_project("formflmodules")
        control_1 = form.child("tableDBRecords")
        self.assertTrue(control_1)
        self.assertFalse(control_1.isEnabled())
Example #3
0
    def cargarModulo(self, nombre_fichero: str) -> bool:
        """Load a module and return True if loaded."""
        util = qsa.FLUtil()
        if util.getOS() == u"WIN32":
            nombre_fichero = nombre_fichero[0 : len(nombre_fichero) - 1]

        return qsa.from_project("formflreloadlast").cargarModulo(nombre_fichero)
Example #4
0
    def cargarAr(self, nombre: str, contenido: str, log: "QtWidgets.QTextEdit",
                 directorio: str) -> bool:
        """Load AR reports."""
        if not qsa.sys.isLoadedModule(u"flar2kut"):
            return False
        if qsa.util.readSettingEntry(u"scripts/sys/conversionAr") != u"true":
            return False
        log.append(
            qsa.util.translate(u"scripts", u"Convirtiendo %s a kut") %
            (str(nombre)))
        contenido = qsa.sys.toUnicode(contenido, u"UTF-8")
        contenido = qsa.from_project("flar2kut").iface.pub_ar2kut(contenido)
        nombre = qsa.ustr(qsa.parseString(nombre)[0:len(nombre) - 3], u".kut")
        if contenido:
            localEnc = qsa.util.readSettingEntry(
                u"scripts/sys/conversionArENC")
            if not localEnc:
                localEnc = u"ISO-8859-15"
            contenido = qsa.sys.fromUnicode(contenido, localEnc)
            self.cargarFicheroEnBD(nombre, contenido, log, directorio)
            log.append(
                qsa.util.translate(u"scripts", u"Volcando a disco ") + nombre)
            qsa.FileStatic.write(
                qsa.Dir.cleanDirPath(qsa.ustr(directorio, u"/", nombre)),
                contenido)

        else:
            log.append(qsa.util.translate(u"scripts", u"Error de conversión"))
            return False

        return True
Example #5
0
 def receive_json(self, content, **kwargs):
     # self.send_json(content)
     # TODO groupSend, channelSend, api
     user = self.scope["user"]
     print(content)
     if "token" in self.scope:
         userid = qsa.FLUtil.quickSqlSelect(
             'authtoken_token', 'user_id',
             'key = \'' + str(self.scope["token"]) + '\'')
         user = qsa.FLUtil.quickSqlSelect('auth_user', 'username',
                                          'id = \'' + str(userid) + '\'')
     if content["type"] == "legacy":
         prefix = content["prefix"]
         params = content["params"] if "params" in content else {
             "params": {
                 "pk": content["pk"]
             } if "pk" in content else False
         }
         action = content["action"] if "action" in content else None
         try:
             obj = qsa.from_project("formAPI").entry_point(
                 "websocket", prefix, user, params, action)
             async_to_sync(self.channel_layer.group_send)(
                 self.room_group_name, {
                     "type": "send.msg",
                     "content": obj,
                 })
         except Exception as e:
             print("_______________________")
             print(e)
             self.send_json({"error": content})
Example #6
0
    def test_form_flacos(self) -> None:
        """Test form acls from flacos."""
        from pineboolib.qsa import qsa

        sys_type = systype.SysType()
        sys_type.installACL("tercera")
        acl = pnaccesscontrollists.PNAccessControlLists()
        acl.init()
        flapplication.aqApp.set_acl(acl)
        button_1 = qsa.from_project("formRecordflmodules").child(
            "botonExportar")  # r-
        button_2 = qsa.from_project("formRecordflmodules").child(
            "botonCargar")  # --
        self.assertTrue(button_2.isHidden())  # not visible
        self.assertFalse(button_2.isEnabled())  # not enabled
        self.assertFalse(button_1.isHidden())  # visible
        self.assertFalse(button_1.isEnabled())  # not enabled
Example #7
0
    def test_script_overload(self) -> None:
        """Test script overload loader."""
        from pineboolib.qsa import qsa
        from pineboolib import application

        self.assertEqual(qsa.from_project("sys").saluda(), "Hola!")
        action = application.PROJECT.actions["sys"]
        script = application.load_script.load_script("sys.qs", action)
        self.assertEqual(script.FormInternalObj().saluda(), "Hola!")
Example #8
0
    def init(self) -> None:
        """Init function."""
        settings = qsa.AQSettings()
        app_ = qsa.aqApp
        if not app_:
            return
        flfactppal = qsa.SysType().isLoadedModule("flfactppal")
        if flfactppal is True:
            try:
                codEjercicio = qsa.from_project("flfactppal").iface.pub_ejercicioActual()
            except Exception as e:
                logger.error(
                    "Module flfactppal was loaded but not able to execute <flfactppal.iface.pub_ejercicioActual()>"
                )
                logger.error(
                    "... this usually means that flfactppal has failed translation to python"
                )
                logger.exception(e)
                codEjercicio = None
            if codEjercicio:
                util = qsa.FLUtil()
                nombreEjercicio = util.sqlSelect(
                    u"ejercicios", u"nombre", qsa.ustr(u"codejercicio='", codEjercicio, u"'")
                )
                if qsa.AQUtil.sqlSelect(u"flsettings", u"valor", u"flkey='PosInfo'") == "True":
                    texto = ""
                    if nombreEjercicio:
                        texto = qsa.ustr(u"[ ", nombreEjercicio, u" ]")
                    texto = qsa.ustr(
                        texto,
                        u" [ ",
                        app_.db().driverNameToDriverAlias(app_.db().driverName()),
                        u" ] * [ ",
                        qsa.SysType().nameBD(),
                        u" ] * [ ",
                        qsa.SysType().nameUser(),
                        u" ] ",
                    )
                    app_.setCaptionMainWidget(texto)

                else:
                    if nombreEjercicio:
                        app_.setCaptionMainWidget(nombreEjercicio)

                oldApi = settings.readBoolEntry(u"application/oldApi")
                if not oldApi:
                    valor = util.readSettingEntry(u"ebcomportamiento/ebCallFunction")
                    if valor:
                        funcion = qsa.Function(valor)
                        try:
                            funcion()
                        except Exception:
                            qsa.debug(traceback.format_exc())

        if settings.readBoolEntry("ebcomportamiento/git_updates_enabled", False):
            qsa.sys.AQTimer.singleShot(2000, qsa.SysType.search_git_updates)
Example #9
0
    def main(self) -> None:
        """Entry function."""
        continuar = qsa.MessageBox.warning(
            qsa.util.translate(
                u"scripts",
                u"Antes de cargar un módulo asegúrese de tener una copia de seguridad de todos los datos,\n"
                +
                "y de que no hay ningun otro usuario conectado a la base de datos mientras se realiza la carga.\n\n¿Desea continuar?",
            ),
            qsa.MessageBox.Yes,
            qsa.MessageBox.No,
        )
        if continuar == qsa.MessageBox.No:
            return
        nombre_fichero = qsa.FileDialog.getOpenFileName(
            u"modfiles(*.mod)",
            qsa.util.translate(u"scripts", u"Elegir Fichero"))
        if nombre_fichero:
            fichero = qsa.File(nombre_fichero)
            if not qsa.from_project(
                    "formRecordflmodules").aceptarLicenciaDelModulo(
                        qsa.ustr(fichero.path, u"/")):
                qsa.MessageBox.critical(
                    qsa.util.translate(
                        u"scripts",
                        u"Imposible cargar el módulo.\nLicencia del módulo no aceptada."
                    ),
                    qsa.MessageBox.Ok,
                )
                return

            if qsa.from_project("formflreloadlast").cargarModulo(
                    nombre_fichero):
                app_ = qsa.aqApp
                if app_ is None:
                    return
                app_.reinit()
Example #10
0
 def traducirCadena(self, cadena: str, path: str, modulo: str) -> str:
     """Translate a string."""
     return qsa.from_project("formflreloadlast").traducirCadena(cadena, path, modulo)
Example #11
0
    def compararVersiones(self, v1: str, v2: str) -> int:
        """Compare two versions and return the highest."""

        return qsa.from_project("formflreloadlast").compararVersiones(v1, v2)
Example #12
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"), "")
Example #13
0
    def test_from_project_2(self) -> None:
        """Test from_project('sys')."""
        from pineboolib.qsa import qsa

        self.assertTrue(hasattr(qsa.from_project("sys"), "iface"))
Example #14
0
    def test_basic_5(self) -> None:
        """Basic tests 5."""
        from pineboolib.application.database import pnsqlcursor
        from pineboolib.qsa import qsa

        cursor_6 = pnsqlcursor.PNSqlCursor("flareas")
        cursor_6.setModeAccess(cursor_6.Insert)
        cursor_6.refreshBuffer()
        cursor_6.setValueBuffer("bloqueo", True)
        cursor_6.setValueBuffer("idarea", "T")
        cursor_6.setValueBuffer("descripcion", "Área de prueba T")
        self.assertTrue(cursor_6.commitBuffer())

        cursor_qry = pnsqlcursor.PNSqlCursor("fltest2")
        self.assertTrue(cursor_qry)
        self.assertFalse(cursor_qry.private_cursor.needUpdate())
        cursor = pnsqlcursor.PNSqlCursor("fltest")
        self.assertFalse(cursor.private_cursor.needUpdate())
        self.assertEqual(cursor.primaryKey(), "id")
        self.assertEqual(cursor.fieldType("id"), 100)
        cursor_qry.setNotGenerateds()
        cursor.sort()

        self.assertFalse(cursor.fieldType("id2"))
        for field in cursor:
            self.assertTrue(field)

        cursor_2 = pnsqlcursor.PNSqlCursor("flareas")
        cursor_2.update(False)

        cursor.changeConnection("dbAux")
        self.assertEqual(cursor.transactionsOpened(), [])
        cursor.db().doTransaction(cursor)
        self.assertEqual(cursor.transactionsOpened(), ["1"])
        cursor.db().doRollback(cursor)
        cursor.setForwardOnly(True)

        cursor_3 = pnsqlcursor.PNSqlCursor("flareas")
        cursor_3.select()
        self.assertTrue(cursor_3.first())
        cursor_3.chooseRecord(False)
        qsa.from_project("formRecordflareas").reject()
        cursor_3.select()
        cursor_3.first()

        cursor_3.browseRecord(False)
        qsa.from_project("formRecordflareas").reject()
        cursor_3.select()
        cursor_3.first()
        cursor_3.editRecord(False)
        qsa.from_project("formRecordflareas").reject()

        cursor_4 = pnsqlcursor.PNSqlCursor("flareas")
        cursor_4.select()
        cursor_4.first()
        self.assertTrue(cursor_4.selection_pk("T"))
        cursor_4.last()
        self.assertTrue(cursor_4.selection_pk("T"))
        cursor_4.last()
        self.assertFalse(cursor_4.selection_pk("J"))
        cursor_4.setNull("idarea")
        cursor_4.setModeAccess(cursor_4.Insert)
        cursor_4.refreshBuffer()
        self.assertFalse(cursor_4.checkIntegrity())
Example #15
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