Skip to content

feat: acesso rápido ao Prefect 3 nos Flow Schedules - staging - #1076

Merged
Winzen merged 1 commit into
stagingfrom
feat/disabled-flow-schedule-prefect-link
Aug 22, 2026
Merged

feat: acesso rápido ao Prefect 3 nos Flow Schedules - staging#1076
Winzen merged 1 commit into
stagingfrom
feat/disabled-flow-schedule-prefect-link

Conversation

@Winzen

@Winzen Winzen commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Nova funcionalidade: acesso rápido ao Prefect 3 nos Flow Schedules

Contexto

Pra abrir um flow no Prefect 3 a partir do admin de "Disabled Flow Schedules", era preciso copiar o deployment_id da linha e montar a URL na mão. Registro completo em #1074.

O que tem nesse PR

backend/apps/admin_data_tools/
├── models.py       # verbose_name/verbose_name_plural: "Flow Schedule(s)"
├── admin.py        # flow_name_display: nome do flow + link Django + botão Prefect
└── migrations/0004_alter_disabledflowschedule_options.py

Renomeado pra "Flow Schedules"

DisabledFlowSchedule continua sendo o nome da classe/tabela — só o texto exibido no admin mudou:

class Meta:
    ordering = ["-disabled_at"]
    verbose_name = "Flow Schedule"
    verbose_name_plural = "Flow Schedules"

Botão "Prefect ↗" ao lado do nome do flow

def flow_name_display(self, obj):
    change_url = reverse(
        f"admin:{obj._meta.app_label}_{obj._meta.model_name}_change", args=[obj.pk]
    )
    prefect_ui_url = settings.PREFECT3_API_URL.removesuffix("/api")
    deployment_url = f"{prefect_ui_url}/v2/deployments/deployment/{obj.deployment_id}?tab=Runs"
    return format_html(
        '<a href="{}">{}</a> <a href="{}" target="_blank" rel="noopener" '
        'class="btn btn-secondary btn-sm" style="padding: 1px 6px;">Prefect ↗</a>',
        change_url, obj.flow_name, deployment_url,
    )

Usado tanto em list_display (lista) quanto em fields/readonly_fields (página de detalhe) — mesmo método, mesmo resultado nos dois lugares.

Por que o link do Django é montado à mão

O jeito "padrão" no Django admin seria usar list_display_links pra deixar a primeira coluna clicável automaticamente. Não funciona aqui: o Django envolveria minha célula — que já tem o <a> do Prefect — em outro <a>, gerando link aninhado (HTML inválido, clique imprevisível). Por isso o link do Django é construído com reverse() dentro do próprio método, e list_display_links fica None — não []: o Django trata lista vazia como "não configurado" e volta a linkar a primeira coluna sozinho, reproduzindo o mesmo problema.

Benefícios

  • Um clique pra ver o flow no Django, outro pra abrir o deployment no Prefect — sem copiar/colar deployment_id
  • Nome mais claro no menu (a maioria dos registros nem está desativada no momento, "Disabled" confundia)

Acompanhamento

Registro e test plan em #1074.

Cada linha de Flow Schedule (renomeado de "Disabled Flow Schedules")
agora mostra o nome do flow com dois links lado a lado: um pra abrir o
registro no Django, outro ("Prefect ↗") pra abrir o deployment direto
no Prefect 3 (/v2/deployments/deployment/<id>?tab=Runs) — sem precisar
copiar o deployment_id e montar a URL manualmente.

flow_name_display monta os dois links à mão em vez de usar
list_display_links, porque o mecanismo automático do Django envolveria
a célula (que já tem um <a> pro Prefect) em outro <a>, gerando link
aninhado. list_display_links precisa ficar None, não [] — o Django
trata lista vazia como "não configurado" e volta a linkar a primeira
coluna sozinho.
@mergify

mergify Bot commented Aug 22, 2026

Copy link
Copy Markdown

⚠️ The sha of the head commit of this PR conflicts with #1075. Mergify cannot evaluate rules on this PR. Once #1075 is merged or closed, Mergify will resume processing this PR. ⚠️

@Winzen Winzen self-assigned this Aug 22, 2026
@Winzen Winzen added the staging Indica que o Pull Request está com a branch de destino (base) apontando para staging label Aug 22, 2026
@Winzen
Winzen merged commit a34a2eb into staging Aug 22, 2026
8 checks passed
@Winzen
Winzen deleted the feat/disabled-flow-schedule-prefect-link branch August 22, 2026 09:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

staging Indica que o Pull Request está com a branch de destino (base) apontando para staging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant