Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/city-of-helsinki/kaavapino
Project management system for city planning projects
https://github.com/city-of-helsinki/kaavapino
Last synced: about 1 month ago
JSON representation
Project management system for city planning projects
- Host: GitHub
- URL: https://github.com/city-of-helsinki/kaavapino
- Owner: City-of-Helsinki
- License: mit
- Created: 2017-12-05T12:14:15.000Z (about 7 years ago)
- Default Branch: development
- Last Pushed: 2024-10-17T13:49:01.000Z (2 months ago)
- Last Synced: 2024-10-20T04:14:40.239Z (2 months ago)
- Language: Python
- Size: 2 MB
- Stars: 2
- Watchers: 7
- Forks: 11
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# kaavapino
Project management system for city planning projects.## Prerequisites
* PostgreSQL (>= 9.3)
* Python (>= 3.6)## Development
It is possible to either use `docker-compose` or set up the development environment manually
as described below.### 1) Using docker-compose
Development environment can be initialized using `docker-compose`.
You need to have `docker` and `docker-compose` available on your system.To bring up the dev environment run:
docker-compose up
To manage docker-compose setup:
docker-compose build # Builds project container from the Dockerfile
docker-compose up -d # Start all required services in the background
docker-compose stop # Stop services
docker-compose down -v # Stop services and remove containers and volumes
docker exec -it kaavapino-api bash # Open bash into the django container### 2) Setup development environment manually
#### PostgreSQL and PostGIS
# 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#### Install Poetry
pip install poetry
#### Install project dependencies and activate virtual environment
# Installs dependencies and creates a virtual environment for project
poetry install
# Activates virtual environment
poetry shell#### Adding / Removing project dependencies
poetry add/remove
# Note: Both pyproject.toml and poetry.lock have to be committed to version control### Database
To setup a database compatible with the default database settings:
Create user and database
sudo -u postgres createuser -P -R -S kaavapino # use password `kaavapino`
sudo -u postgres createdb -O kaavapino kaavapinoEnable PostGIS
sudo -u postgres psql -d "kaavapino" -c "CREATE EXTENSION IF NOT EXISTS postgis;"
Allow the kaavapino user to create databases when running tests
sudo -u postgres psql -c "ALTER USER kaavapino 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 which is then used when the test databases are created:sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS postgis;"
### Django configuration
Environment variables are used to customize configuration in `kaavapino/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.Alternatively you can create a `local_settings.py` which is executed at the end of the `kaavapino/settings.py` in the
same context so that the variables defined in the settings are available.### Running development environment
* Enable debug `echo 'DEBUG=True' >> .env`
* Run `python manage.py migrate`
* Run `python manage.py runserver 0.0.0.0:8000`## Running tests
* Run `pytest`
## Importing attributes and deadlines
To import data, use:
* `python manage.py create_default_groups_and_mappings` (first time only, run before other commands)
* `python manage.py import_attributes [--sheet sheet name] [--overwrite]`
* `python manage.py import_deadlines `
* `python manage.py import_report_types `
* `python manage.py create_default_listviewattributecolumns`Deadlines rely on attributes, so it is recommended to run `import_attributes` before `import_deadlines`. Import will overwrite existing data.
To clear or generate missing schedules, use:
* `python manage.py clear_all_project_deadlines [--id project id]`
* `python manage.py generate_missing_project_deadlines [--id project id]`If at any point attribute_data breaks for example due to changes in attribute types between imports, use following to fix one or all projects:
* `python manage.py repair_attribute_data [--id project id]`
## Deploy staging
Install kubectl locally. Check version to deploy and run:
```
#> pwd
... kaavapino/api/deploy/rancher
#> ./deploy_staging_api.sh run
```## Schema
### Generate API-schema
Unversioned:
```bash
./manage.py spectacular --file schema/schema.yaml
```### Access swagger ui
`/schema/swagger-ui/`