| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 
							- ============
 - Contributing
 - ============
 - 
 - Some ground rules:
 - 
 - * To avoid disappointment, new features should be discussed on the mailing list
 -   (django-oscar@googlegroups.com) before serious work starts.
 - 
 - * Pull requests will be rejected if sufficient tests aren't provided.
 - 
 - * Please update the documentation when altering behaviour or introducing new features.
 - 
 - * Follow the conventions (see below).
 - 
 - Installation
 - ============
 - 
 - From zero to tests passing in 2 minutes (most of which is PIL installing)::
 - 
 -     git clone git@github.com:<username>/django-oscar.git
 -     cd django-oscar
 -     mkvirtualenv oscar
 -     ./setup.py develop
 -     pip install -r requirements.txt
 -     ./run_tests.py
 - 
 - Writing docs
 - ============
 - 
 - There's a helper script for building the docs locally::
 - 
 -     cd docs
 -     ./test_docs.sh
 - 
 - Conventions
 - ===========
 - 
 - General
 - -------
 - 
 - * PEP8 everywhere while remaining sensible
 - 
 - URLs
 - ----
 - 
 - * List pages should use plurals, eg ``/products/``, ``/notifications/``
 - 
 - * Detail pages should simply be a PK/slug on top of the list page, eg
 -   ``/products/the-bible/``, ``/notifications/1/``
 -   
 - * Create pages should have 'create' as the final path segment, eg
 -   ``/dashboard/notifications/create/``
 - 
 - * Update pages are sometimes the same as detail pages (ie when in the
 -   dashboard).  In those cases, just use the detail convention, eg
 -   ``/dashboard/notifications/3/``.  If there is a distinction between the detail
 -   page and the update page, use ``/dashboard/notifications/3/update/``.
 - 
 - * Delete pages, eg /dashboard/notifications/3/delete/
 - 
 - View class names
 - ----------------
 - 
 - Classes should be named according to::
 - 
 -     '%s%sView' % (class_name, verb)
 - 
 - For example, ``ProductUpdateView``, ``OfferCreateView`` and
 - ``PromotionDeleteView``.  This doesn't fit all situations but it's a good basis.
 
 
  |