Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
** The official repo is at https://github.com/hasadna/Open-Knesset/ . Please fork it, instead of my repo.
Python HTML CSS Gettext Catalog JavaScript
Pull request Compare This branch is 1753 commits behind master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
data
deploy
docs
locale/he/LC_MESSAGES
src/knesset
static
testdata
tests
.gitignore
.hgignore
.travis.yml
AUTHORS.txt
LICENSE
README
README.markdown
agendas.json
auth.json.gz
bill-view-stage-labels.xcf
bootstrap.py
bootstrap2.py
buildout.cfg
contenttypes.json.gz
dev.json.gz
distribute_setup.py
fabfile.py
initial_data.json
setup.py

README.markdown

Installation

Get the code

  • Make sure you have git installed, and have an account on github.com. Sign into github. see http://linux.yyz.us/git-howto.html for a short list of options with git and github.com help for more.
  • Fork the repository (https://github.com/ofri/Open-Knesset, top right of page). This creates a copy of the repository under your user.
  • Clone the repository: git clone https://github.com/your-username/Open-Knesset.git . This creates a copy of the project on your local machine. If you haven't done so already:
  • git config --local user.name "Your Name"
  • git config --local user.email "your@email.com"

Prerequisites

  • Python 2.x (including dev files)
  • python-setuptools

In Ubuntu this can be done with:

sudo apt-get install python python-dev python-setuptools

Installation process

  • python bootstrap.py
  • bin/buildout (if you have a problem, see "Trouble?" below)
  • bin/test
  • bin/django syncdb --migrate # do not create a superuser account
  • bin/django loaddata dev
  • bin/django createsuperuser # to create your superuser account
  • bin/django runserver
  • vi src/knesset/local_settings.py # create your local setting file to store a bunch of things that you do NOT want to push to everyone # NOTE: NEVER push settings.py with local changes!
  • sample input for local_settings.py: DATABASE_NAME = '<your-local-path>dev.db' # Or path to database file if using sqlite3.

Trouble?

  • Some of the mirrors are flaky so you might need to run the buildout several times until all downloads succeed.
  • currently using MySQL as the database engine is not supported
  • on bin/buildout, problems with getting distribution for 'PIL' can be fixed by installing the python-dev package

Windows Users

Prerequisites:

Running the installation instructions:

  • open command line change dir to the Open-Knesset folder
  • run the installation instructions above (Without the $ ofcourse and with backslashes)

Working process

Before you code

Get your branch updated with the changes done by others. Please do this every time before you start developing:

  • cd Open-Knesset
  • git pull git://github.com/ofri/Open-Knesset.git master
  • bin/buildout # only needed if the file buildout.cfg was changed; but can't hurt you if you run it every time.
  • bin/django syncdb --migrate # do not create a superuser account
  • bin/test # if there are any failures, contact the other developers to see if that's something you should worry about.
  • bin/django runserver # now you can play with the site using your browser

if you get the add_persons_aliases alert try bin/django migrate --fake persons 0001

When you code

General

  • Write tests for everything that you write.
  • Keep performance in mind - test the number of db queries your code performs using bin/django runserver and access 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 migration. The work process looks something like:

  • add the field you want to model sample_model in app sample_app
  • bin/django schemamigration sample_app --auto # this generates a new migration under src/knesset/sample_app/migrations. You should review it to make sure it does what you expect.
  • bin/django syncdb --migrate # run the migration.
  • don't forget to git add/commit the migration file.

Updating the translation strings

Currently, there is no need to update translation (po) files. Its a real headache to merge when there are conflicts, so simply add a note to the commit message "need translations" if you added any _('...') or {% trans '...' %} to the code.

After you code

  • bin/test # make sure you didn't break anything
  • git status # to see what changes you made
  • git diff filename # to see what changed in a specific file
  • git 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 repo
  • go to github.com and send a "pull request" so your code will be reviewed and pulled into the main branch.
Something went wrong with that request. Please try again.