Code
If you want to contribute bug fixes or small tweaks then your pull requests are always welcome!
Discuss First!
If you want to contribute larger features that introduce more complexity to the project please make sure to first submit a technical description outlining what and how you want to do it. This allows me and the community to give feedback and manage the complexity of the overall application. If you don't do this please don't be mad if I reject your PR.
License
Contributing to Tandoor requires signing a Contributor License Agreement. You can review the CLA here.
Linting & Formatting
Tandoor uses a number of libraries to maintain style and formatting consistency. To contribute to the project you are required to use the following packages with the project defined configurations:
- flake8
- yapf
- isort
- prettier
Manual Formatting
It is possible to run formatting manually, but it is recommended to setup your IDE to format on save.
flake8 file.py --ignore=E501 | isort -q file.py | yapf -i file.py
prettier --write file.vue
Testing
Django uses pytest-django to implement a full suite of testing. If you make any functional changes, please implment the appropriate tests.
Tandoor is also actively soliciting contribors willing to setup vue3 testing. If you have knowledge in this area it would be greatly appreciated.
API Client
Tandoor uses django-rest-framework for API implementation. Making contributions that impact the API requires an understanding of Viewsets and Serializers.
Also double check that your changes are actively reflected in the schema so that client apis are generated accurately.
The API Client is generated automatically from the OpenAPI interface provided by the Django REST framework. For this openapi-generator is used.
Install it using your desired setup method. (For example, using npm install @openapitools/openapi-generator-cli -g
.)
Vue
Navigate to vue/src/utils/openapi
.
Generate the schema using openapi-generator-cli generate -g typescript-axios -i http://127.0.0.1:8000/openapi/
. (Replace your dev server url if required.)
Vue3
Navigate to vue3/src/openapi
.
Generate the schema using openapi-generator-cli generate -g typescript-fetch -i http://127.0.0.1:8000/openapi/
. (Replace your dev server url if required.)