Compare commits
No commits in common. "2eb8cadfc6f6cd54fb6af025b1c9e41e7990deaf" and "b6a66e297fb03869722f91fe681326c59e61799e" have entirely different histories.
2eb8cadfc6
...
b6a66e297f
|
|
@ -7,4 +7,3 @@
|
||||||
/.idea/modules.xml
|
/.idea/modules.xml
|
||||||
/.idea/rifalto.iml
|
/.idea/rifalto.iml
|
||||||
/.idea/vcs.xml
|
/.idea/vcs.xml
|
||||||
.aider*
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
FROM python:3.13-slim
|
FROM python:3.11-slim-buster
|
||||||
|
|
||||||
RUN pip install --no-cache-dir gunicorn
|
RUN pip install --no-cache-dir gunicorn
|
||||||
|
|
||||||
WORKDIR /rifalto
|
WORKDIR /rifalto
|
||||||
COPY requirements.txt /rifalto
|
COPY requirements.txt /rifalto
|
||||||
RUN pip install --root-user-action ignore --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
RUN rm requirements.txt
|
RUN rm requirements.txt
|
||||||
|
|
||||||
EXPOSE 5000
|
EXPOSE 5000
|
||||||
|
|
|
||||||
143
README.md
143
README.md
|
|
@ -1,143 +0,0 @@
|
||||||
# Rifalto - Sistema de Rifas
|
|
||||||
|
|
||||||
Um sistema web para gerenciamento de rifas e vendas de números, desenvolvido em Flask.
|
|
||||||
|
|
||||||
## Descrição
|
|
||||||
|
|
||||||
O Rifalto é uma aplicação web que permite:
|
|
||||||
- Criação e gerenciamento de rifas
|
|
||||||
- Venda de números por vendedores autenticados
|
|
||||||
- Reserva de números pelos compradores
|
|
||||||
- Controle de estoque de números disponíveis
|
|
||||||
- Backup automático do banco de dados
|
|
||||||
|
|
||||||
## Instalação
|
|
||||||
|
|
||||||
### Usando Docker (Recomendado)
|
|
||||||
|
|
||||||
1. Clone o repositório
|
|
||||||
2. Configure o arquivo de configuração (veja seção de Configuração)
|
|
||||||
3. Execute com Docker:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker build -t rifalto .
|
|
||||||
docker run -p 5000:5000 -v $(pwd)/instance:/rifalto/instance rifalto
|
|
||||||
```
|
|
||||||
|
|
||||||
### Instalação Local
|
|
||||||
|
|
||||||
1. Clone o repositório
|
|
||||||
2. Instale as dependências:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install -r requirements.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Configure as variáveis de ambiente:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export FLASK_APP=rifaserver.app
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Execute a aplicação:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./start.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## Configuração
|
|
||||||
|
|
||||||
### Arquivo de Configuração
|
|
||||||
|
|
||||||
Crie um arquivo `instance/config.json` na raiz do projeto com as seguintes configurações:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"SECRET_KEY": "sua-chave-secreta-aqui",
|
|
||||||
"REDIRECT_ROOT_URL": "https://seu-site.com"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Parâmetros de configuração:**
|
|
||||||
|
|
||||||
- `SECRET_KEY`: Chave secreta para sessões Flask (será gerada automaticamente se não fornecida)
|
|
||||||
- `REDIRECT_ROOT_URL`: URL para redirecionamento da página raiz (opcional)
|
|
||||||
|
|
||||||
### Variáveis de Ambiente
|
|
||||||
|
|
||||||
Você também pode configurar usando variáveis de ambiente com prefixo `FLASK_`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export FLASK_SECRET_KEY="sua-chave-secreta"
|
|
||||||
export FLASK_REDIRECT_ROOT_URL="https://seu-site.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Comandos CLI
|
|
||||||
|
|
||||||
### Criar Vendedor
|
|
||||||
|
|
||||||
```bash
|
|
||||||
flask create-seller <username> <password>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Criar Rifa
|
|
||||||
|
|
||||||
```bash
|
|
||||||
flask cria-rifa "<descrição da rifa>"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Alterar Senha
|
|
||||||
|
|
||||||
```bash
|
|
||||||
flask muda-senha <usuario> <nova_senha>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Estrutura do Banco de Dados
|
|
||||||
|
|
||||||
O sistema usa SQLite por padrão e cria automaticamente as seguintes tabelas:
|
|
||||||
- `sellers`: Vendedores do sistema
|
|
||||||
- `purchases`: Compras/vendas realizadas
|
|
||||||
- `raffles`: Rifas disponíveis
|
|
||||||
- `tickets`: Números reservados
|
|
||||||
|
|
||||||
## Backup
|
|
||||||
|
|
||||||
O sistema realiza backup automático do banco de dados a cada hora, salvando os arquivos na pasta `instance/backup/`.
|
|
||||||
|
|
||||||
## Desenvolvimento
|
|
||||||
|
|
||||||
### Executar Testes
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pytest test/
|
|
||||||
```
|
|
||||||
|
|
||||||
### Migrações do Banco
|
|
||||||
|
|
||||||
```bash
|
|
||||||
flask db upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
## Estrutura de Arquivos
|
|
||||||
|
|
||||||
```
|
|
||||||
rifalto/
|
|
||||||
├── rifaserver/ # Código principal da aplicação
|
|
||||||
│ ├── app.py # Aplicação Flask principal
|
|
||||||
│ ├── models.py # Modelos do banco de dados
|
|
||||||
│ ├── templates/ # Templates HTML
|
|
||||||
│ └── static/ # Arquivos estáticos (CSS, JS)
|
|
||||||
├── migrations/ # Migrações do banco de dados
|
|
||||||
├── test/ # Testes automatizados
|
|
||||||
├── instance/ # Arquivos de configuração e dados
|
|
||||||
│ ├── config.json # Configuração da aplicação
|
|
||||||
│ ├── raffle.db # Banco de dados SQLite
|
|
||||||
│ └── backup/ # Backups automáticos
|
|
||||||
├── requirements.txt # Dependências Python
|
|
||||||
├── Containerfile # Configuração Docker
|
|
||||||
└── start.sh # Script de inicialização
|
|
||||||
```
|
|
||||||
|
|
||||||
## Licença
|
|
||||||
|
|
||||||
[Adicione informações de licença aqui]
|
|
||||||
|
|
@ -68,7 +68,6 @@ def create_app():
|
||||||
app.config['SECRET_KEY'] = secrets.token_hex()
|
app.config['SECRET_KEY'] = secrets.token_hex()
|
||||||
print(f"Using generated key {app.config['SECRET_KEY']}")
|
print(f"Using generated key {app.config['SECRET_KEY']}")
|
||||||
_config['SECRET_KEY'] = app.config['SECRET_KEY']
|
_config['SECRET_KEY'] = app.config['SECRET_KEY']
|
||||||
os.makedirs(app.instance_path, exist_ok=True)
|
|
||||||
with open(config_filename, 'w') as f:
|
with open(config_filename, 'w') as f:
|
||||||
json.dump(_config, f)
|
json.dump(_config, f)
|
||||||
db.init_app(app)
|
db.init_app(app)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue