Coding Conventions

In general, we are following the Coding Conventions of PEP 8. In case of questions, use

  • the Style Guide for Python Code (https://www.python.org/dev/peps/pep-0008/) and the

  • Coding style for Django (https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/).

1. Naming

  • Everything (and code) is written in English.

  • The use of camelCase is prohibited for variables and only possible for classes. Avoid too much underscores in variable names.

Models

  • A class representing a database model is always written in singular (e.g. “ResourceBooking”) and should be in CamelCase without underscores.

  • Variable names for backward resolution:

    • Used for finding all occurrences of a referenced attribute as a foreign key: https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name

    • Both corresponding variables should be set.

    • ‘related_name’: ‘current class in plural’ + ‘of’ + ‘foreign key class’, e.g. ‘bookings_of_organization’ is the related_name of the Organization in Bookings class.

    • ‘related_query_name’: Like ‘related_name’, but the current class is written in singular.

Apps

  • We seperate the Django-project in multiple apps. Each app has some core functionality.

  • An app’s name should be a plural version of the app’s main model (e.g. appname “resources” as the main model is “resource”).

  • When there are no models inside the app (e.g. for pure API apps), the app’s name should reflect what it is doing or for whom (e.g. “api_mobile_app”)

3. Code documentation

  • If a method, function, class or module is complicated, use Docstrings: “”” Here you write in the doc. “”” (https://www.python.org/dev/peps/pep-0257/)

  • Comment only complicated parts.

4. Git commit conventions

Every commit message should follow the following convention:

  • ‘sort’(‘scope’): ‘What was done?’
    ‘Why was it done?’

  • e.g. test(bookings): a time-slot can’t be booked twice.

  • Sorts: feat (for feature), test, doc, refa, i18n (internationalization / translations)

  • Possible scopes: an app, a (model/view) class, a function/method

5. Testing conventions

We only test our own custom code. So we won’t test if Django is correctly translating a model into the respective Database fields.