Voteview command-line interface

## Project description

This project contains tools for managing the Voteview server.

Any manual changes to the database contents can be applied through this tool.

## What’s good

• All migrations are versioned.

• All migrations can be programatically applied and reverted.

• All migrations are documented in the changelog.

• All migrations can be developed and tested on the user’s local computer instead of running for the first time in production.

• The representation of database objects can be standardized: vvtool defines a set of attributes for Member, Rollcall, and other objects.

• Any changes to software or migrations can be tested automatically on a continuous integration server.

• The software can be documented centrally instead of using scattered shell scripts.

• vvtool connects directly to a test database or the production database, reducing the differences between the test environment and the production environment.

• Requires a few setup steps.

• Doesn’t require changes to go through continuous integration testing, since users can submit jobs directly to the target server. So it’s possible that a script could be executed without ever being tested. This shortcoming could be changed by swiching to a continuous deployment strategy whereby users would simply submit migrations to GitHub, wait for them to go through testing, and then the migrations would be automatically applied to the production database. The current situation is much simpler, so I’ve stuck with that for now.

## Project details

Uploaded source
Uploaded py3