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.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import Response
|
from fastapi.responses import Response
|
||||||
from starlette.middleware.base import BaseHTTPMiddleware
|
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
|
# Importa middleware de captura de erros junto ao banco de dados
|
||||||
from middlewares.error_handler import database_error_handler
|
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
|
# 3. Monte o diretório estático
|
||||||
# Isso mapeia o caminho local STORAGE_DIR para o prefixo de URL '/storage-files'
|
# Isso mapeia o caminho local STORAGE_DIR para o prefixo de URL '/storage-files'
|
||||||
app.mount(
|
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),
|
StaticFiles(directory=STORAGE_DIR),
|
||||||
name="storage_access",
|
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 (
|
from packages.v1.administrativo.schemas.ato_principal_schema import (
|
||||||
AtoPrincipalCodigoAtoSchema,
|
AtoPrincipalCodigoAtoSchema,
|
||||||
)
|
)
|
||||||
from datetime import datetime
|
from actions.validations.hash import generate_storage_hash
|
||||||
|
|
||||||
# === Recupera configurações e chave AES ===
|
# === Recupera configurações e chave AES ===
|
||||||
DB_SETTINGS = get_database_settings()
|
DB_SETTINGS = get_database_settings()
|
||||||
|
|
@ -107,7 +107,11 @@ class ShowAtosRepository:
|
||||||
documentos_list = [
|
documentos_list = [
|
||||||
{
|
{
|
||||||
"url": (
|
"url": (
|
||||||
URL_API + "/storage-files/" + d.url.decode("utf-8")
|
URL_API
|
||||||
|
+ "/"
|
||||||
|
+ generate_storage_hash()
|
||||||
|
+ "/"
|
||||||
|
+ d.url.decode("utf-8")
|
||||||
if d.url
|
if d.url
|
||||||
else None
|
else None
|
||||||
),
|
),
|
||||||
|
|
@ -171,7 +175,11 @@ class ShowAtosRepository:
|
||||||
documentos_vinc_list = [
|
documentos_vinc_list = [
|
||||||
{
|
{
|
||||||
"url": (
|
"url": (
|
||||||
URL_API + "/storage-files/" + d.url.decode("utf-8")
|
URL_API
|
||||||
|
+ "/"
|
||||||
|
+ generate_storage_hash()
|
||||||
|
+ "/"
|
||||||
|
+ d.url.decode("utf-8")
|
||||||
if d.url
|
if d.url
|
||||||
else None
|
else None
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue