6135 / dia-aberto-new

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pre-requisitos

Instalação

  1. Abrir o terminal na pasta onde vai ser guardado o projeto

e.g.:

cd ~/Documentos/Universidade/LES
  1. Clonar o projeto do github
git clone https://github.com/6135/dia-aberto-new.git
  1. Entrar na pasta do projeto
cd dia-aberto-new
  1. Criar o ambiente do projeto (venv)

Atenção: A versão de Python com a qual criar o ambiente do projeto deve ser igual para todos (v3.8.2)

Para verificar se a versão de Python instalada é a indicada:

Linux:

python3.8 -V

Windows:

python -V

Se o comando anterior não devolver Python 3.8.2, há que mudar a versão antes de criar o ambiente.

Se a versão do Python estiver correta, segue a criação do ambiente (na pasta do projeto):

Linux:

python3.8 -m venv env

Windows:

python -m venv env
  1. Ativar o ambiente no terminal

Linux:

source env/bin/activate

Windows:

env\Scripts\activate

Em Windows às vezes há problemas neste passo. Se der ErrorSecurityPolicy, ou algo do género, tentar isto na mesma shell:

Set-ExecutionPolicy Unrestricted -Force
env\Scripts\activate

A extensão padrão de Python do VSCode tem a opção de ativar automaticamente o ambiente em novos terminais. Para ativar a funcionalidade, há que abrir a Palete de Comandos (F1), Python: Selecionar Interpretador e escolher a opção cuja localização comece com ./env ou .\env.

  1. Atualizar as dependências iniciais do ambiente
pip install --upgrade pip setuptools
  1. Instalar as dependências do projeto
pip install -r requirements.txt
  1. Criar um ficheiro .env dentro da pasta dia_aberto (a mesma que tem o settings.py), com as informações sensíveis, como credenciais de acesso à base de dados

O ficheiro .env deve ter o mesmo género de formato do ficheiro já criado "example.env".

As informações de acesso à base de dados do servidor do Gui devem-lhe ser solicitadas.

Para ligar a uma base de dados MySQL local, por exemplo, o .env pode ser:

DATABASE_URL=mysql://user:password@localhost:3306/db
SECRET_KEY=q1^j3mv#y9-n&^*j)-rd3@lqqu@jv49p_99$mefzljeuz#fra3
EMAIL_HOST_USER=suporte.dia.aberto@gmail.com
EMAIL_HOST_PASSWORD=password # Pedir ao Barrocas
  1. Gerar uma nova SECRET_KEY aleatória (https://djecrety.ir/) e substituí-la no .env

  2. Criar uma DB vazia e substituir no .env

mysql -u [user] -p
CREATE DATABASE diaAberto
  1. Gerar os ficheiros de migrações
python manage.py makemigrations notificacoes
python manage.py makemigrations atividades
python manage.py makemigrations colaboradores
python manage.py makemigrations configuracao
python manage.py makemigrations coordenadores
python manage.py makemigrations inscricoes
python manage.py makemigrations notifications
python manage.py makemigrations auth
python manage.py makemigrations utilizadores
  1. Gerar as tabelas da DB
python manage.py migrate
  1. Criar os grupos
python manage.py create_groups
  1. Criar o primeiro administrador
python manage.py create_admin [password]

Comandos fundamentais

Ativar o ambiente virtual no terminal

Linux:

source env/bin/activate

Windows:

env\Scripts\activate

Desativar o ambiente virtual no terminal

deactivate

Iniciar o servidor localmente

python manage.py runserver

Gerar migrações automaticamente através dos modelos

python manage.py makemigrations

Aplicar as migrações à base de dados

python manage.py migrate

Instalar nova dependência

pip install nome_da_dependência && pip freeze > requirements.txt

Instalar lista de dependências necessárias

pip install -r requirements.txt

Criar nova app (cada "componente" vai ser uma "app")

python manage.py startapp nome_da_app

Gerar automaticamente modelos através de tabelas da base de dados

python manage.py inspectdb tabela1 tabela2 > nome_da_app/models.py

Dependências

Dependência Descrição / (Dependência Pai)
pip Gestor de Pacotes (Python)
setuptools Ferramentas (Python)
Django Web Framework
sqlparse (Django)
pytz (Django)
asgiref (Django)
mysqlclient Conector de Python a MySQL
autopep8 Python Formatter
pycodestyle (autopep8)
django-environ Suporte de .env
django-filter Django Filters
django-formtools SessionWizard e outras Formtools
pyquery (django-formtools)
cssselect (pyquery)
lxml (pyquery)
django-phonenumber-field PhoneNumberField
phonenumbers (django-phonenumber-field)
Babel (django-phonenumber-field)
django-tables2 Filtros/Sorting/Pagination de tabelas

About


Languages

Language:JavaScript 45.9%Language:Python 19.7%Language:HTML 17.2%Language:CSS 15.4%Language:SCSS 1.7%Language:Makefile 0.1%Language:Batchfile 0.1%Language:Shell 0.0%