Pagina 1 di 1

[RISOLTO] Accenti e PyScripter

Pubblicato: 15 novembre 2019 - 11:11
di marcolefo
Buongiorno,

Stiamo riscontrando un problema con gli accenti.
In effetti, non vengono riconosciuti correttamente quando si utilizza PyScripter. Con la console Python non ci sono problemi.

Nella console:

Codice: Seleziona tutto

Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> var = u"éè"
>>> type(var)
<type 'unicode'>
>>> print var
éè
>>>
Nel file setup.py tramite PyScripter:

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    var = u"éè"
    print type(var)
    print var
E durante la disinstallazione:

Codice: Seleziona tutto

*** Console de processus distant Réinitialisée *** 
>>> 
Ligne de Commande : install "C:\TEMP\test-accents_18.7.2-5\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Installing WAPT files C:\TEMP\test-accents_18.7.2-5
<type 'unicode'>
‚Š

Results :

 === install packages ===
  C:\TEMP\test-accents_18.7.2-5 | test-accents (18.7.2-5)
[Battaglia brutta] È abbastanza da farti perdere il tuo UTF-8 [/Battaglia brutta]

Il file setup.py viene salvato in UTF-8 (No BOM) / UNIX.

Capisci da dove potrebbe derivare il problema?

Re: Accenti e PyScripter

Pubblicato: 15 novembre 2019 - 12:27
di htouvet
Buongiorno,
È un vecchio problema... che ormai non ci sconvolge più, ci siamo abituati ;)

Infatti, l'output delle istruzioni print viene reindirizzato per memorizzare il risultato nel database di log Wapt o nella console.

Questo reindirizzamento è gestito in waptutils.py dalla classe LogOutput.

Una soluzione è quella di sostituire (intorno alla riga 1455)

Codice: Seleziona tutto

    def write(self,txt):
        with self.lock:
            txt = ensure_unicode(txt)
            self.output.append(txt)
            if self.update_status_hook and threading.current_thread() == self.threadid and (time.time()-self.last_update_time>=self.update_buffer_time):
                # wait update_buffer_time before sending data to update_hook to avoid high frequency I/O
                self._send_tail_to_updatehook()

            if self.console:
                try:
                    self.console.write(txt)
                except:
                    self.console.write(repr(txt))

da (self.console.write da self.console.stream.write):

Codice: Seleziona tutto

    def write(self,txt):
        with self.lock:
            txt = ensure_unicode(txt)
            self.output.append(txt)
            if self.update_status_hook and threading.current_thread() == self.threadid and (time.time()-self.last_update_time>=self.update_buffer_time):
                # wait update_buffer_time before sending data to update_hook to avoid high frequency I/O
                self._send_tail_to_updatehook()

            if self.console:
                try:
                    self.console.stream.write(txt)
                except:
                    self.console.write(repr(txt))

Re: Accenti e PyScripter

Pubblicato: 15 novembre 2019 - 13:06
di marcolefo
GRAZIE :)

Questo risolve il problema...

Una domanda veloce. Se il problema è noto da tempo, perché non risolverlo?

Il codice che ho fornito era un test. In realtà, vogliamo eliminare un file se esiste.

Quindi il codice di partenza è piuttosto

Codice: Seleziona tutto

# coding: utf-8
from setuphelpers import *

uninstallkey = []

def install():
    licencemanagerfile = ur'C:\TEMP\test_éè\file.txt'

    if (isfile(licencemanagerfile)):
        remove_file(licencemanagerfile)
Ora funziona perfettamente, con la modifica proposta.
Ma dovrebbe essere applicato a tutti i clienti, non è vero?

Re: Accenti e PyScripter

Pubblicato: 15 novembre 2019 - 13:16
di htouvet
Una domanda veloce. Se il problema è noto da tempo, perché non risolverlo?
Perché nessuno si era soffermato su questo e abbiamo trovato la soluzione appena prima di risponderti...

La correzione arriverà nella prossima versione di Wapt... ovviamente.

Re: Accenti e PyScripter

Pubblicato: 18 novembre 2019 - 15:20
di marcolefo
Ottimo! Grazie :)

Re: [RISOLTO] Accenti e PyScripter

Pubblicato: 18 novembre 2019 - 15:40
di htouvet
Esiste una build che include questa correzione per gli accenti:

https://wapt.tranquil.it/wapt/nightly/w ... -1c00cefd/

Changelog:

WAPT-1.7.4-6237 (2019-11-18) (non rilasciato)
----------------------------

(hash 1c00cefd)

* waptserver: aggiunta correzione per aggirare il bug di flask-socketio https://github.com/miguelgrinberg/Flask ... ssues/1054 (AttributeError: l'oggetto 'Request' non ha l'attributo 'sid')

* waptserver: assicurarsi che il db sia chiuso prima di provare ad aprirlo (per la modalità di sviluppo)

* waptserver: aggiunta di messaggi di log quando viene inviato un messaggio di eccezione all'utente.

WAPT-1.7.4-6234 (2019-11-14) (non rilasciato)
----------------------------

(hash ad237eee)

* waptserver: aggiornamento del modulo Python peewee DB alla versione 3.11.2. Gestione esplicita delle connessioni al DB per tracciare potenziali connessioni inattive (che potrebbero portare all'esaurimento del pool del DB)

* waptwua: Gestione delle eccezioni durante l'invio di WU alla cache di Windows per consentire l'installazione di aggiornamenti validi anche se alcuni non possono essere verificati correttamente.


WAPT-1.7.4-6232 (2019-10-31)
----------------------------

(hash2090b0e6d52cecfb04f8fa4c279e7c0a0252d6e2

* wapt-get session-setupp: correzione della stampa errata in session_setup. regressione introdotta in b30b1b1a550a4 (1.7.4.6229)

WAPT-1.7.4-6230 (2019-10-23) (non rilasciato)
----------------------------
(hash 391d382f)

* restituisce la versione e l'edizione dell'hash git del server in ping e usage_statistics

* assicurarsi di avere server_uuid su windows durante l'installazione

* correzione per .git parzialmente incluso nel manifesto del pacchetto compilato

Re: [RISOLTO] Accenti e PyScripter

Pubblicato: 27 novembre 2019 - 17:01
di Patrice_minagri
Salve,

se ho capito bene, questo implica applicare la correzione a tutti i computer su cui è installato l'agente WAPT? Ovvero, sostituire il file waptutils.py originale con la sua versione corretta (tramite un altro pacchetto, GPO, ecc.)?