[GeoNode-users] Encoding error on upload zipped shapefile on centos 7

Francesco Bartoli xbartolone at gmail.com
Mon Jul 17 01:16:48 PDT 2017


Just for the record, the error described below is from a false cause. Despite the message from the traceback which confused me the problem was due to a lack of communication with postgresql. The missing configuration was the md5 authentication rather than ident

host    all             all             127.0.0.1/32           md5

has been added to the PR.

Hope this helps somebody for the future.

Francesco

Il giorno 12/lug/2017, alle ore 22:34, francesco bartoli <xbartolone at gmail.com> ha scritto:

> All,
> 
> I'm facing a common error while uploading an archived shapefile. The file is the commonly used ne_50m_admin_0_countries.
> The error is well known also in django documentation and due to non ascii characters:
> 
> https://docs.djangoproject.com/en/1.8/ref/unicode/#files
> 
> Unfortunately the recommended solution from the django docs for deployments with apache and mod_wsgi 
> 
> https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/modwsgi/
> 
> doesn't solve the issue in centos 7. The box has been created while reviewing the installation on that environment as per this PR https://github.com/GeoNode/geonode/pull/3168
> 
> It can be easily reproduced by adding this view and route within geonode app:
> 
> #my_views.py
> import locale
> import sys
> from django.http import HttpResponse
> 
> def view_locale(request):
>    loc_info = "getlocale: " + str(locale.getlocale()) + \
>        "<br/>getdefaultlocale(): " + str(locale.getdefaultlocale()) + \
>        "<br/>fs_encoding: " + str(sys.getfilesystemencoding()) + \
>        "<br/>sys default encoding: " + str(sys.getdefaultencoding())
>    return HttpResponse(loc_info)
> 
> #urls.py
> ...
> url(r'^locale/$', 'geonode.my_views.view_locale'),
> ...
> 
> Result is always this:
> getlocale: (None, None)
> getdefaultlocale(): ('en_US', 'UTF-8')
> fs_encoding: UTF-8
> sys default encoding: ascii
> 
> Setting the following variables in /etc/sysconfig/httpd and restart as suggested
> 
> export LANG="en_US.UTF-8"
> export LC_ALL="en_US.UTF-8"
> 
> does not change anything in particular the system default encoding which is the reason why the upload is failing.
> 
> Adding such variables to WSGIDaemonProcess:
> 
> WSGIDaemonProcess geonode lang='en_US.UTF-8' locale='en_US.UTF-8' python-path=/home/geonode/geonode:/home/geonode/.venvs/geonode/lib/python2.7/site-packages user=apache threads=15 processes=2
> 
> just affects the getlocale() function while default encoding is unaltered. The only way to affect it would be to add and enforce it:
> 
> import sys
> reload(sys)
> sys.setdefaultencoding('utf-8')
> 
> but this is strongly not recommended and discouraged. More here https://anonbadger.wordpress.com/2015/06/16/why-sys-setdefaultencoding-will-break-code/.
> 
> Did anyone already encounter this kind of error? Actually I don't have a solution but for sure it's not a bug in geonode code base despite I did not figure out the real source.
> 
> Any help and idea, how to overcome it, is welcome :)
> 
> thx
> Francesco
> 
> Sent from Nylas Mail, the best free email app for work

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geonode-users/attachments/20170717/98430e30/attachment.html>


More information about the geonode-users mailing list