<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">A W E S O M E ~ T R A V I S !<div class=""><br class=""></div><div class="">Many many thanks!</div><div class=""><br class=""></div><div class="">( </div><div class="">Have you already found a solution for the celery path problem? If I remember</div><div class="">corectly there have been some updates on celery-beat (maybe celery as well) which might</div><div class="">cause issues with docker ...</div><div class="">)</div><div class=""><br class=""></div><div class="">– toni</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class=""><br class=""><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Von: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Travis Brundage <<a href="mailto:travislbrundage@gmail.com" class="">travislbrundage@gmail.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Betreff: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">[GeoNode-devel] GNIP-64 Status and Plan</b><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Datum: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">5. November 2019 um 05:22:59 MEZ<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">An: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><a href="mailto:geonode-devel@lists.osgeo.org" class="">geonode-devel@lists.osgeo.org</a><br class=""></span></div><br class=""><br class=""><div dir="ltr" class=""><div dir="ltr" class=""><div class="">Hi all,<br class=""></div><div class=""><br class=""></div><div class="">Just wanted to write a status report with regards to GNIP-64. I am excited to hear that help is on the way too :)</div><div class=""><br class=""></div><div class="">Most of what Coop wrote in the GNIP is still accurate. Broadly speaking, I see this broken down into the following steps:</div><div class="">1. Python library analysis</div><div class="">2. Test suite improvements</div><div class="">3a. Python library updates</div><div class="">3b. GeoNode codebase update</div><div class="">3c. django-osgeo-importer update</div><div class="">4. Testing and release</div><div class="">5. Repeat for Django 2</div><div class=""><br class=""></div><div class="">Coop had already started a spreadsheet detailing the libraries GeoNode uses and their Python 3 compatibility. I have updated this recently. You can find it here: <a href="https://docs.google.com/spreadsheets/d/1buUuIeGPL8zfv5xFotfGMpxHt2i8njoCEh4Y4kna3rY/edit#gid=0" class="">https://docs.google.com/spreadsheets/d/1buUuIeGPL8zfv5xFotfGMpxHt2i8njoCEh4Y4kna3rY/edit#gid=0</a></div><div class=""><br class=""></div><div class="">From this you can see a few categories.</div><div class="">1. Some libraries are completely outdated and inactive and require removal and if needed, replacement.</div><div class="">2. Some libraries do not yet have Python 3 compatibility, but we could update them for the community. Otherwise, we’ll need to remove and possibly replace them.</div><div class="">3. Some libraries do not yet have Python 3 compatibility, but the community is working on it or their github still has activity. We could save these for last or offer to help their community upgrade.</div><div class="">4. Some libraries do not officially support Python 3 or 3.7 specifically, but seem to build fine as is in a Python 3.7 environment.</div><div class="">5. Some libraries are GeoNode community’s. :)</div><div class="">6. Some libraries have newer versions that are Python 3+ compatible, but not backwards compatible with Python 2.7. These need to be delayed until GeoNode core is updated.</div><div class="">7. The majority thankfully - some libraries are fully Python 2.7 and 3.7+ compatible.</div><div class=""><br class=""></div><div class="">Next is improving GeoNode’s test suite. I don’t have a precise goal here, but want to improve the speed and coverage of GeoNode’s tests to prepare for the Python 3 upgrade, so we can more easily identify any functionality that gets broken. I have already run into a few issues and made another thread about this.</div><div class=""><br class=""></div><div class="">For upgrading the codebase, I planned to branch off the next release, 2.10.1.</div><div class=""><br class=""></div><div class="">From what I have researched, I don’t know if there’s a “correct” way to update a codebase to Python 3, but seems like there are a few strategies. My plan was to create a new branch and brute force the 2to3.py script, and hopefully with good test coverage, get a useful coverage report to see what has broken.</div><div class=""><br class=""></div><div class="">Possibly that is too much and won’t prove fruitful, in which case I would start a new branch and do it app by app instead. I have not tested 2to3.py in the wild before, so I don’t know how helpful it is, but from what I’ve read it is a good starting point usually.</div><div class=""><br class=""></div><div class="">As a side note, it will be helpful to configure your IDE of choice with a Python 3 interpreter. I use PyCharm, so some instructions for that here: <a href="https://www.jetbrains.com/help/pycharm/configuring-python-interpreter.html" class="">https://www.jetbrains.com/help/pycharm/configuring-python-interpreter.html</a></div><div class=""><br class=""></div><div class="">In general my plan of attack is:</div><div class="">1. Run Python 2to3 script</div><div class="">2. Clean up anything breaking GeoNode build entirely</div><div class="">3. Run tests for coverage report to see what breaks</div><div class="">4. Clean up until tests pass</div><div class="">5. Check visually in GeoNode that the app seems to function</div><div class="">6. Clean up until interactions work as expected</div><div class=""><br class=""></div><div class="">Simultaneously we’ll need to update the remaining Python libraries. This will be a bit tricky as some provide Python 3 compatibility on later versions, but not with Python 2 compatibility. Also, some still do not have Python 3 compatibility at all, so the work is on us or drop those libraries.</div><div class=""><br class=""></div><div class="">We'll also need to make sure GeoNode's libraries are updated, and it was planned to do django-osgeo-importer as part of the work too.</div><div class=""><br class=""></div><div class="">If all goes well, we should have a functioning GeoNode running on Python 3. :)</div><div class="">I think Alessio’s testing document will be very helpful again here: <a href="https://docs.google.com/spreadsheets/d/13aaZ1l_2_SHzdmz9DwExEO_jxwgNuXfMa6oF5eWIv_s/edit#gid=376642658" class="">https://docs.google.com/spreadsheets/d/13aaZ1l_2_SHzdmz9DwExEO_jxwgNuXfMa6oF5eWIv_s/edit#gid=376642658</a></div><div class=""><br class=""></div><div class="">I don’t know exactly how this work should be merged in (or if it would be), as I assume development will continue on GeoNode master, so we will need to resolve changes along the way. This won’t be a problem for a little while though.</div><div class=""><br class=""></div><div class="">Finally, repeat for Django 2. My hope is this part is easier, as I think there are less compatibility conflicts there, but we’ll see.<br class=""></div><div class=""><br class=""></div><div class="">I think that about wraps it up. Let me know your thoughts or if you have any advice for me, and feel free to message me here or on Gitter to coordinate on this effort. Thank you all for helping out on this!</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Travis</div></div></div>
<br class=""><br class=""><br class=""><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Von: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Alessio Fabiani <<a href="mailto:alessio.fabiani@geo-solutions.it" class="">alessio.fabiani@geo-solutions.it</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Betreff: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">Aw: [GeoNode-devel] GNIP-64 Status and Plan</b><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Datum: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">5. November 2019 um 10:04:57 MEZ<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">An: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Travis Brundage <<a href="mailto:travislbrundage@gmail.com" class="">travislbrundage@gmail.com</a>>, Travis Brundage <<a href="mailto:tbrundage@boundlessgeo.com" class="">tbrundage@boundlessgeo.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Kopie: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">geonode-devel <<a href="mailto:geonode-devel@lists.osgeo.org" class="">geonode-devel@lists.osgeo.org</a>><br class=""></span></div><br class=""><br class=""><div dir="ltr" class=""><a class="gmail_plusreply" id="plusReplyChip-0" href="mailto:tbrundage@boundlessgeo.com" tabindex="-1">@Travis Brundage</a> awesome plan, thanks.<br class=""><div class=""><br class=""></div><div class="">Just a couple of comments, for now:</div><div class=""><br class=""></div><div class="">1. After the release, the "master" branch will become GeoNode 3.0 and officially it will start the Python 3 upgrade.</div><div class=""><br class=""></div><div class="">2. I would keep the issue (<a href="https://github.com/GeoNode/geonode/issues/4276" class="">https://github.com/GeoNode/geonode/issues/4276</a>) updated with the references to discussions and decisions.</div><div class="">We should edit the GNIP description and add to the bottom all the links to ml discussion also, that can be retrieved from here <a href="http://osgeo-org.1560.x6.nabble.com/GeoNode-devel-f5185388.html" class="">http://osgeo-org.1560.x6.nabble.com/GeoNode-devel-f5185388.html</a></div><div class=""><br class=""></div><div class="">Also, at a certain point, we would need (at least this is my suggestion) to translate the plan into a Google spreadheest and a list of tasks so that other people can easily keep them a start working in parallel. What do you think?</div><div class=""><br class=""></div><div class="">Thanks again,</div><div class="">Alessio.</div><div class=""><br class=""></div><div class=""><br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mar 5 nov 2019 alle ore 05:26 Travis Brundage <<a href="mailto:travislbrundage@gmail.com" class="">travislbrundage@gmail.com</a>> ha scritto:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class=""><div dir="ltr" class=""><div class="">Hi all,<br class=""></div><div class=""><br class=""></div><div class="">Just wanted to write a status report with regards to GNIP-64. I am excited to hear that help is on the way too :)</div><div class=""><br class=""></div><div class="">Most of what Coop wrote in the GNIP is still accurate. Broadly speaking, I see this broken down into the following steps:</div><div class="">1. Python library analysis</div><div class="">2. Test suite improvements</div><div class="">3a. Python library updates</div><div class="">3b. GeoNode codebase update</div><div class="">3c. django-osgeo-importer update</div><div class="">4. Testing and release</div><div class="">5. Repeat for Django 2</div><div class=""><br class=""></div><div class="">Coop had already started a spreadsheet detailing the libraries GeoNode uses and their Python 3 compatibility. I have updated this recently. You can find it here: <a href="https://docs.google.com/spreadsheets/d/1buUuIeGPL8zfv5xFotfGMpxHt2i8njoCEh4Y4kna3rY/edit#gid=0" target="_blank" class="">https://docs.google.com/spreadsheets/d/1buUuIeGPL8zfv5xFotfGMpxHt2i8njoCEh4Y4kna3rY/edit#gid=0</a></div><div class=""><br class=""></div><div class="">From this you can see a few categories.</div><div class="">1. Some libraries are completely outdated and inactive and require removal and if needed, replacement.</div><div class="">2. Some libraries do not yet have Python 3 compatibility, but we could update them for the community. Otherwise, we’ll need to remove and possibly replace them.</div><div class="">3. Some libraries do not yet have Python 3 compatibility, but the community is working on it or their github still has activity. We could save these for last or offer to help their community upgrade.</div><div class="">4. Some libraries do not officially support Python 3 or 3.7 specifically, but seem to build fine as is in a Python 3.7 environment.</div><div class="">5. Some libraries are GeoNode community’s. :)</div><div class="">6. Some libraries have newer versions that are Python 3+ compatible, but not backwards compatible with Python 2.7. These need to be delayed until GeoNode core is updated.</div><div class="">7. The majority thankfully - some libraries are fully Python 2.7 and 3.7+ compatible.</div><div class=""><br class=""></div><div class="">Next is improving GeoNode’s test suite. I don’t have a precise goal here, but want to improve the speed and coverage of GeoNode’s tests to prepare for the Python 3 upgrade, so we can more easily identify any functionality that gets broken. I have already run into a few issues and made another thread about this.</div><div class=""><br class=""></div><div class="">For upgrading the codebase, I planned to branch off the next release, 2.10.1.</div><div class=""><br class=""></div><div class="">From what I have researched, I don’t know if there’s a “correct” way to update a codebase to Python 3, but seems like there are a few strategies. My plan was to create a new branch and brute force the 2to3.py script, and hopefully with good test coverage, get a useful coverage report to see what has broken.</div><div class=""><br class=""></div><div class="">Possibly that is too much and won’t prove fruitful, in which case I would start a new branch and do it app by app instead. I have not tested 2to3.py in the wild before, so I don’t know how helpful it is, but from what I’ve read it is a good starting point usually.</div><div class=""><br class=""></div><div class="">As a side note, it will be helpful to configure your IDE of choice with a Python 3 interpreter. I use PyCharm, so some instructions for that here: <a href="https://www.jetbrains.com/help/pycharm/configuring-python-interpreter.html" target="_blank" class="">https://www.jetbrains.com/help/pycharm/configuring-python-interpreter.html</a></div><div class=""><br class=""></div><div class="">In general my plan of attack is:</div><div class="">1. Run Python 2to3 script</div><div class="">2. Clean up anything breaking GeoNode build entirely</div><div class="">3. Run tests for coverage report to see what breaks</div><div class="">4. Clean up until tests pass</div><div class="">5. Check visually in GeoNode that the app seems to function</div><div class="">6. Clean up until interactions work as expected</div><div class=""><br class=""></div><div class="">Simultaneously we’ll need to update the remaining Python libraries. This will be a bit tricky as some provide Python 3 compatibility on later versions, but not with Python 2 compatibility. Also, some still do not have Python 3 compatibility at all, so the work is on us or drop those libraries.</div><div class=""><br class=""></div><div class="">We'll also need to make sure GeoNode's libraries are updated, and it was planned to do django-osgeo-importer as part of the work too.</div><div class=""><br class=""></div><div class="">If all goes well, we should have a functioning GeoNode running on Python 3. :)</div><div class="">I think Alessio’s testing document will be very helpful again here: <a href="https://docs.google.com/spreadsheets/d/13aaZ1l_2_SHzdmz9DwExEO_jxwgNuXfMa6oF5eWIv_s/edit#gid=376642658" target="_blank" class="">https://docs.google.com/spreadsheets/d/13aaZ1l_2_SHzdmz9DwExEO_jxwgNuXfMa6oF5eWIv_s/edit#gid=376642658</a></div><div class=""><br class=""></div><div class="">I don’t know exactly how this work should be merged in (or if it would be), as I assume development will continue on GeoNode master, so we will need to resolve changes along the way. This won’t be a problem for a little while though.</div><div class=""><br class=""></div><div class="">Finally, repeat for Django 2. My hope is this part is easier, as I think there are less compatibility conflicts there, but we’ll see.<br class=""></div><div class=""><br class=""></div><div class="">I think that about wraps it up. Let me know your thoughts or if you have any advice for me, and feel free to message me here or on Gitter to coordinate on this effort. Thank you all for helping out on this!</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Travis</div></div></div>
_______________________________________________<br class="">
geonode-devel mailing list<br class="">
<a href="mailto:geonode-devel@lists.osgeo.org" target="_blank" class="">geonode-devel@lists.osgeo.org</a><br class="">
<a href="https://lists.osgeo.org/mailman/listinfo/geonode-devel" rel="noreferrer" target="_blank" class="">https://lists.osgeo.org/mailman/listinfo/geonode-devel</a><br class="">
</blockquote></div><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div dir="ltr" class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div style="font-size:12.8px" class=""><span class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-family:Arial;font-size:11pt;white-space:pre-wrap" class="">==</span><br class=""></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">GeoServer Professional Services from the experts! Visit <a href="http://goo.gl/it488V" target="_blank" class="">http://goo.gl/it488V</a> for more information.</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">==</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">Ing. Alessio Fabiani</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">@alfa7691</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">Founder/Technical Lead</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">GeoSolutions S.A.S.</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">Via di Montramito 3/A - </span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">55054 Massarosa (LU) - </span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">Italy</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">phone: +39 0584 962313</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">fax: +39 0584 1660272</span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">mob: +39 331 6233686</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><a href="http://www.geo-solutions.it/" target="_blank" class="">http://www.geo-solutions.it</a></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><a href="http://twitter.com/geosolutions_it" target="_blank" class="">http://twitter.com/geosolutions_it</a></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class=""><br class=""></span><span style="font-size:11pt;font-family:Arial;color:rgb(34,34,34);background-color:rgb(255,255,255);font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap" class="">-------------------------------------------------------</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; background-color: transparent; font-weight: 400; font-style: italic; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se potesse darmene notizia.</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; background-color: transparent; font-weight: 400; font-style: italic; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class=""><br class=""></span><span style="font-size: 11pt; font-family: Arial; background-color: transparent; font-weight: 400; font-style: italic; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. We remind that - as provided by European Regulation 2016/679 “GDPR” - copying, dissemination or use of this e-mail or the information herein by anyone other than the intended recipient is prohibited. If you have received this email by mistake, please notify us immediately by telephone or e-mail.</span><span style="font-size: 11pt; font-family: Arial; background-color: transparent; font-weight: 400; font-style: italic; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class=""><br class=""></span></div></span></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br class=""><br class="">_______________________________________________<br class="">geonode-devel mailing list<br class=""><a href="mailto:geonode-devel@lists.osgeo.org" class="">geonode-devel@lists.osgeo.org</a><br class="">https://lists.osgeo.org/mailman/listinfo/geonode-devel<br class=""></div></blockquote></div><br class=""></div></body></html>