- Clone o repositorio
- Crie um virtualenv com Python 3.5
- Ative o virtualenv
- Instale as dependencias
- Configure a instancia com o .env
- Execute os testes
git clone git@github.com:nogsantos/eventex.git
cd eventex
python -m venv .eventex
source .eventex/bin/activate
pip install -r requirements-dev.txt
cp contrib/env.sample .env
python manage.py test
Dependencia The Heroku CLI
- Crie uma instancia
- Envie as configuracoes para o heroku
- Defina uma SECRET_KEY segura para a instancia
- Defina DEBUG=False
- Configure o servico de email
- Envie o codigo
heroku create my-new-instance
heroku config:push
heroku config:set SECRET_KEY='python contrib/secret_gen.py'
heroku config:set DEBU=False
# configura o email
git push heroku master --force
- python-decouple
- Substitui valores pelas variáveis de ambiente. Também é possível definir valores padrões
- dj-database-url
- Extrai as informações necessárias para a configuração do banco de dados através da leitura de uma url. Essa lib consegue mapear atraves de uma url, todos os parâmetros do dicionário de configuração do banco de dados da aplicação
- dj-static
- Uma aplicação wisg padrão do python, que ficará na frente do django para servir os arquivos estáticos.
Para publicar uma aplicação python no heroku, duas lib são necessárias, porém, não precisam ser instaladas no ambiente de desenvolvimento, dessa forma, apenas apontando-as no arquivo requirements é o suficiente.
- gunicorn
- É o servidor web que recebe as requisições e as repassa para o django
- psycopg2
- Drive do banco PostgreSQL para o django utilizado pelo heroku
Autenticar na conta
$ heroku login
Criar o app
heroku apps:create eventex-nogsantos
Abriar a aplicação no navegador
heroku open
Configura as variáveis de ambiente
heroku config:set [CHAVE]=[VALOR]
Visualiza as configuracoes definidas no heroku
heroku config
Envia o projeto
git push heroku master --force
Executar comandos no heroku
Para executar as migrations no heroku, no terminal
heroku run python manage.py migrate
Criar o superuser do django
heroku run python manage.py createsuperuser
Habilita sendgrid para envio de emails
Ao abrir a documentação do sendgrind, no heroku está exemplificado usando o pacote do próprio sendgrid, sendo necessário a instalação dele no projeto para isso. No caso, nesse projeto, não será utilizado esse pacote, usaremos o próprio smtp para isso.
heroku addons:create sendgrid:starter
--return
Creating sendgrid:starter on ⬢ eventex-nogsantos... free
Created sendgrid-animated-85358 as SENDGRID_PASSWORD, SENDGRID_USERNAME
Use heroku addons:docs sendgrid to view documentation
Em docs, os módulos possuirão os requisitos
Devem possuir as sessões de:
- Contexto: Descreve o estado inicial
- Ação: O que irá ocorrer após o estado inicial
- Resultado / Expectativa: Após a ação, o que deve ocorrer
No projeto, está disponível o django-extensions
, e em desenvolvimento o Jupyter
. Juntos possibilitam o uso do notebook para facilitar o desenvolvimento e testes.
python manage.py shell_plus --notebook
dumpdata
O comando dumpdata
gera um dump em json
dos modelos criados nos apps para visualizacao no terminal
python manage.py dumpdata --indent 4 subscriptions
Create super user
python manage.py createsuperuser
match
:re.match('abc', 'abc')
search
:re.search('abc', 'efgabc')
findall
:re.findall('abc', '123abc456abc')
Metacaracteres das expressões regulares. Ponto (.) == qualquer caracter, exceto nova linha (\n) Âncoras (^$) == início e fim de string Classe de caracter ([])
Todas a sequencias especiais usam a \
\d
== [0-9]\D
== [^0-9] Negação da classe\s
== [\t\n\r\f\v]\S
== [^\t\n\r\f\v] Negação da classe\w
== [a-zA-Z0-9_]\W
== [^a-za-z0-9_] Negação da classe
É importante e recomendado utilizar o
r
raw string para evitar que o python interprete caracteres especiais na avaliação do pattern. Ex.:match(r'\\section', '\\section\n')
|
pipe, representa oOR
Usa-se a notação com {}
Quantidades específicas de repetições
{int}
Exatamente a quantidade de digitos
match(r'\d{4}', '123456')
# Encontra '1234'
Quantidades mínima de repetições
{from, to}
de até
match(r'\d{2, }', '123456')