fix(): Criado função que gera o hash para visualização de documentos
This commit is contained in:
parent
02228d2569
commit
c6eb6c38c5
3 changed files with 41 additions and 4 deletions
28
actions/validations/hash.py
Normal file
28
actions/validations/hash.py
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# utils/hash_generator.py
|
||||
|
||||
from datetime import date
|
||||
import hashlib
|
||||
|
||||
|
||||
def generate_storage_hash() -> str:
|
||||
"""
|
||||
Gera um hash SHA-256 baseado na data atual no formato YYYYMMDD.
|
||||
Útil, por exemplo, para criar chaves ou nomes únicos em arquivos estáticos.
|
||||
|
||||
Retorna:
|
||||
str: Hash SHA-256 em formato hexadecimal.
|
||||
"""
|
||||
# Obtém a data atual (somente ano, mês e dia)
|
||||
today = date.today()
|
||||
|
||||
# Formata a data como string "YYYYMMDD"
|
||||
storage_date = today.strftime("%Y%m%d")
|
||||
|
||||
# Cria o objeto de hash SHA-256
|
||||
h = hashlib.sha256()
|
||||
|
||||
# Atualiza o hash com o texto codificado em UTF-8
|
||||
h.update(storage_date.encode("utf-8"))
|
||||
|
||||
# Retorna o hash em formato hexadecimal
|
||||
return h.hexdigest()
|
||||
3
main.py
3
main.py
|
|
@ -15,6 +15,7 @@ from pathlib import Path
|
|||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import Response
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from actions.validations.hash import generate_storage_hash
|
||||
|
||||
# Importa middleware de captura de erros junto ao banco de dados
|
||||
from middlewares.error_handler import database_error_handler
|
||||
|
|
@ -43,7 +44,7 @@ if not os.path.isdir(STORAGE_DIR):
|
|||
# 3. Monte o diretório estático
|
||||
# Isso mapeia o caminho local STORAGE_DIR para o prefixo de URL '/storage-files'
|
||||
app.mount(
|
||||
"/storage-files", # <- ESTE É O PREFIXO DA URL PÚBLICA
|
||||
"/" + generate_storage_hash(), # <- ESTE É O PREFIXO DA URL PÚBLICA
|
||||
StaticFiles(directory=STORAGE_DIR),
|
||||
name="storage_access",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from packages.v1.administrativo.models.ato_documento_model import AtoDocumento
|
|||
from packages.v1.administrativo.schemas.ato_principal_schema import (
|
||||
AtoPrincipalCodigoAtoSchema,
|
||||
)
|
||||
from datetime import datetime
|
||||
from actions.validations.hash import generate_storage_hash
|
||||
|
||||
# === Recupera configurações e chave AES ===
|
||||
DB_SETTINGS = get_database_settings()
|
||||
|
|
@ -107,7 +107,11 @@ class ShowAtosRepository:
|
|||
documentos_list = [
|
||||
{
|
||||
"url": (
|
||||
URL_API + "/storage-files/" + d.url.decode("utf-8")
|
||||
URL_API
|
||||
+ "/"
|
||||
+ generate_storage_hash()
|
||||
+ "/"
|
||||
+ d.url.decode("utf-8")
|
||||
if d.url
|
||||
else None
|
||||
),
|
||||
|
|
@ -171,7 +175,11 @@ class ShowAtosRepository:
|
|||
documentos_vinc_list = [
|
||||
{
|
||||
"url": (
|
||||
URL_API + "/storage-files/" + d.url.decode("utf-8")
|
||||
URL_API
|
||||
+ "/"
|
||||
+ generate_storage_hash()
|
||||
+ "/"
|
||||
+ d.url.decode("utf-8")
|
||||
if d.url
|
||||
else None
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue