Development Workflow¶
Congratulations, we have everything installed, now it’s time to start working on the project. Here are some guidelines and scenarios to help you get started.
Important
- MS Windows users: replace
./manage.py
withpython manage.py
- Run
manage.py
commands from the Open-Knesset directory, with the virtualenv activated.
Commits and Pull Requests¶
Make it easier for you and the maintainers, increasing the chances of a pull request getting accepted:
- No big Pull Requests. It makes reviewing and ensuring correctness hard. If possible, break it to smaller commits/pulls, each related to a specific issue.
- Always work on a specific issue from our issue tracker. Open new issue if needed and claim it in the comments.
- Discuss big things in the Open Knesset Developers group.
Before Coding¶
We need to make sure we’re in sync with changes done by others (upstream).
Important
Please do this every time before you start developing:
Update the code and requirements¶
Enter the Open-Knesset directory, and run:
git pull git@github.com:hasadna/Open-Knesset.git master
Note
Running this command requires having SSH keys registered with github. If you don’t have these, or if you don’t understand what this means and do not want to look it up, you can use:
git pull https://github.com/hasadna/Open-Knesset.git master
If requirements.txt was modified, make sure all of them are installed (no harm running this command even in case of no changes):
pip install -r requirements.txt
Note
We recommend running the pip command from the parent diretory (the
virtualenv’s root), as it may create an src
directory when pulling
packages from git repos. in that case:
`pip install -r Open-Knesset/requirements.txt`
Run migrations and tests¶
./manage.py migrate
./manage.py test
# by default the browser tests use firefox - make sure it's installed first
./manage.py test --testrunner=knesset.browser_test_runner.Runner
If there are any failures, contact the other developers in the oknesset-dev group to see if that’s something you should worry about.
See Development Tips for a few bash functions that may help.
While Coding¶
General¶
- Write tests for everything that you code.
- Keep performance in mind - test the number of db queries your code performs
using
./manage.py runserver
and accessing a page that runs the code you changed. See the output of the dev-server before and after your change.
Adding a field to existing model¶
We use South to manage database schema migrations. The work process is:
- Add the field you want to model SampleModel in app sample_app
- python manage.py schemamigration sample_app –auto this generates a new migration under sample_app/migrations. You should review it to make sure it does what you’ve expected.
- python manage.py migrate runs the migration against the database.
- Don’t forget to git add and commit the migration file.
After you code¶
./manage.py test
# make sure you didn’t break anything./manage.py test --testrunner=knesset.browser_test_runner.Runner
# run the browser tests (see Browser testing)git status
# to see what changes you madegit diff filename
# to see what changed in a specific filegit add filename
# for each file you changed/added.git commit -m "commit message"
Please write a sensible commit message, and include “fix#: [number]” of the issue number you’re working on (if any).
git push
# push changes to git repogo to github.com and send a “pull request” so your code will be reviewed and pulled into the main branch, make sure the base repo is hasadna/Open-Knesset.