Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/city-of-helsinki/parkkihubi
Django-based REST API for processing parking data
https://github.com/city-of-helsinki/parkkihubi
Last synced: about 2 months ago
JSON representation
Django-based REST API for processing parking data
- Host: GitHub
- URL: https://github.com/city-of-helsinki/parkkihubi
- Owner: City-of-Helsinki
- License: mit
- Created: 2016-11-29T13:32:13.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-03-26T10:35:59.000Z (10 months ago)
- Last Synced: 2024-04-08T16:42:50.736Z (9 months ago)
- Language: Python
- Size: 2.05 MB
- Stars: 14
- Watchers: 5
- Forks: 19
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build status](https://travis-ci.org/City-of-Helsinki/parkkihubi.svg?branch=master)](https://travis-ci.org/City-of-Helsinki/parkkihubi)
[![codecov](https://codecov.io/gh/City-of-Helsinki/parkkihubi/branch/master/graph/badge.svg)](https://codecov.io/gh/City-of-Helsinki/parkkihubi)
[![Requirements](https://requires.io/github/City-of-Helsinki/parkkihubi/requirements.svg?branch=master)](https://requires.io/github/City-of-Helsinki/parkkihubi/requirements/?branch=master)# Parking hub
Django-based REST API for processing parking data.
## Requirements
* Python 3.x
* PostgreSQL + PostGIS## Development
### Install required system packages
#### PostgreSQL
The recommended versions for postgresql and postgis are at least 9.4 and 2.2 respectively.
# Ubuntu 16.04
sudo apt-get install python3-dev libpq-dev postgresql postgis#### GeoDjango extra packages
# Ubuntu 16.04
sudo apt-get install binutils libproj-dev gdal-bin### Creating a virtualenv
Create a Python 3.x virtualenv either using the traditional `virtualenv` tool or using the great `virtualenvwrapper` toolset. Assuming the former, [once installed](https://virtualenvwrapper.readthedocs.io/en/latest/), simply do:
mkvirtualenv -p /usr/bin/python3 parkkihubi
The virtualenv will automatically activate. To activate it in the future, just do:
workon parkkihubi
### Python requirements
Use `pip-tools` to install and maintain installed dependencies.
pip install -U pip # pip-tools needs pip==6.1 or higher (!)
pip install pip-toolsInstall requirements as follows
pip-sync requirements.txt requirements-dev.txt
### Django configuration
Environment variables are used to customize configuration in `parkkihubi/settings.py`. If you wish to override any settings, you can place them in a local `.env` file which will automatically be sourced when Django imports the settings file.
Create a basic file for development as follows
echo 'DEBUG=True' > .env
#### Parkkihubi settings
- `PARKKIHUBI_PUBLIC_API_ENABLED` default `True`
- `PARKKIHUBI_MONITORING_API_ENABLED` default `True`
- `PARKKIHUBI_OPERATOR_API_ENABLED` default `True`
- `PARKKIHUBI_ENFORCEMENT_API_ENABLED` default `True`### Database
Create user and database
sudo -u postgres createuser -P -R -S parkkihubi # use password `parkkihubi`
sudo -u postgres createdb -O parkkihubi parkkihubi
sudo -u postgres psql parkkihubi -c "CREATE EXTENSION postgis;"Allow user to create test database
sudo -u postgres psql -c "ALTER USER parkkihubi CREATEDB;"
Tests also require that PostGIS extension is installed on the test database. This can be achieved most easily by adding PostGIS extension to the default template:
sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS postgis;"
Run migrations
python manage.py migrate
### Updating requirements files
Use Prequ to update the `requirements*.txt` files.
pip install prequ
When you change requirements, set them in `requirements.in` or `requirements-dev.in`. Then run:
prequ update
### Running tests
Run all tests
py.test
Run with coverage
py.test --cov-report html --cov .
Open `htmlcov/index.html` for the coverage report.
### Importing parking areas
To import Helsinki parking areas run:
python manage.py import_parking_areas
### Geojson importers
To import payment zones from geojson run:
python manage.py import_geojson_payment_zones --domain=HKI
To import permit areas from geojson run:
python manage.py import_geojson_permit_areas --domain=HKI
### Starting a development server
python manage.py runserver
Operator API will be available at [http://127.0.0.1:8000/operator/v1/](http://127.0.0.1:8000/operator/v1/)
Enforcement API will be available at
http://127.0.0.1:8000/enforcement/v1/Public API will be available at [http://127.0.0.1:8000/public/v1/](http://127.0.0.1:8000/public/v1/)
### Generating API documentation
The API documentation conforms to [Swagger Specification 2.0](http://swagger.io/specification/).
Three possible ways (out of many) to generate the documentation:
- Run the documentation generating script:
./generate-docs
The output will be in `docs/generated` directory by default. If you
want to generate to a different directory, give that directory as the
first argument to the script.- [bootprint-openapi](https://github.com/bootprint/bootprint-openapi)
Probably the recommended way.
Installation:
npm install -g bootprint
npm install -g bootprint-openapiRunning (in `parkkihubi` repository root):
bootprint openapi docs/api/enforcement.yaml
bootprint openapi docs/api/operator.yaml- [swagger-codegen](https://github.com/swagger-api/swagger-codegen)
Due to [a bug in swagger-codegen](https://github.com/swagger-api/swagger-codegen/pull/4508),
we're using an unreleased version at the moment.
To build swagger-codegen from source, you need Apache maven installed (you'll
need java 7 runtime at a minimum):
# Ubuntu
sudo apt-get install maven
Clone swagger-codegen master branch and build it:
git clone https://github.com/swagger-api/swagger-codegen
cd swagger-codegen/
mvn clean package # Takes a few minutes
The client will now be available at `modules/swagger-codegen-cli/target/swagger-codegen-cli.jar`.
To build the docs, in `parkkihubi` repository root:
cd docs/api
java -jar /path/to/codegen/swagger-codegen-cli.jar generate \
-i enforcement.yaml -l html2 -c config.json \
-o /output/path/enforcement/
java -jar /path/to/codegen/swagger-codegen-cli.jar generate \
-i operator.yaml -l html2 -c config.json \
-o /output/path/operator/## License
[MIT](https://tldrlegal.com/license/mit-license)