Skip to content

[profiles] Adicionar listas padronizadas para Cidade, País e Etnia no formulário de perfil

Atualmente, os campos Cidade, País e Etnia do formulário de perfil são de texto livre. Isso permite variações de escrita e torna os dados inconsistentes, dificultando filtragem e relatórios. A proposta é adicionar listas padronizadas ou autocomplete com valores pré-definidos, seguindo boas práticas de UX e acessibilidade (WCAG + i18n).

1- Passos para reproduzir Acesse o menu do usuário → Editar perfil Observe os campos “Cidade”, “País” e “Etnia” Todos permitem digitação livre sem sugestões nem validação

2 - Resultado atual Usuário digita qualquer valor. Diferenças de grafia entre usuários (ex: “Brasil”, “brasil”, “Brazil”). Dificulta relatórios e padronização.

3 - Resultado esperado -País: lista padrão ISO 3166-1 (pode usar biblioteca pycountry ou arquivo JSON) -Cidade: autocomplete baseado no país selecionado (para Brasil, por UF e cidade) -Etnia: lista com valores padronizados (IBGE ou ministério da saúde, ex: Branca, Preta, Parda, Amarela, Indígena, Prefiro não informar)

4 - Critérios de aceite

-País com lista predefinida (ISO 3166-1). -Cidade com autocomplete dependente do país/estado. -Etnia com select fixo (IBGE, com opção “Prefiro não informar”). -Campos continuam opcionais e compatíveis com perfis antigos. -Validação no back-end (limitar valores possíveis). -Interface acessível (rótulos visíveis, contraste, teclado).

5 - Front-end (HTML simplificado):

Selecione... Brasil Argentina Portugal Selecione... Branca Preta Parda Amarela Indígena Prefiro não informar

6 - Back-end (forms.py ou models.py):

from django import forms

ETHNICITY_CHOICES = [ ("branca", "Branca"), ("preta", "Preta"), ("parda", "Parda"), ("amarela", "Amarela"), ("indigena", "Indígena"), ("nao_informar", "Prefiro não informar"), ]

class ProfileForm(forms.ModelForm): ethnicity = forms.ChoiceField(choices=ETHNICITY_CHOICES, required=False)