diff --git a/README.md b/README.md index 99b1a60..816210d 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,137 @@ # Repositório de Propostas e projetos de Ensino, Pesquisa e Extensão - REPEX -Para usar o sistema, siga esses passos: +Os projetos de ensino, pesquisa e extensão do IFRN carecem de uma plataforma web centralizada e acessível para divulgação. Este projeto propõe o desenvolvimento de um sistema web de código aberto e totalmente replicável/personalizável pelo cliente, utilizando o framework Django, que permita a divulgação de projetos em andamento, concluídos e de propostas para prospectar alunos e parceiros interessados. -## Para usar o login com suap, crie uma aplicação aouth2 e configure a redirect URI: - /users/auth/callback/ -#### URL em ambiente de desenvolvimento: - http://localhost:8000/users/auth/callback/ - http://127.0.0.1:8000/users/auth/callback/ +## Tecnologias Utilizadas +- Python 3.13 +- Django 5.2.5 +- Banco de dados: Postgres +## Pré-requisitos +- Python 3.8 ou superior +- MySQL +- Git -### Após clonar o sistema, ative a venv e instale as dependências: - pip install -r requirements.txt +## Instalação e Configuração -## Caso esteja em ambiente de desenvolvimento, defina debug=True e troque o conteúdo de DATABASES por: - DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', - } - } +### 1. Clone o repositório +```bash +git clone https://github.com/IFRN-SPP/repex.git +cd repex +``` -### Após isso faça as migrações: - python .\manage.py migrate +### 2. Crie e ative um ambiente virtual -### Crie o arquivo .env e adicione: - SUAP_CLIENT_ID = - SUAP_CLIENT_SECRET = - SECRET_KEY = desenvolvimento (Use outra em ambiente de produção) - REDIRECT_URI = http://127.0.0.1:8000/users/auth/callback/ (Use /users/auth/callback/ em ambiente de produção) +**Windows:** +```bash +python -m venv venv +venv\Scripts\activate +``` -### Por fim, rode: - python .\manage.py runserver +**Linux/Mac:** +```bash +python3 -m venv venv +source venv/bin/activate +``` -### Caso necessário, instale objetos prontos para visualização do sistema funcional (apenas após o primeiro login realizado): - python .\manage.py loaddata .\repex\fixtures\exemplo.json \ No newline at end of file +### 3. Instale as dependências +```bash +pip install -r requirements.txt +``` +Este comando irá instalar todas as bibliotecas necessárias listadas no arquivo `requirements.txt`. + +### 4. Configure as variáveis de ambiente + +```bash +cp .env.example .env +``` + +### 5. Execute as migrações do banco de dados + +```bash +python manage.py migrate +``` + +### 6. (Opcional) Crie um superusuário + +Para acessar o painel administrativo do Django: + +```bash +python manage.py createsuperuser +``` + +### 7. Execute o servidor +```bash +python manage.py runserver +``` + +Acesse: http://localhost:8000 + +## Estrutura do Projeto + +``` +REPEX/ +│ +├── config/ # Arquivos de configuração para aplicação do Django +│ +├── docs/ # Documentação +│ ├── imgs/ # Imagens do do usuário +│ ├── README.md # Detalhes da engenharia de software +| +├── repex/ # App principal do sistema +│ ├── fixtures/ # Objetos prontos para testes +│ ├── templates/ # Páginas HTML +│ | ├── partials/ # Estruturas HTML parceladas +│ ├── templatetags/ # Funções extras para templates +│ | ├── news_extras.py # Função para fazer com que o carrossel de notícias funcione +│ ├── __init__.py # Arquivo de execução do django +│ ├── admin.py # Arquivo de execução do django admin +│ ├── apps.py # Arquivo de execução de app do django +│ ├── context_processors.py # Funções que renderizam dados em todas as páginas do sistema +│ ├── forms.py # Configuração de formulários +│ ├── models.py # Estrutura do banco de dados +│ ├── urls.py # Caminhos das páginas e funções +│ ├── views.py # Lógica, execução e renderização de dados das páginas e funções +| +├── users/ # App relativo aos usuários do sistema +│ ├── templates/ # Páginas HTML +│ ├── __init__.py # Arquivo de execução do django +│ ├── admin.py # Arquivo de execução do django admin +│ ├── apps.py # Arquivo de execução de app do django +│ ├── forms.py # Configuração de formulários +│ ├── managers.py # Configuração de criação de usuário via terminal +│ ├── models.py # Estrutura do banco de dados +│ ├── oauthlib_client.py # Função para login com Suap +│ ├── signals.py # Definição do grupo e permissões de professor +│ ├── urls.py # Caminhos das páginas e funções +│ ├── views.py # Lógica, execução e renderização de dados das páginas e funções +| +├── .env # Variáveis de ambiente (NÃO vai pro Git) +├── .env.example # Modelo de variáveis de ambiente +├── .gitignore # Arquivos ignorados pelo Git +| +├── LICENSE # Licença do projeto +| +├── manage.py # Script principal do Django +| +├── README.md # Este arquivo +├── requirements-prod.txt # Dependências do projeto para produção +├── requirements.txt # Dependências do projeto +│ + +``` + +--- + +## Funcionalidades +- Gerenciamento do sistema de forma simplificada +- Autenticação e gestão de usuários (registro, login, logout) +- Gerenciamento de projetos e notícias +- Painel administrativo + +## Autores +- [Wescley Plínio Damasceno Galdino](https://github.com/WescleyPlinio) +- [Ellainy Nayara Motta dos Santos](https://github.com/ellainy) +- [João Henrique de Oliveira Silva](https://github.com/joaohenrique15) + +## Licença +- Veja os detalhes em [Licença MIT](LICENSE) diff --git a/docs/README.md b/docs/README.md index a95b02b..3a44af1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,5 @@ # Engenharia de software - REPEX -Documentação de engenharia de software. [Clique aqui para ver a documentação técnica do Repex](code.md) +Documentação de engenharia de software. ## Sumário - [Resumo](#resumo) diff --git a/docs/code.md b/docs/code.md deleted file mode 100644 index 479f050..0000000 --- a/docs/code.md +++ /dev/null @@ -1,61 +0,0 @@ -# Documentação técnica - REPEX -Documentação técnica do software. [Clique aqui para ver a engenharia do Repex](index.md) - -## Sumário -- [Organização do ambiente](#organização-do-ambiente) -- [Diretórios e arquivos](#diretórios-e-arquivos) -- [Pasta config](#app-repex) -- [App Repex](#app-repex) -- [App Users](#app-users) - - -## Organização do ambiente: -Estrutura principal, desde a raíz do projeto: - -- REPEX/ - - - config/ - - init.py - - asgi.py - - settings.py - - wsgi.py - - - repex/ - - migrations/ - - templates/ - - templatetags/ - - init.py - - admin.py - - apps.py - - context_processors.py - - forms.py - - models.py - - tests.py - - urls.py - - views.py - - - users/ - - migrations/ - - templates/ - - init.py - - admin.py - - apps.py - - forms.py - - managers.py - - models.py - - oauthlib_client.py - - signals.py - - tests.py - - urls.py - - views.py - - - .gitignore - - LICENSE - - manage.py - - README.md - -## Diretórios e arquivos: - -## App Repex: - -## App Users: diff --git a/repex/forms.py b/repex/forms.py index 64f4dfe..6559a4b 100644 --- a/repex/forms.py +++ b/repex/forms.py @@ -1,6 +1,6 @@ from django import forms from django_select2.forms import Select2MultipleWidget -from .models import Projeto, FotoProjeto, IdentidadeVisual +from .models import Projeto, FotoProjeto, IdentidadeVisual, UserSocialLink from crispy_forms.layout import Layout, Field from crispy_forms.helper import FormHelper from tinymce.widgets import TinyMCE @@ -8,6 +8,18 @@ class MultiFileInput(forms.ClearableFileInput): allow_multiple_selected = True +class UserSocialLinkForm(forms.ModelForm): + class Meta: + model = UserSocialLink + fields = [ + "rede", + "url", + ] + labels = { + "rede": "Selecione uma rede social:", + "url": "Digite o seu username:" + } + class ProjetoForm(forms.ModelForm): class Meta: model = Projeto diff --git a/repex/templates/base.html b/repex/templates/base.html index b89079a..be86acd 100644 --- a/repex/templates/base.html +++ b/repex/templates/base.html @@ -9,6 +9,7 @@ Repex {% endblock %} + diff --git a/repex/templates/identidade_visual_form.html b/repex/templates/identidade_visual_form.html index 20d6853..e79ff03 100644 --- a/repex/templates/identidade_visual_form.html +++ b/repex/templates/identidade_visual_form.html @@ -11,16 +11,4 @@

{% if form.i Cancelar -{% endblock %} -{% block extra_scripts %} - -{% endblock extra_scripts %} +{% endblock %} \ No newline at end of file diff --git a/repex/templates/index.html b/repex/templates/index.html index f92ab9a..38d8dc4 100644 --- a/repex/templates/index.html +++ b/repex/templates/index.html @@ -140,27 +140,28 @@