README.md 5.52 KB
Newer Older
João Denis Rodrigues's avatar
João Denis Rodrigues committed
1
# ADEGA
2
3


João Denis Rodrigues's avatar
João Denis Rodrigues committed
4
Este software faz parte de um projeto do PET Computação UFPR para 
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
5
análise de dados dos cursos de graduação da UFPR. Veja a [wiki](http://gitlab.c3sl.ufpr.br/adega/adega/wikis/home).
João Denis Rodrigues's avatar
João Denis Rodrigues committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


## Versão
0.0.0



## Obtendo os códigos


Os códigos fonte do projeto estão disponíveis publicamente no [gitlab]
(gitlab.c3sl.ufpr.br/pet/adega).

E podem ser clonado com o comando

```bash
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
22
$ git clone git@gitlab.c3sl.ufpr.br:adega/adega.git
João Denis Rodrigues's avatar
João Denis Rodrigues committed
23
```
24
## Instalação e dependências com docker
João Denis Rodrigues's avatar
João Denis Rodrigues committed
25

26
27
28
29
30
31
32
33
34
35
Para executar o projeto com o docker, siga os seguintes passos:
```bash
$ git clone git@gitlab.c3sl.ufpr.br:adega/adega.git # Comando já executado
$ cd adega/
$ sudo make docker-install # Instala o docker.io e docker-compose
$ sudo make docker-up # Executa os containers postgres e webserver
```

## Desenvolvimento com o docker

Bruno Meyer's avatar
Bruno Meyer committed
36
37
### Dependências
Docker >=1.13.1
Bruno Meyer's avatar
Bruno Meyer committed
38
39


Bruno Meyer's avatar
Bruno Meyer committed
40
41
Docker-compose >=1.21.2

Bruno Meyer's avatar
Bruno Meyer committed
42
43
44
45
46
47
48
49
50
51
52
53
#### Possíveis erros:
*1*: O docker-compose padrão nos repositórios podem não conter a versão mais recente. Caso a etapa de instalação não funcione, consulte a [referência dos desenvolvedores](https://github.com/docker/compose/releases).


*2*: Seu computador pode ter problemas ao configurar o DNS. Neste caso, erros parecidos como os a seguir irão acontecer:
```bash
E: Unable to locate package python3-pip
E: Unable to locate package postgresql-client
```


Neste caso, consulte [este tutorial](https://development.robinwinslow.uk/2016/06/23/fix-docker-networking-dns/) para resolver o problema.
msrr18's avatar
msrr18 committed
54
Lembre de utilizar o comando `sudo docker system prune -a` para limpar a cache e evitar os problemas.
Bruno Meyer's avatar
Bruno Meyer committed
55
56

### Uso
Bruno Meyer's avatar
Bruno Meyer committed
57
Enquanto o `sudo make docker-up` estiver sendo executado, as alterações feitas nos arquivos do projeto serão compartilhadas com os arquivos do container docker. Ou seja, é possível alterar qualquer arquivo do projeto e haverá resultados em tempo real.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77


Assim como é possível realizar qualquer comando como seria feito no com o manage.py, também é possível por meio do comando `sudo make docker-manage`. Por exemplo:
```bash
$ sudo make docker-manage makemigrations uploads
$ sudo make docker-manage migrate
$ sudo make docker-manage createsuperuser
```

Para realizar esses comandos, certifique-se que o comando `make docker-up`está em execução (recomenda-se deixar uma aba no terminal para isso).

## Recomendações para o docker
É recomendado que o usuário configure o docker para que o mesmo possa ser executado sem necessidades de privilégios de superusuário, assim não haverá necessidade do uso de `sudo`. Caso contrário, os comandos realizados com `sudo make` poderão criar arquivos cujo proprietário é o usuário `root`. Caso a recomendação não for seguida, o seguinte comando irá alterar o proprietário dos arquivos para o usuário atual:
```bash
$ sudo make docker-fix
```

## Remover os containers + banco de dados
Para apagar os containers e o banco de dados, execute o seguinte comando:
```bash
Bruno Meyer's avatar
Bruno Meyer committed
78
$ sudo make docker-remove-all
79
80
```
*Observação*: Esse comando **não** irá deletar qualquer arquivo do projeto / diretório local, apenas os containers.   
João Denis Rodrigues's avatar
João Denis Rodrigues committed
81

82
## Instalação e dependências manuais (não recomendado)
João Denis Rodrigues's avatar
João Denis Rodrigues committed
83
84
85


```bash
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
86
87
88
sudo make install
make install-user
pipenv install --dev
João Denis Rodrigues's avatar
João Denis Rodrigues committed
89
90
```

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
91
92
93
94
95
96
97
Criar o banco de dados postgres

```
sudo -u postgres psql < postgres/create.sql
```


João Denis Rodrigues's avatar
João Denis Rodrigues committed
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
se você possui o arquivo do banco de dados compartilhado internamente pelos 
desenvolvedores do projeto coloque-o na home do projeto, ele vem com um usuário 
`pet` com senha `pet` pré-configurado para testes.


se você não possui o arquivo rode

```bash
python manage.py migrate
python manage.py createsuperuser
```


## Executando o projeto

113
Por padrão ele irá rodar no 127.0.0.1:8000, ative o virtualenv antes
João Denis Rodrigues's avatar
João Denis Rodrigues committed
114
```bash
115
pipenv shell
João Denis Rodrigues's avatar
João Denis Rodrigues committed
116
117
118
119
120
python manage.py runserver
```

Se estiver usando o cloud9 use o ip e a porta que ele libera, assim:
```bash
121
pipenv shell
João Denis Rodrigues's avatar
João Denis Rodrigues committed
122
123
python manage.py runserver $IP:$PORT
```
124

João Denis Rodrigues's avatar
João Denis Rodrigues committed
125
126
Então acesse pela url fornecida

127
128
Ao sair do projeto execute `exit` para sair do virtualenv e evitar polui-lo

João Denis Rodrigues's avatar
João Denis Rodrigues committed
129
130
131
132
133
## Transformando o seu usuário em um professor

Após você logar no sistema com o seu super usuário você terá acesso ao `URL_DO_SITE/admin`, graças ao [Django admin](https://docs.djangoproject.com/en/1.10/ref/contrib/admin/) nesta tela você é capaz de gerenciar os dados salvos nas models do projeto.   
Para transformar o seu usuário em professor basta clicar em `professor`e então selecionar o seu usuário e o curso. Agora se você voltar para a página inicial do sistema você deve ver uma listagem dos seus cursos. 

msrr18's avatar
msrr18 committed
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
## Executando análises

Para executar as análises, acesse `localhost:8000/admin` e adicione um submission.
Após isso execute o comando:

```bash
sudo make docker-manage analyze 1 # usando o docker
```


ou



```bash
python3 manage.py analyze 1
```


Onde 1 é o id do submission.


João Denis Rodrigues's avatar
João Denis Rodrigues committed
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

## Gerar diagrama do projeto

Basta executar:
```bash
python manage.py graph_models -a -o diagrama.png
```

### Entendendo as dependências do projeto:

* [Django](https://www.djangoproject.com/) - Framework base. Trata a requisição dos clientes e chama as devidas rotinas.
* [Bootstrap](http://getbootstrap.com/) - Framework css. Usamos os seus componentes para deixar as telas bonitas
* [Charts.js](http://www.chartjs.org/) - Biblioteca javascript para desenhar gráficos.
* [Pandas](http://pandas.pydata.org/) - usada para importação dos dados
* [django-extensions](https://django-extensions.readthedocs.io/en/latest/) - Várias extensões para o django. Estamos usando para gerar o diagrama do projeto.


## Contato


Email - pet@inf.ufpr.br

Facebook - pt-br.facebook.com/petcompufpr