Hi Dave, Please find the attached patch to fix the issue. I have fixed the issue looking at the error you got as I can not reproduce the issue on Python 2.7 or Python 3.5.
Thanks, Khushboo On Mon, Nov 20, 2017 at 8:05 PM, Dave Page <dp...@pgadmin.org> wrote: > > > On Mon, Nov 20, 2017 at 2:20 PM, Khushboo Vashi < > khushboo.va...@enterprisedb.com> wrote: > >> >> >> On 20 Nov 2017 19:45, "Dave Page" <dp...@pgadmin.org> wrote: >> >> Though whilst it worked fine when I was testing, I now get the following. >> Khushboo - can you investigate please? >> >> Exception in thread Thread-96: >> >> Traceback (most recent call last): >> >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", >> line 810, in __bootstrap_inner >> >> self.run() >> >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", >> line 763, in run >> >> self.__target(*self.__args, **self.__kwargs) >> >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", >> line 602, in process_request_thread >> >> self.handle_error(request, client_address) >> >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", >> line 599, in process_request_thread >> >> self.finish_request(request, client_address) >> >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", >> line 334, in finish_request >> >> self.RequestHandlerClass(request, client_address, self) >> >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", >> line 655, in __init__ >> >> self.handle() >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", >> line 200, in handle >> >> rv = BaseHTTPRequestHandler.handle(self) >> >> File "/System/Library/Frameworks/Python.framework/Versions/2.7/li >> b/python2.7/BaseHTTPServer.py", line 340, in handle >> >> self.handle_one_request() >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", >> line 235, in handle_one_request >> >> return self.run_wsgi() >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", >> line 177, in run_wsgi >> >> execute(self.server.app) >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", >> line 167, in execute >> >> for data in application_iter: >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/wsgi.py", >> line 691, in __next__ >> >> return self._next() >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/wrappers.py", >> line 81, in _iter_encoded >> >> for item in iterable: >> >> File >> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/__init__.py", >> line 828, in gen >> >> quotechar=quote_char >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/backports/csv.py", >> line 670, in __init__ >> >> self.writer = writer(f, dialect, *args, **kwds) >> >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/backports/csv.py", >> line 185, in __init__ >> >> raise TypeError(*e.args) >> >> TypeError: "delimiter" must be string, not bytes >> >> Please share your CSV Output settings. >> > > Screenshot attached. > > > >> >> On Mon, Nov 20, 2017 at 1:51 PM, Dave Page <dp...@pgadmin.org> wrote: >> >>> Thanks, applied. >>> >>> On Mon, Nov 20, 2017 at 5:18 AM, Khushboo Vashi < >>> khushboo.va...@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find the attached updated patch. >>>> >>>> >>>> On Thu, Nov 16, 2017 at 7:42 PM, Dave Page <dp...@pgadmin.org> wrote: >>>> >>>>> Hi >>>>> >>>>> On Thu, Nov 16, 2017 at 10:01 AM, Khushboo Vashi < >>>>> khushboo.va...@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please find the attached patch for RM #2781 : New option to set the >>>>>> quotation mark for copying to clipboard. >>>>>> >>>>>> This patch includes: >>>>>> >>>>>> - Provide options in preferences to control the CSV output which >>>>>> includes copy to clipboard and download as CSV features in Query Tool >>>>>> - Modified related jasmine tests >>>>>> - Modified related feature tests >>>>>> >>>>> >>>>> Thanks. At first glance, I see a few issues with this patch: >>>>> >>>>> - I can type into the combo boxes in the preferences, but only to >>>>> search. That means (for example) that the only quote character I can use >>>>> is >>>>> ". I can't use anything else as a might want. The same applies to the >>>>> field >>>>> separator. >>>>> >>>> >>>>> >>>> Provided provision to add user defined field separator and quote >>>> character. >>>> >>>> - I can click the x to clear the options in the combo boxes, but then >>>>> the settings can be accepted and stored. For the separator and quote char, >>>>> I assume they just become blank, however the quoting method makes no sense >>>>> to be unspecified. >>>>> >>>>> Fixed. User can not clear the combo-boxes. >>>> >>>> - There don't seem to be any documentation updates. >>>>> >>>> The documents of SQL Editor and Preferences are updated. >>>> >>>>> >>>>> - The CSV Quoting options appear to apply to copying from the grid, >>>>> but they should apply to saving results as CSV. >>>>> >>>>> - The Result Copy quoting options (which should apply to copied data) >>>>> are missing altogether. >>>>> >>>>> To be clear, there should be 6 new config options, 3 of which apply to >>>>> data when copied from the grid, and the other 3 which apply when saving >>>>> data as CSV. Please see the original RM case in which I detailed what the >>>>> settings should be and what they should do. >>>>> >>>> >>>> Provided 2 set of options (one set consists of 3 options); one for CSV >>>> output and another for Results grid. >>>> >>>> >>>>> >>>> Thanks. >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>>> Thanks, >>>> Khushboo >>>> >>>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> >> >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
diff --git a/web/pgadmin/utils/driver/psycopg2/__init__.py b/web/pgadmin/utils/driver/psycopg2/__init__.py index da44738..f229b4d 100644 --- a/web/pgadmin/utils/driver/psycopg2/__init__.py +++ b/web/pgadmin/utils/driver/psycopg2/__init__.py @@ -822,6 +822,12 @@ WHERE else: quote = csv.QUOTE_NONE + if hasattr(str, 'decode') and type(field_separator) != str: + try: + field_separator = field_separator.decode('utf-8') + except: + pass + csv_writer = csv.DictWriter( res_io, fieldnames=header, delimiter=field_separator, quoting=quote,