This page brings together useful information on the current development of SAPL - Sistema de Apoio ao Processo Legislativo (Legislative Process Support System).
That means all information presented here applies only to version 3.1 and greater.
For more information about the the project as a whole and the current working version of the system (2.5) please visit the project page at Interlegis wiki.
Install the following system dependencies (command bellow for Ubuntu):
sudo apt-get install git nginx python3-dev libpq-dev graphviz-dev graphviz \ pkg-config postgresql postgresql-contrib pgadmin3 python-psycopg2 nodejs npm \ sudo ln -s /usr/bin/nodejs /usr/bin/node sudo npm install -g bower
Setup git, following the instructions in https://help.github.com/articles/set-up-git.
Fork and clone this repository, following the instructions in https://help.github.com/articles/fork-a-repo.
If you don't have pip installed then execute the following instructions:
sudo apt-get install python-pip python-dev build-essential sudo pip install --upgrade pip sudo pip install --upgrade virtualenv
Create a virtualenv using python 3 for the project and activate it. If you use virtualenvwrapper:
mkvirtualenv -p /usr/bin/python3 sapl
Install python dependencies (run on the project root):
pip install -r requirements/dev-requirements.txt
Install bower dependencies (run on the project root):
./manage.py bower install
Install PostgreSQL if you haven't already.
Create a
sapl
role with:- Password
sapl
- The privilege
can create databases
- A big expiration date (or infinite, using eg
ALTER ROLE SAPL VALID UNTIL 'infinity';
)
- Password
Create a database
sapl
with ownersapl
.Either run
./manage.py migrate
(for an empty database) or restore a database dump.In
sapl/sapl
directory create one file called.env
. Write the following attributes in it:- DATABASE_URL = postgresql://USER:PASSWORD@HOST:PORT/NAME
- SECRET_KEY = Generate some key and paste here
- DEBUG = [True/False]
- EMAIL_USE_TLS = [True/False]
- EMAIL_PORT = [Set this parameter]
- EMAIL_HOST = [Set this parameter]
- EMAIL_HOST_USER = [Set this parameter]
- EMAIL_HOST_PASSWORD = [Set this parameter]
We use Transifex to manage the project's translations. If you want to contribute, please setup an account there and request to join us at the Transifex SAPL Page. Once your join request is accepted, you can start to translate.
To integrate the last translations on a working instance follow these steps:
- Follow the instructions at Development Environment Installation.
- Install Transifex Client.
Warning
The Transifex Client stores passwords in plain text on the file ~/.transifexrc
.
We personally prefer to log into Transifex website with social network credentials and change the password used for the client frequently.
- Pull translations or push translations using the client. Pull only on a clean repo, i.e. commit your changes before pulling new translations.
- Run the program with
.manage.py runserver
and check the system to see the translations into effect.
Note
The browser language preference is used to choose the translations to display.
- Use English for all the code, commit messages and project docs.
- Commit messages following the standard 50/72 columns. Start every commit message with a verb in infinitive. For more info on this please check:
- Keep all code in standard PEP8 (without exceptions).
- Before every
git push
: - Rungit pull --rebase
(almost always). - In exceptional cases simply usegit pull
to produce a merge. - Before
git commit
, always: - Run./manage.py check
- Run all tests withpy.test
at the root of the project tree
Attention!
The database user sapl
needs to have the permission create database
in postgres for the tests to complete successfully
- If you're not part of the core team, fork the repo and submit pull requests. All are welcome to contribute. Please make a separate pull request for each bugfix/new feature.
- New features are subject to approval, since they may impact a lot of people. We suggest you open an issue to discuss new features. That can be made in Portuguese, as well as in English.
Write tests for all the functionality you implement.
Keep the test coverage near 100%.
To run all tests activate your virtualenv and issue these commands at the root of the repository:
py.test
To run the tests with coverage issue the command:
py.test --cov . --cov-report term --cov-report html && firefox htmlcov/index.html
The first time you run the tests after a migration (
./manage.py migrate
) use the db recreation option. This needs to be done only once:py.test --create-db
- Open all issues about the current development version (3.1) at the Github Issue Tracker.
- You can file issues in either Portuguese or English (at least for the time being).