public inbox for [email protected]
help / color / mirror / Atom feedFrom: Rahul Soshte <[email protected]>
To: Murtuza Zabuawala <[email protected]>
Cc: Joao De Almeida Pereira <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: [pgAdmin4][Patch][Feature #1998] Appends .sql if extension not given when using 'save' or 'save as' feature
Date: Sat, 14 Apr 2018 16:46:08 +0530
Message-ID: <CAKyzeV3UzJe-SvykiG-kK701GpHHkG=GGVL_FBRGwSpvNK8nqA@mail.gmail.com> (raw)
In-Reply-To: <CAKKotZR9JEQm8rA21Cx-buLQUxKXQixoTY8wWfu=bov0pPXAiw@mail.gmail.com>
References: <CAKyzeV1fMB6rPMF+LCMY7B6_2-j7DZfmh307dBFemtR=4taX6g@mail.gmail.com>
<CAE+jjam7ks2X=x5WoEp7WEn4tLNzw8Gzu+Mqx1sUm0OUu4Md-A@mail.gmail.com>
<CAKKotZR_c5xJ+U-4bYQJ0DJHvDPxPK1aWOi7b7APFhNzpr1F9w@mail.gmail.com>
<CAKyzeV0yp3-W2-=aBW38bg5zqEf44JqTnfPAtxra6ZwgwArHkw@mail.gmail.com>
<CAKKotZQwA=x1COBZ=GhC1inE1aOk43Y4sjyKBLq4tkUz7H8NiA@mail.gmail.com>
<CAKKotZSCFBnwZxwGH3VKUnNYtXJFjqBePxt3LBCs=8PPYBT3cw@mail.gmail.com>
<CAKyzeV1eoSyT-YWac=OA_kjA1aDtV+1v3+fYop+WhBAXLwq8+g@mail.gmail.com>
<CAKKotZRiEnSjtwDNx3XAW-MsjKCXsut+k_CJS0kjXij_9jeE3g@mail.gmail.com>
<CAKyzeV3-6yVGRj0i8ZU-4Y-ysgfHk3sRiJm4cTwi=KonMJNgrQ@mail.gmail.com>
<CAKKotZRcx4ZcQ2+gfa3zLf4nH12DHCbZOi2P+iM3bewP_38hGA@mail.gmail.com>
<CAKyzeV3ciT_L9OoOG8XcxQPNsCokvwgduhGM0Cha0FtXW7damA@mail.gmail.com>
<CAKKotZR9JEQm8rA21Cx-buLQUxKXQixoTY8wWfu=bov0pPXAiw@mail.gmail.com>
Hi,
I have been partially able to solve the problem as you can see in the
image. When I select sql in format combobox then only the .sql extension is
added.
But another issue has arisen. Once the file is saved and now When I change
the text in the CodeMirror , the save button is enabled and then when I
click on it , a error message pops.The problem is whenever I try to save a
file for the first time the code works ,but the 2nd time
I try to save it,the code faulters.
Error message is as follows:
Traceback (most recent call last):
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1985, in wsgi_app
response = self.handle_exception(e)
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1982, in wsgi_app
response = self.full_dispach_request()
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File
"/var/www/flask/pgadmin4/lib/python2.7/site-packages/flask_login.py", line
792, in decorated_view
return func(*args, **kwargs)
File
"/var/www/flask/pgadmin4/pgadmin4/web/pgadmin/tools/sqleditor/__init__.py",
line 1314, in save_file
'file_path': file_path
File "/var/www/flask/pgadmin4/pgadmin4/web/pgadmin/utils/ajax.py", line
61, in make_json_response
separators=(',', ':')),
File
"/var/www/flask/pgadmin4/lib/python2.7/site-packages/simplejson/__init__.py",
line 399, in dumps
**kw).encode(obj)
File
"/var/www/flask/pgadmin4/lib/python2.7/site-packages/simplejson/encoder.py",
line 291, in encode
chunks = self.iterencode(o, _one_shot=True)
File
"/var/www/flask/pgadmin4/lib/python2.7/site-packages/simplejson/encoder.py",
line 373, in iterencode
return _iterencode(o, 0)
File "/var/www/flask/pgadmin4/pgadmin4/web/pgadmin/utils/ajax.py", line
30, in default
return json.JSONEncoder.default(self, obj)
File
"/var/www/flask/pgadmin4/lib/python2.7/site-packages/simplejson/encoder.py",
line 268, in default
o.__class__.__name__)
TypeError: Object of type Response is not JSON serializable
I pass an array which contains the file_name and file_type in
/pgadmin/misc/file_manager/static/js/file_manager.js
Also I have done similar changes around line 678.
Also in web/pgadmin/tools/sqleditor/__init__.py I have made the folllowing
changes
Also I have attached my
web/pgadmin/tools/sqleditor/utils/save_file_query_to_file_utils.py
Attachments:
[image/png] image.png (24.9K, 3-image.png)
download | view image
[image/png] image.png (62.4K, 4-image.png)
download | view image
[image/png] image.png (62.9K, 5-image.png)
download | view image
[image/png] image.png (29.1K, 6-image.png)
download | view image
[text/x-python] save_query_to_file_utils.py (2.2K, 7-save_query_to_file_utils.py)
download | inline:
import os
from pgadmin.misc.file_manager import Filemanager
from pgadmin.utils import get_storage_directory
from pgadmin.utils.ajax import make_json_response, bad_request, \
success_return, internal_server_error, unauthorized
try:
from urllib import unquote
except ImportError:
from urllib.parse import unquote
def save_query_to_file(file_data):
# retrieve storage directory path
storage_manager_path = get_storage_directory()
# generate full path of file
file_path = unquote(file_data['file_name'])
if hasattr(str, 'decode'):
file_path = unquote(
file_data['file_name']
).encode('utf-8').decode('utf-8')
file_type = file_data['file_type']
#file_type=file_data['file_type']
if file_type == 'sql':
if not file_path.endswith('.sql'):
file_path = file_path + ".sql"
try:
Filemanager.check_access_permission(storage_manager_path, file_path)
except Exception as e:
return internal_server_error(errormsg=str(e))
# lstrip() returns a copy of the string
# in which all chars have been stripped
# from the beginning of the string (default whitespace characters).
if storage_manager_path is not None:
file_path = os.path.join(
storage_manager_path,
file_path.lstrip('/').lstrip('\\')
)
if hasattr(str, 'decode'):
file_content = file_data['file_content']
else:
file_content = file_data['file_content'].encode()
# write to file
try:
with open(file_path, 'wb+') as output_file:
if hasattr(str, 'decode'):
output_file.write(file_content.encode('utf-8'))
return file_path
else:
output_file.write(file_content)
return file_path
except IOError as e:
if e.strerror == 'Permission denied':
err_msg = "Error: {0}".format(e.strerror)
else:
err_msg = "Error: {0}".format(e.strerror)
return internal_server_error(errormsg=err_msg)
except Exception as e:
err_msg = "Error: {0}".format(e.strerror)
return internal_server_error(errormsg=err_msg)
view thread (20+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: [pgAdmin4][Patch][Feature #1998] Appends .sql if extension not given when using 'save' or 'save as' feature
In-Reply-To: <CAKyzeV3UzJe-SvykiG-kK701GpHHkG=GGVL_FBRGwSpvNK8nqA@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox