<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">My work was focused on extending PyWPS with a way to control processes and a web interface for it.<br /><br />**The state of art before GSoC**<br /><br />Before Google Summer of Code 2016, there was no way how to manipulate running processes. There also wasn't any web interface for this purpose. I didn't notice a way how to connect PyWPS with a web server.<br /><br />There was a demo application, which was run by Flask's development server. A PyWPS application has registered processes, which are Python classes with predefined methods which implement desired behavior defined by an author of a process. Users can run these processes by sending an HTTP request to that server with parameters defined by the PyWPS library and the process. An output of a process is an XML file with a result.<br /><br />Before GSoC 2016 no one could control running processes and there wasn't any user-friendly way to see what is running.<br /><br />**My Contribution**<br /><br />I moved Flask from the demo application to the library, therefore Flask doesn't have to use his own development server as a production server, which is not his purpose, and can be connected to real used web servers like Apache and others. I demonstrated the usage of PyWPS with Apache and PostgreSQL on Ubuntu in this article [2], which is a step-by-step tutorial how to run it. I used this tutorial to create a page into the documentation of PyWPS [3], the documentation page is purposely more general and less detailed about the deployment on Apache.<br /><br />On the shoulders of Flask framework, I've built the REST API for manipulating processes and the web interface. The REST API is described in the documentation [4]. There are introduced URL's /processes and /processes/<uuid> that are available to pause, resume and stop running processes by different HTTP methods described in the documentation. A user can also connect to the web interface to see running processes and have the ability to control the processes through this web on the URL /manage.<br /><br />I've switched a hard-wired database connection to SQLite and SQL queries to the SQLAlchemy ORM. Therefore there is no SQL command in the code, what is more clear, more maintainable and flexible. It's no more limited only to SQLite, it can still be used with SQLite, but also with many others like MySQL, PostgreSQL, Oracle and so on. I demonstrated usage with PostgreSQL.<br /><br />You can see all my commits on this link [5].<br /><br />This repository [6], commits are there [7], was used as the supporting application through the describe tutorial on Ubuntu deployment. Can be used as the new demo application. It can be connected to Apache or run local development server as a demo application run by the Python interpreter.<br /><br />I've already made one pull request [8], that is still opened. There are some conflicts, there were none at the moment I've made it. I should make another pull request soon.<br /><br />**What's left?**<br /><br />I think, I've met the main goals of my work. I've created the REST API for the manipulation of processes and also the web interface. I've also tried to write a documentation description, which I found surprisingly not easy. This last week and days I am focused on testing. I've run tests with Python 2 and I hope I it will be fine with Python 3 until the end.<br /><br />I would say proper testing by using and solving any issue that will come up. Merging my last commits into the main repository.<br /><br />I would like to thank my mentors Jachym Cepicky and Jonas Eberle for the opportunity and support through GSoC.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Thanks, Jan Rudolf<br /><br />Github commits:<br />https://github.com/jan-rudolf/pywps/commits/master<br /><br />Project page:<br />https://wiki.osgeo.org/wiki/GSoC_2016_Web_administration_and_process_management_for_PyWPS<br /><br />Images:<br />An illustration of my contribution: https://wiki.osgeo.org/images/e/e7/Gsoc_my_contribution.png<br />A screenshot of the web interface 1: https://wiki.osgeo.org/images/e/e5/Pywps_administration_1.png<br />A screenshot of the web interface 2: https://wiki.osgeo.org/images/f/f3/Pywps_administration_2.png<br /><br />Links:<br />[1] http://pywps.org/<br />[2] http://gsoc-2016.jan-rudolf.cz/ubuntu-deployment<br />[3] https://github.com/jan-rudolf/pywps/blob/master/docs/install.rst<br />[4] https://github.com/jan-rudolf/pywps/blob/master/docs/rest_api.rst<br />[5] https://github.com/jan-rudolf/pywps/commits/master<br />[6] https://github.com/jan-rudolf/gsoc-pywps-app/<br />[7] https://github.com/jan-rudolf/gsoc-pywps-app/commits/master<br />[8] <a href="https://github.com/geopython/pywps/pull/147">https://github.com/geopython/pywps/pull/147</a><br /><br /></div>
</body></html>