def oficial_traducirCadena(self, cadena=None, path=None, modulo=None): util = qsatype.FLUtil() if cadena.find(u"QT_TRANSLATE_NOOP") == -1: return cadena cadena2 = cadena cadena = qsatype.QString(cadena).mid(41, len(cadena) - 43) nombreFichero = None try: nombreFichero = ustr(path, u"/translations/", modulo, u".", util.getIdioma(), u".ts") except Exception as e: e = traceback.format_exc() return cadena if not qsatype.File.exists(nombreFichero): return cadena fichero = qsatype.File(nombreFichero) fichero.open(qsatype.File.ReadOnly) f = fichero.read() xmlTranslations = qsatype.FLDomDocument() if xmlTranslations.setContent(f): nodeMess = xmlTranslations.elementsByTagName(u"message") i = 0 while_pass = True while i < len(nodeMess): if not while_pass: i += 1 while_pass = True continue while_pass = False if nodeMess.item(i).namedItem( u"source").toElement().text() == cadena: traduccion = nodeMess.item(i).namedItem( u"translation").toElement().text() if traduccion: cadena = traduccion i += 1 while_pass = True try: i < len(nodeMess) except Exception: break return cadena
def oficial_cargarModulo(self, nombreFichero=None): util = qsatype.FLUtil() if util.getOS() == u"WIN32": nombreFichero = nombreFichero[0:len(nombreFichero) - 1] if not isinstance(nombreFichero, str): nombreFichero = nombreFichero.data().decode("utf-8") fichero = qsatype.File(nombreFichero, "iso-8859-15") modulo = None descripcion = None area = None desArea = None version = None nombreIcono = None versionMinimaFL = None dependencias = qsatype.Array() fichero.open(qsatype.File.ReadOnly) f = fichero.read() xmlModule = qsatype.FLDomDocument() if xmlModule.setContent(f): nodeModule = xmlModule.namedItem(u"MODULE") if not nodeModule: MessageBox.critical( util.translate(u"scripts", u"Error en la carga del fichero xml .mod"), MessageBox.Ok, 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: aF = f.split(u"\n") modulo = self.iface.dameValor(aF[0]) descripcion = self.iface.dameValor(aF[1]) area = self.iface.dameValor(aF[2]) desArea = self.iface.dameValor(aF[3]) version = self.iface.dameValor(aF[4]) nombreIcono = self.iface.dameValor(aF[5]) if len(aF) > 6: versionMinimaFL = self.iface.dameValor(aF[6]) if len(aF) > 7: # DEBUG:: Argument 0 not understood # DEBUG:: <Value><Constant><regexbody><regexchar # arg00="LBRACKET"/><regexchar arg00="COMMA"/><regexchar # arg00="SEMI"/><regexchar # arg00="RBRACKET"/></regexbody></Constant></Value> dependencias = self.ifacedameValor(aF[7]).split(unknownarg) descripcion = self.iface.traducirCadena(descripcion, fichero.path, modulo) desArea = self.iface.traducirCadena(desArea, fichero.path, modulo) fichIcono = qsatype.File(ustr(fichero.path, u"/", nombreIcono)) fichIcono.open(qsatype.File.ReadOnly) icono = fichIcono.read() icono = clearXPM(icono) # DEBUG:: Argument 0 not understood # DEBUG:: <Value><Constant><regexbody><regexchar arg00="LBRACKET"/><regexchar arg00="ICONST:'0'"/><regexchar arg00="MINUS"/><regexchar arg00="ICONST:'9'"/><regexchar arg00="RBRACKET"/><regexchar arg00="PLUS"/><regexchar arg00="PERIOD"/><regexchar arg00="LBRACKET"/><regexchar arg00="ICONST:'0'"/><regexchar arg00="MINUS"/><regexchar arg00="ICONST:'9'"/><regexchar arg00="RBRACKET"/><regexchar arg00="PLUS"/></regexbody></Constant></Value> #versionSys = sys.version().match(unknownarg) # if self.iface.compararVersiones(versionSys, versionMinimaFL) == 2: # contVersion = MessageBox.warning(util.translate(u"scripts", u"Este módulo necesita la versión ") + versionMinimaFL + util.translate(u"scripts", u" o superior de la aplicación base,\nactualmente la versión instalada es la ") + sys.version() + util.translate(u"scripts", u".\nFacturaLUX puede fallar por esta causa.\n¿Desea continuar la carga?"), MessageBox.Yes, MessageBox.No) # if contVersion == MessageBox.No: # return if not util.sqlSelect(u"flareas", u"idarea", ustr(u"idarea = '", area, u"'")): if not util.sqlInsert(u"flareas", u"idarea,descripcion", ustr(area, u",", desArea)): MessageBox.warning( util.translate(u"scripts", u"Error al crear el área:\n") + area, MessageBox.Ok, MessageBox.NoButton) return False recargar = util.sqlSelect(u"flmodules", u"idmodulo", ustr(u"idmodulo = '", modulo, u"'")) curModulo = qsatype.FLSqlCursor(u"flmodules") if recargar: # WITH_START curModulo.select(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 = qsatype.FLSqlCursor(u"flmodules") curModulo.setMainFilter(ustr(u"idmodulo = '", modulo, u"'")) curModulo.editRecord() formRecordflmodules.cargarDeDisco(ustr(fichero.path, u"/"), False) formRecordflmodules.accept() sys.processEvents() return True
def main(self): continuar = MessageBox.warning( util.translate( u"scripts", u"Antes de cargar un módulo asegúrese de tener una copia de seguridad de todos los datos,\ny de que no hay ningun otro usuario conectado a la base de datos mientras se realiza la carga.\n\n¿Desea continuar?" ), MessageBox.Yes, MessageBox.No) if continuar == MessageBox.No: return nombreFichero = FileDialog.getOpenFileName( u"modfiles(*.mod)", util.translate(u"scripts", u"Elegir Fichero")) if nombreFichero: fichero = qsatype.File(nombreFichero) if not formRecordflmodules.aceptarLicenciaDelModulo( ustr(fichero.path, u"/")): MessageBox.critical( util.translate( u"scripts", u"Imposible cargar el módulo.\nLicencia del módulo no aceptada." ), MessageBox.Ok) return modulo = None descripcion = None area = None desArea = None version = None nombreIcono = None versionMinimaFL = None dependencias = qsatype.Array() fichero.open(qsatype.File.ReadOnly) f = fichero.read() xmlModule = qsatype.FLDomDocument() if xmlModule.setContent(f): nodeModule = xmlModule.namedItem(u"MODULE") if not nodeModule: MessageBox.critical( util.translate( u"scripts", u"Error en la carga del fichero xml .mod"), MessageBox.Ok, 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: aF = f.split(u"\n") modulo = dameValor(aF[0]) descripcion = dameValor(aF[1]) area = dameValor(aF[2]) desArea = dameValor(aF[3]) version = dameValor(aF[4]) nombreIcono = dameValor(aF[5]) if len(aF) > 6: versionMinimaFL = dameValor(aF[6]) if len(aF) > 7: # DEBUG:: Argument 0 not understood # DEBUG:: <Value><Constant><regexbody><regexchar arg00="LBRACKET"/><regexchar arg00="COMMA"/><regexchar arg00="SEMI"/><regexchar arg00="RBRACKET"/></regexbody></Constant></Value> dependencias = dameValor(aF[7]).split(unknownarg) descripcion = traducirCadena(descripcion, fichero.path, modulo) desArea = traducirCadena(desArea, fichero.path, modulo) fichIcono = qsatype.File(ustr(fichero.path, u"/", nombreIcono)) fichIcono.open(qsatype.File.ReadOnly) icono = fichIcono.read() # DEBUG:: Argument 0 not understood # DEBUG:: <Value><Constant><regexbody><regexchar arg00="LBRACKET"/><regexchar arg00="ICONST:'0'"/><regexchar arg00="MINUS"/><regexchar arg00="ICONST:'9'"/><regexchar arg00="RBRACKET"/><regexchar arg00="PLUS"/><regexchar arg00="PERIOD"/><regexchar arg00="LBRACKET"/><regexchar arg00="ICONST:'0'"/><regexchar arg00="MINUS"/><regexchar arg00="ICONST:'9'"/><regexchar arg00="RBRACKET"/><regexchar arg00="PLUS"/></regexbody></Constant></Value> versionSys = sys.version().match(unknownarg) if compararVersiones(versionSys, versionMinimaFL) == 2: contVersion = MessageBox.warning( util.translate(u"scripts", u"Este módulo necesita la versión ") + versionMinimaFL + util.translate( u"scripts", u" o superior de la aplicación base,\nactualmente la versión instalada es la " ) + sys.version() + util.translate( u"scripts", u".\nFacturaLUX puede fallar por esta causa.\n¿Desea continuar la carga?" ), MessageBox.Yes, MessageBox.No) if contVersion == MessageBox.No: return if evaluarDependencias(dependencias) == False: return if not valorPorClave(u"flareas", u"idarea", ustr(u"idarea = '", area, u"'")): crearArea = MessageBox.warning( util.translate(u"scripts", u"El área con el identificador ") + area + util.translate(u"scripts", u" no existe. ¿Desea crearla?"), MessageBox.Yes, MessageBox.No) if crearArea == MessageBox.No: return dialogo = qsatype.Dialog() dialogo.width = 400 dialogo.caption = ustr( util.translate(u"scripts", u"Crear área "), area, u":") dialogo.okButtonText = util.translate(u"scripts", u"Aceptar") dialogo.cancelButtonText = util.translate( u"scripts", u"Cancelar") leDesArea = qsatype.LineEdit() leDesArea.text = desArea leDesArea.label = util.translate(u"scripts", u"Descripción: ") dialogo.add(leDesArea) if dialogo.exec_(): curArea = qsatype.FLSqlCursor(u"flareas") curArea.setModeAccess(curArea.Insert) curArea.refreshBuffer() curArea.setValueBuffer(u"idarea", area) curArea.setValueBuffer(u"descripcion", leDesArea.text) curArea.commitBuffer() else: return recargar = None if valorPorClave(u"flmodules", u"idmodulo", ustr(u"idmodulo = '", modulo, u"'")): recargar = MessageBox.warning( util.translate(u"scripts", u"El módulo ") + modulo + util.translate(u"scripts", u" ya existe. ¿Desea recargarlo?"), MessageBox.Yes, MessageBox.No) if recargar == MessageBox.No: return curModulo = qsatype.FLSqlCursor(u"flmodules") if recargar == MessageBox.Yes: #WITH_START curModulo.select(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 = qsatype.FLSqlCursor(u"flmodules") curModulo.setMainFilter(ustr(u"idmodulo = '", modulo, u"'")) curModulo.editRecord() formRecordflmodules.cargarDeDisco(ustr(fichero.path, u"/"), False) formRecordflmodules.accept() setting = ustr(u"scripts/sys/modLastModule_", sys.nameBD()) util.writeSettingEntry(setting, nombreFichero)