getFileNames corrupts file names that use "special chars"

Bug #1209515 reported by Phill
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenLP
Status tracked in Trunk
2.0
Fix Released
Medium
Phill
Trunk
Fix Released
Medium
Phill

Bug Description

This is a little bit of a strange one. I have written a little script which demonstrates this (I'll include it when I get home).

Here's the issue:

Use QFileDialog.getFileNames() to select a single file with a special char in its name (a '#' will do it) and it returns the file name & path correctly. Ie selecting a file called "#123.xml" returns a list with one item "#123.xml"

However, use QFileDialog.getFileNames() to select multiple files with at lease one file with special char in its name (a '#' will do it) and it returns the file name & path incorrectly. Ie selecting a file called "#123.xml" and a file called "abc.xml" returns a list with two items "%23123.xml" & "abc.xml" (Note the # has been changed in to a %23. Possible url encoding?)

When we come to open the file, Python cannot find the file "%23123.xml" because it does not exist.

This seams to be a Qt bug (I've done a few searches, but found nothing) but we could at least make some effort to see if the file actually exists before trying to open it!

Reported here: http://support.openlp.org/issues/2056
and here: http://support.openlp.org/issues/1964

Related branches

Phill (phill-ridout)
Changed in openlp:
status: New → Confirmed
importance: Undecided → Medium
tags: added: support-system
Revision history for this message
Phill (phill-ridout) wrote :

See: http://pastebin.com/QcmkNcSk for example code

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

I would suggest we try to "decode" each of the files.

Revision history for this message
Phill (phill-ridout) wrote :
Revision history for this message
mahfiaz (mahfiaz) wrote :

Philip, it seems to work now when using the given test script:

[PyQt4.QtCore.QString(u'/home/user/#123.txt'), PyQt4.QtCore.QString(u'/home/user/diff')]

Revision history for this message
Phill (phill-ridout) wrote :

mahfiaz,
Thanks for that, but could you test the paste bin script linked to in my email (https://lists.openlp.io/pipermail/openlp-dev/2017-June/000273.html) please? Its PyQt5!

Also which platform are you on?

Revision history for this message
Jasper van Nieuwenhuizen (jasperge) wrote :

I just tested on Fedora 25 (gnome shell) with python 3 and PyQt5 installed with the package manager and also on OS X El Capitan with python 3 and PyQt5 installed with macPorts. On both systems it works just fine.

Output:
`[['/home/jasperge/openlp_bug/#1234.xml', '/home/jasperge/openlp_bug/abc.xml'], 'All Files (*)']`

Revision history for this message
David Wales (daviewales) wrote :

Tested on OS X El Capitan with python 3, and PyQt 5 installed using brew.

Works perfectly.

Revision history for this message
Phill (phill-ridout) wrote : Re: [Bug 1209515] Re: getFileNames corrupts file names that use "special chars"

I've tested on Ubuntu 17.04 (Unity) and Windows 7.

Anybody with KDE, just to round up testing?

On Thu, 15 Jun 2017, 02:36 David Wales, <email address hidden> wrote:

> Tested on OS X El Capitan with python 3, and PyQt 5 installed using
> brew.
>
> Works perfectly.
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1209515
>
> Title:
> getFileNames corrupts file names that use "special chars"
>
> Status in OpenLP:
> Fix Released
> Status in OpenLP 2.0 series:
> Fix Released
> Status in OpenLP trunk series:
> Fix Released
>
> Bug description:
> This is a little bit of a strange one. I have written a little script
> which demonstrates this (I'll include it when I get home).
>
>
> Here's the issue:
>
> Use QFileDialog.getFileNames() to select a single file with a special
> char in its name (a '#' will do it) and it returns the file name &
> path correctly. Ie selecting a file called "#123.xml" returns a list
> with one item "#123.xml"
>
> However, use QFileDialog.getFileNames() to select multiple files with
> at lease one file with special char in its name (a '#' will do it) and
> it returns the file name & path incorrectly. Ie selecting a file
> called "#123.xml" and a file called "abc.xml" returns a list with two
> items "%23123.xml" & "abc.xml" (Note the # has been changed in to a
> %23. Possible url encoding?)
>
> When we come to open the file, Python cannot find the file
> "%23123.xml" because it does not exist.
>
> This seams to be a Qt bug (I've done a few searches, but found
> nothing) but we could at least make some effort to see if the file
> actually exists before trying to open it!
>
> Reported here: http://support.openlp.org/issues/2056
> and here: http://support.openlp.org/issues/1964
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/openlp/+bug/1209515/+subscriptions
>

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

I tested it on KDE, works perfectly.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.