- Utilize a língua portuguesa em todo o código, nas mensagens de commit e na documentação do projeto.
- Mensagens de commit seguem o padrão de 50/72 colunas. Comece toda mensagem de commit com o verbo no infinitivo. Para mais informações, clique nos links abaixo:
- Mantenha todo o código de acordo com o padrão da PEP8 (sem exceções).
- Antes de todo
git push:- Execute
git pull --rebase(quase sempre). - Em casos excepcionais, faça somente
git pullpara criar um merge.
- Execute
- Antes de
git commit, sempre:- Execute
./manage.py check - Execute todos os testes com
py.testna pasta raiz do projeto
- Execute
- Em caso de Implementação de modelo que envolva a classe
django.contrib.auth.models.User, não a use diretamente, use para isso a funçãoget_settings_auth_user_model()desapl.utils. Exemplo:- no lugar de
owner = models.ForeignKey(User, ... ) - use
owner = models.ForeignKey(get_settings_auth_user_model(), ... ) - Não use em qualquer modelagem futura,
ForeignKeycomUserou mesmosettings.AUTH_USER_MODELsem o import correto que não é o do projeto e sim o que está emsapl.utils, ou seja (from django.conf import settings)- em https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#referencing-the-user-model é explicado por que ser dessa forma!
- Já em qualquer uso em implementação de execução, ao fazer uma query, por exemplo:
- não use
django.contrib.auth.models.Userpara utilizar as caracteristicas do model, para isso, use esta função: django.contrib.auth.get_user_model()
- não use
- Seguir esses passos simplificará qualquer customização futura que venha a ser feita na autenticação do usuários ao evitar correções de inúmeros import's e ainda, desta forma, torna a funcionalidade de autenticação reimplementável por qualquer outro projeto que venha usar partes ou o todo do SAPL.
- no lugar de
Atenção:
O usuário do banco de dadossapldeve ter a permissãocreate databaseno postgres para que os testes tenham sucesso
- Se você não faz parte da equipe principal, faça o fork deste repositório e envie pull requests. Todos são bem-vindos para contribuir. Por favor, faça uma pull request separada para cada correção ou criação de novas funcionalidades.
- Novas funcionalidades estão sujeitas a aprovação, uma vez que elas podem ter impacto em várias pessoas. Nós sugerimos que você abra uma nova issue para discutir novas funcionalidades. Elas podem ser escritas tanto em Português, quanto em Inglês.
Escrever testes para todas as funcionalidades que você implementar.
Manter a cobertura de testes próximo a 100%.
Para executar todos os testes você deve entrar em seu virtualenv e executar este comando na raiz do seu projeto:
py.test
Para executar os teste de cobertura use:
py.test --cov . --cov-report term --cov-report html && firefox htmlcov/index.html
Na primeira vez que for executar os testes após uma migração (
./manage.py migrate) use a opção de recriação da base de testes. É necessário fazer usar esta opção apenas uma vez:py.test --create-db