wagtail-enap-designsystem 1.2.1.119__py3-none-any.whl → 1.2.1.121__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of wagtail-enap-designsystem might be problematic. Click here for more details.
- enap_designsystem/migrations/0379_categoriavotacao_sistemavotacaopage_and_more.py +51471 -0
- enap_designsystem/migrations/0380_sistemavotacaopage_imagem_fundo.py +33 -0
- enap_designsystem/migrations/0381_sistemavotacaopage_footer_sistemavotacaopage_navbar.py +36 -0
- enap_designsystem/models.py +484 -3
- enap_designsystem/templates/enap_designsystem/blocks/card_flex_block.html +0 -0
- enap_designsystem/templates/enap_designsystem/blocks/content_box.html +271 -0
- enap_designsystem/templates/enap_designsystem/blocks/content_flex_block.html +0 -0
- enap_designsystem/templates/enap_designsystem/blocks/video_hero_banner.html +263 -0
- enap_designsystem/templates/enap_designsystem/sistema_votacao_page.html +1707 -0
- enap_designsystem/urls.py +6 -1
- enap_designsystem/views.py +229 -0
- enap_designsystem/wagtail_hooks.py +103 -0
- {wagtail_enap_designsystem-1.2.1.119.dist-info → wagtail_enap_designsystem-1.2.1.121.dist-info}/METADATA +1 -1
- {wagtail_enap_designsystem-1.2.1.119.dist-info → wagtail_enap_designsystem-1.2.1.121.dist-info}/RECORD +17 -9
- {wagtail_enap_designsystem-1.2.1.119.dist-info → wagtail_enap_designsystem-1.2.1.121.dist-info}/WHEEL +0 -0
- {wagtail_enap_designsystem-1.2.1.119.dist-info → wagtail_enap_designsystem-1.2.1.121.dist-info}/licenses/LICENSE +0 -0
- {wagtail_enap_designsystem-1.2.1.119.dist-info → wagtail_enap_designsystem-1.2.1.121.dist-info}/top_level.txt +0 -0
enap_designsystem/urls.py
CHANGED
|
@@ -13,7 +13,7 @@ urlpatterns = [
|
|
|
13
13
|
# ...
|
|
14
14
|
path("teste-login-sso/", views.teste_login_sso, name="teste_login_sso"),
|
|
15
15
|
path("login-sso/", views.login_sso, name="login_sso"),
|
|
16
|
-
path("
|
|
16
|
+
path("elasticsearch/callback/", views.callback_sso, name="callback_sso"),
|
|
17
17
|
path("logout/", views.logout_view, name="logout"),
|
|
18
18
|
path('salvar-contato/', views.salvar_contato, name='salvar_contato'),
|
|
19
19
|
path('salvar-resposta-formulario/', views.salvar_resposta_formulario, name='salvar_resposta_formulario'),
|
|
@@ -37,4 +37,9 @@ urlpatterns = [
|
|
|
37
37
|
|
|
38
38
|
# Relatórios
|
|
39
39
|
path('reports/form/<int:page_id>/', views.form_report, name='form_report'),
|
|
40
|
+
|
|
41
|
+
path('votar/', views.votar_projeto, name='votar_projeto'),
|
|
42
|
+
path('estatisticas/', views.estatisticas_votacao, name='estatisticas_votacao'),
|
|
43
|
+
path('ranking/', views.ranking_projetos, name='ranking_projetos'),
|
|
44
|
+
path('ranking/<int:categoria_id>/', views.ranking_projetos, name='ranking_projetos_categoria'),
|
|
40
45
|
]
|
enap_designsystem/views.py
CHANGED
|
@@ -51,6 +51,14 @@ from django.db.models import Count, Sum, Avg, Q
|
|
|
51
51
|
from django.core.cache import cache
|
|
52
52
|
import requests
|
|
53
53
|
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
from django.utils import timezone
|
|
58
|
+
from .models import ProjetoVotacao, VotoRegistrado, CategoriaVotacao
|
|
59
|
+
|
|
60
|
+
# Cole aqui todo o conteúdo do artifact "Views do Sistema de Votação"
|
|
61
|
+
|
|
54
62
|
from django.shortcuts import render, get_object_or_404
|
|
55
63
|
from django.http import JsonResponse, HttpResponse
|
|
56
64
|
from django.core.exceptions import ValidationError
|
|
@@ -2045,3 +2053,224 @@ def save_file_linked_to_form(uploaded_file, page_id, submission_id, field_name):
|
|
|
2045
2053
|
|
|
2046
2054
|
|
|
2047
2055
|
|
|
2056
|
+
# views.py - Views completas do Sistema de Votação
|
|
2057
|
+
|
|
2058
|
+
import json
|
|
2059
|
+
from django.http import JsonResponse
|
|
2060
|
+
from django.views.decorators.http import require_http_methods
|
|
2061
|
+
from django.shortcuts import get_object_or_404
|
|
2062
|
+
from django.utils import timezone
|
|
2063
|
+
from .models import ProjetoVotacao, VotoRegistrado, CategoriaVotacao
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
def get_client_ip(request):
|
|
2067
|
+
"""Extrai o IP real do cliente"""
|
|
2068
|
+
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
|
|
2069
|
+
if x_forwarded_for:
|
|
2070
|
+
ip = x_forwarded_for.split(',')[0].strip()
|
|
2071
|
+
else:
|
|
2072
|
+
ip = request.META.get('REMOTE_ADDR')
|
|
2073
|
+
return ip
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
@require_http_methods(["POST"])
|
|
2077
|
+
def votar_projeto(request):
|
|
2078
|
+
"""
|
|
2079
|
+
View AJAX para registrar voto em um projeto
|
|
2080
|
+
"""
|
|
2081
|
+
try:
|
|
2082
|
+
# Parse do JSON
|
|
2083
|
+
data = json.loads(request.body)
|
|
2084
|
+
projeto_id = data.get('projeto_id')
|
|
2085
|
+
categoria_id = data.get('categoria_id')
|
|
2086
|
+
|
|
2087
|
+
if not projeto_id or not categoria_id:
|
|
2088
|
+
return JsonResponse({
|
|
2089
|
+
'success': False,
|
|
2090
|
+
'message': 'Dados inválidos. Projeto e categoria são obrigatórios.'
|
|
2091
|
+
}, status=400)
|
|
2092
|
+
|
|
2093
|
+
# Buscar projeto
|
|
2094
|
+
projeto = get_object_or_404(ProjetoVotacao, id=projeto_id, ativo=True)
|
|
2095
|
+
|
|
2096
|
+
# Verificar se o projeto pertence à categoria
|
|
2097
|
+
if projeto.categoria.id != int(categoria_id):
|
|
2098
|
+
return JsonResponse({
|
|
2099
|
+
'success': False,
|
|
2100
|
+
'message': 'Projeto não pertence à categoria especificada.'
|
|
2101
|
+
}, status=400)
|
|
2102
|
+
|
|
2103
|
+
# Obter dados do request
|
|
2104
|
+
ip_address = get_client_ip(request)
|
|
2105
|
+
user_agent = request.META.get('HTTP_USER_AGENT', '')[:500]
|
|
2106
|
+
|
|
2107
|
+
# Registrar o voto
|
|
2108
|
+
voto = VotoRegistrado.objects.create(
|
|
2109
|
+
projeto=projeto,
|
|
2110
|
+
ip_address=ip_address,
|
|
2111
|
+
user_agent=user_agent,
|
|
2112
|
+
categoria_nome=projeto.categoria.nome
|
|
2113
|
+
)
|
|
2114
|
+
|
|
2115
|
+
# Resposta de sucesso
|
|
2116
|
+
return JsonResponse({
|
|
2117
|
+
'success': True,
|
|
2118
|
+
'message': 'Voto registrado com sucesso!',
|
|
2119
|
+
'voto_id': str(voto.id),
|
|
2120
|
+
'projeto_id': projeto.id,
|
|
2121
|
+
'categoria_id': projeto.categoria.id,
|
|
2122
|
+
'total_votos': projeto.total_votos,
|
|
2123
|
+
'timestamp': voto.timestamp.isoformat()
|
|
2124
|
+
})
|
|
2125
|
+
|
|
2126
|
+
except json.JSONDecodeError:
|
|
2127
|
+
return JsonResponse({
|
|
2128
|
+
'success': False,
|
|
2129
|
+
'message': 'Dados JSON inválidos.'
|
|
2130
|
+
}, status=400)
|
|
2131
|
+
|
|
2132
|
+
except ProjetoVotacao.DoesNotExist:
|
|
2133
|
+
return JsonResponse({
|
|
2134
|
+
'success': False,
|
|
2135
|
+
'message': 'Projeto não encontrado ou inativo.'
|
|
2136
|
+
}, status=404)
|
|
2137
|
+
|
|
2138
|
+
except Exception as e:
|
|
2139
|
+
# Log do erro em produção
|
|
2140
|
+
import logging
|
|
2141
|
+
logger = logging.getLogger(__name__)
|
|
2142
|
+
logger.error(f"Erro ao processar voto: {str(e)}", exc_info=True)
|
|
2143
|
+
|
|
2144
|
+
return JsonResponse({
|
|
2145
|
+
'success': False,
|
|
2146
|
+
'message': 'Erro interno do servidor. Tente novamente.'
|
|
2147
|
+
}, status=500)
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
@require_http_methods(["GET"])
|
|
2151
|
+
def estatisticas_votacao(request):
|
|
2152
|
+
"""
|
|
2153
|
+
View AJAX para obter estatísticas da votação
|
|
2154
|
+
"""
|
|
2155
|
+
try:
|
|
2156
|
+
# Estatísticas gerais
|
|
2157
|
+
total_votos = VotoRegistrado.objects.count()
|
|
2158
|
+
total_projetos = ProjetoVotacao.objects.filter(ativo=True).count()
|
|
2159
|
+
total_categorias = CategoriaVotacao.objects.filter(ativo=True).count()
|
|
2160
|
+
|
|
2161
|
+
# Estatísticas por categoria
|
|
2162
|
+
categorias_stats = []
|
|
2163
|
+
for categoria in CategoriaVotacao.objects.filter(ativo=True).order_by('ordem'):
|
|
2164
|
+
projetos_categoria = categoria.projetos.filter(ativo=True)
|
|
2165
|
+
votos_categoria = VotoRegistrado.objects.filter(projeto__in=projetos_categoria).count()
|
|
2166
|
+
|
|
2167
|
+
# Projeto mais votado da categoria
|
|
2168
|
+
projeto_top = None
|
|
2169
|
+
if projetos_categoria.exists():
|
|
2170
|
+
projeto_mais_votado = max(projetos_categoria, key=lambda p: p.total_votos)
|
|
2171
|
+
if projeto_mais_votado.total_votos > 0:
|
|
2172
|
+
projeto_top = {
|
|
2173
|
+
'id': projeto_mais_votado.id,
|
|
2174
|
+
'titulo': projeto_mais_votado.titulo,
|
|
2175
|
+
'votos': projeto_mais_votado.total_votos
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
categorias_stats.append({
|
|
2179
|
+
'id': categoria.id,
|
|
2180
|
+
'nome': categoria.nome,
|
|
2181
|
+
'total_projetos': projetos_categoria.count(),
|
|
2182
|
+
'total_votos': votos_categoria,
|
|
2183
|
+
'projeto_top': projeto_top
|
|
2184
|
+
})
|
|
2185
|
+
|
|
2186
|
+
# Projetos mais votados (top 5)
|
|
2187
|
+
projetos_top = []
|
|
2188
|
+
for projeto in ProjetoVotacao.objects.filter(ativo=True):
|
|
2189
|
+
projetos_top.append({
|
|
2190
|
+
'id': projeto.id,
|
|
2191
|
+
'titulo': projeto.titulo,
|
|
2192
|
+
'categoria': projeto.categoria.nome,
|
|
2193
|
+
'votos': projeto.total_votos
|
|
2194
|
+
})
|
|
2195
|
+
|
|
2196
|
+
# Ordenar por votos (descending)
|
|
2197
|
+
projetos_top = sorted(projetos_top, key=lambda p: p['votos'], reverse=True)[:5]
|
|
2198
|
+
|
|
2199
|
+
return JsonResponse({
|
|
2200
|
+
'success': True,
|
|
2201
|
+
'data': {
|
|
2202
|
+
'resumo': {
|
|
2203
|
+
'total_votos': total_votos,
|
|
2204
|
+
'total_projetos': total_projetos,
|
|
2205
|
+
'total_categorias': total_categorias
|
|
2206
|
+
},
|
|
2207
|
+
'categorias': categorias_stats,
|
|
2208
|
+
'projetos_top': projetos_top,
|
|
2209
|
+
'timestamp': timezone.now().isoformat()
|
|
2210
|
+
}
|
|
2211
|
+
})
|
|
2212
|
+
|
|
2213
|
+
except Exception as e:
|
|
2214
|
+
import logging
|
|
2215
|
+
logger = logging.getLogger(__name__)
|
|
2216
|
+
logger.error(f"Erro ao obter estatísticas: {str(e)}", exc_info=True)
|
|
2217
|
+
|
|
2218
|
+
return JsonResponse({
|
|
2219
|
+
'success': False,
|
|
2220
|
+
'message': 'Erro ao obter estatísticas.'
|
|
2221
|
+
}, status=500)
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
@require_http_methods(["GET"])
|
|
2225
|
+
def ranking_projetos(request, categoria_id=None):
|
|
2226
|
+
"""
|
|
2227
|
+
View AJAX para obter ranking de projetos
|
|
2228
|
+
"""
|
|
2229
|
+
try:
|
|
2230
|
+
# Filtrar por categoria se especificado
|
|
2231
|
+
if categoria_id:
|
|
2232
|
+
categoria = get_object_or_404(CategoriaVotacao, id=categoria_id, ativo=True)
|
|
2233
|
+
projetos = ProjetoVotacao.objects.filter(categoria=categoria, ativo=True)
|
|
2234
|
+
else:
|
|
2235
|
+
projetos = ProjetoVotacao.objects.filter(ativo=True)
|
|
2236
|
+
|
|
2237
|
+
# Criar lista com dados dos projetos
|
|
2238
|
+
ranking = []
|
|
2239
|
+
for projeto in projetos:
|
|
2240
|
+
ranking.append({
|
|
2241
|
+
'id': projeto.id,
|
|
2242
|
+
'titulo': projeto.titulo,
|
|
2243
|
+
'categoria': projeto.categoria.nome,
|
|
2244
|
+
'equipe': projeto.nome_equipe,
|
|
2245
|
+
'total_votos': projeto.total_votos,
|
|
2246
|
+
'destacado': projeto.destacado
|
|
2247
|
+
})
|
|
2248
|
+
|
|
2249
|
+
# Ordenar por votos (descending)
|
|
2250
|
+
ranking.sort(key=lambda p: p['total_votos'], reverse=True)
|
|
2251
|
+
|
|
2252
|
+
return JsonResponse({
|
|
2253
|
+
'success': True,
|
|
2254
|
+
'data': {
|
|
2255
|
+
'ranking': ranking,
|
|
2256
|
+
'categoria': categoria.nome if categoria_id else 'Todas',
|
|
2257
|
+
'total_projetos': len(ranking),
|
|
2258
|
+
'timestamp': timezone.now().isoformat()
|
|
2259
|
+
}
|
|
2260
|
+
})
|
|
2261
|
+
|
|
2262
|
+
except CategoriaVotacao.DoesNotExist:
|
|
2263
|
+
return JsonResponse({
|
|
2264
|
+
'success': False,
|
|
2265
|
+
'message': 'Categoria não encontrada.'
|
|
2266
|
+
}, status=404)
|
|
2267
|
+
|
|
2268
|
+
except Exception as e:
|
|
2269
|
+
import logging
|
|
2270
|
+
logger = logging.getLogger(__name__)
|
|
2271
|
+
logger.error(f"Erro ao obter ranking: {str(e)}", exc_info=True)
|
|
2272
|
+
|
|
2273
|
+
return JsonResponse({
|
|
2274
|
+
'success': False,
|
|
2275
|
+
'message': 'Erro ao obter ranking.'
|
|
2276
|
+
}, status=500)
|
|
@@ -1212,3 +1212,106 @@ def hide_snippets_from_menu(request, menu_items):
|
|
|
1212
1212
|
"""
|
|
1213
1213
|
if not request.user.is_superuser:
|
|
1214
1214
|
menu_items[:] = [item for item in menu_items if item.name != 'snippets']
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
# wagtail_hooks.py - Sistema de Votação com Snippets
|
|
1224
|
+
|
|
1225
|
+
from wagtail import hooks
|
|
1226
|
+
from wagtail.snippets.models import register_snippet
|
|
1227
|
+
from wagtail.snippets.views.snippets import SnippetViewSet
|
|
1228
|
+
from .models import VotoRegistrado
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
class VotoRegistradoViewSet(SnippetViewSet):
|
|
1232
|
+
model = VotoRegistrado
|
|
1233
|
+
menu_label = 'Votos Registrados'
|
|
1234
|
+
icon = 'tick'
|
|
1235
|
+
menu_order = 600
|
|
1236
|
+
|
|
1237
|
+
list_display = ('projeto', 'categoria_nome', 'ip_address', 'timestamp')
|
|
1238
|
+
list_filter = ('categoria_nome', 'timestamp', 'projeto__categoria')
|
|
1239
|
+
search_fields = ('projeto__titulo', 'ip_address')
|
|
1240
|
+
ordering = ('-timestamp',)
|
|
1241
|
+
list_per_page = 50
|
|
1242
|
+
|
|
1243
|
+
# Apenas visualização - não permitir add/edit de votos
|
|
1244
|
+
add_to_admin_menu = True
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
# Registrar o ViewSet
|
|
1248
|
+
register_snippet(VotoRegistrado, viewset=VotoRegistradoViewSet)
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
# Hook personalizado para adicionar estatísticas no admin
|
|
1252
|
+
@hooks.register('construct_main_menu')
|
|
1253
|
+
def add_votacao_stats_menu_item(request, menu_items):
|
|
1254
|
+
"""
|
|
1255
|
+
Adiciona estatísticas de votação no menu principal
|
|
1256
|
+
"""
|
|
1257
|
+
from django.urls import reverse
|
|
1258
|
+
from wagtail.admin.menu import MenuItem
|
|
1259
|
+
|
|
1260
|
+
# Só mostra para superusers
|
|
1261
|
+
if not request.user.is_superuser:
|
|
1262
|
+
return
|
|
1263
|
+
|
|
1264
|
+
# Contar totais
|
|
1265
|
+
try:
|
|
1266
|
+
total_votos = VotoRegistrado.objects.count()
|
|
1267
|
+
menu_items.append(
|
|
1268
|
+
MenuItem(
|
|
1269
|
+
f'📊 Votação ({total_votos} votos)',
|
|
1270
|
+
reverse('wagtailadmin_home'),
|
|
1271
|
+
icon_name='analytics',
|
|
1272
|
+
order=1000
|
|
1273
|
+
)
|
|
1274
|
+
)
|
|
1275
|
+
except:
|
|
1276
|
+
pass # Se der erro na query, ignora
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
# Hook para personalizar o dashboard
|
|
1280
|
+
@hooks.register('construct_homepage_panels')
|
|
1281
|
+
def add_votacao_dashboard_panel(request, panels):
|
|
1282
|
+
"""
|
|
1283
|
+
Adiciona painel de estatísticas no dashboard
|
|
1284
|
+
"""
|
|
1285
|
+
from django.template.loader import render_to_string
|
|
1286
|
+
from wagtail.admin.ui.components import Component
|
|
1287
|
+
|
|
1288
|
+
try:
|
|
1289
|
+
from .models import CategoriaVotacao, ProjetoVotacao
|
|
1290
|
+
|
|
1291
|
+
# Buscar estatísticas
|
|
1292
|
+
stats = {
|
|
1293
|
+
'total_categorias': CategoriaVotacao.objects.filter(ativo=True).count(),
|
|
1294
|
+
'total_projetos': ProjetoVotacao.objects.filter(ativo=True).count(),
|
|
1295
|
+
'total_votos': VotoRegistrado.objects.count(),
|
|
1296
|
+
'categorias_top': CategoriaVotacao.objects.filter(ativo=True)[:3]
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
# HTML do painel
|
|
1300
|
+
html = f"""
|
|
1301
|
+
<div class="panel panel-info">
|
|
1302
|
+
<h3>📊 Sistema de Votação</h3>
|
|
1303
|
+
<ul>
|
|
1304
|
+
<li><strong>{stats['total_categorias']}</strong> categorias ativas</li>
|
|
1305
|
+
<li><strong>{stats['total_projetos']}</strong> projetos ativos</li>
|
|
1306
|
+
<li><strong>{stats['total_votos']}</strong> votos registrados</li>
|
|
1307
|
+
</ul>
|
|
1308
|
+
<p><a href="/admin/snippets/enap_designsystem/categoriavotacao/" class="button button-small">Gerenciar Categorias</a></p>
|
|
1309
|
+
<p><a href="/admin/snippets/enap_designsystem/projetovotacao/" class="button button-small">Gerenciar Projetos</a></p>
|
|
1310
|
+
</div>
|
|
1311
|
+
"""
|
|
1312
|
+
|
|
1313
|
+
panels.append(Component(html))
|
|
1314
|
+
|
|
1315
|
+
except Exception as e:
|
|
1316
|
+
# Se der erro, não quebra o admin
|
|
1317
|
+
pass
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
enap_designsystem/__init__.py,sha256=_SM5n--8zkHIEZfCoc7wEfm6hQT8cuATZSRlLdrD7Rg,68
|
|
2
2
|
enap_designsystem/apps.py,sha256=psX3YlGfqmPsaZZzRL4cpDTGvjwfNJT_0Vvizc_LIEg,226
|
|
3
3
|
enap_designsystem/context_processors.py,sha256=IBYJGQpfan6gck4XcWMJMugAUKtnKpKX9XB5tZzmNbo,472
|
|
4
|
-
enap_designsystem/models.py,sha256=
|
|
4
|
+
enap_designsystem/models.py,sha256=V2SbxwI9cpFAUkJ7s5QllNTZYdPHxSsOWt9xD3qD4Xc,140989
|
|
5
5
|
enap_designsystem/settings.py,sha256=9PXLYaJHaUr6Mc9qxNg34zdX7dtxDVlNXomJ-nS7-Vw,745
|
|
6
6
|
enap_designsystem/signals.py,sha256=oaHpZms4Dkc97ql-55Q0QxU7-45jwg2Y1XoRDOJ45tc,1978
|
|
7
|
-
enap_designsystem/urls.py,sha256=
|
|
8
|
-
enap_designsystem/views.py,sha256=
|
|
9
|
-
enap_designsystem/wagtail_hooks.py,sha256=
|
|
7
|
+
enap_designsystem/urls.py,sha256=mEwIIesWtmekY6A04l-vogs2-srxncdgjP0lmGOAIfo,2162
|
|
8
|
+
enap_designsystem/views.py,sha256=b6fSGCI_eeAVjrkNNhpuVBi62NwqcryFV5cBkUjNK5o,79450
|
|
9
|
+
enap_designsystem/wagtail_hooks.py,sha256=ftWXSAqtr1fFUO6Gws5IMfwPALJaPAcSglm8rRVOV-k,49251
|
|
10
10
|
enap_designsystem/blocks/__init__.py,sha256=F9NHc5bD442qMfeYrmp9ql9mQuydMV4otrcZFzh625Y,37967
|
|
11
11
|
enap_designsystem/blocks/base_blocks.py,sha256=ZuqVWn4PEAvD3pKM1ST7wjo4lwv98ooen_rs15rRJbg,10866
|
|
12
12
|
enap_designsystem/blocks/chatbot_blocks.py,sha256=YeCznrXMbFa9MP9vjdTYl53ZhKsywkGOXvFK2bwcqW0,1133
|
|
@@ -413,6 +413,9 @@ enap_designsystem/migrations/0375_grouppagepermission_delete_pagetypepermission.
|
|
|
413
413
|
enap_designsystem/migrations/0376_grouppagetypepermission_delete_grouppagepermission.py,sha256=1K_vFs2flrpSmyS2FznfrJQaTImbGklRZRLEdD__-AY,1824
|
|
414
414
|
enap_designsystem/migrations/0377_alter_grouppagetypepermission_options_and_more.py,sha256=PnMi8hJe34MKO2wNwPdpgxhrIoZ7eRfdki9R_zBfn38,1775
|
|
415
415
|
enap_designsystem/migrations/0378_mbaespecializacao_cards_alter_areaaluno_body_and_more.py,sha256=nCsZh_ZaWyIFSZ_UDHB-VACGydLZejnRLfi0Y9svOwU,2414003
|
|
416
|
+
enap_designsystem/migrations/0379_categoriavotacao_sistemavotacaopage_and_more.py,sha256=vAmb9dkeGGmSwR8K7O2rSUQ7evCpCXNAMQfDrF9IALM,2296363
|
|
417
|
+
enap_designsystem/migrations/0380_sistemavotacaopage_imagem_fundo.py,sha256=m0lVQcdHUJ2MVcSwd5OaWgcfJGSlL4CvItex707u9wU,959
|
|
418
|
+
enap_designsystem/migrations/0381_sistemavotacaopage_footer_sistemavotacaopage_navbar.py,sha256=neUnvRYwPpQhnr1-1SrQb0HgGZz4WmBuzAmSsX28WgM,1035
|
|
416
419
|
enap_designsystem/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
417
420
|
enap_designsystem/search_backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
418
421
|
enap_designsystem/search_backends/custom_elasticsearch.py,sha256=LeQT0_dJmNMTY7l3jOJ_7mJ9-2X0oXVqvxRiXEA0qGY,988
|
|
@@ -583,6 +586,7 @@ enap_designsystem/templates/admin/exportar_respostas.html,sha256=jF7hGJ6LkbKo536
|
|
|
583
586
|
enap_designsystem/templates/admin/meta_tags_manager.html,sha256=jXNvT9etPN88TNT8Ou8ko-AHComioM9p8iU1lpW5m3k,11826
|
|
584
587
|
enap_designsystem/templates/enap_designsystem/accordion_v2.html,sha256=SE-72OoHu-WucITL-CPR4XJzfLHrq78kmiytaSJB3Lc,4228
|
|
585
588
|
enap_designsystem/templates/enap_designsystem/base.html,sha256=bBWBjIUwzIqbTf5wIqajFNgloN38XajTFakWfb0GfCM,12712
|
|
589
|
+
enap_designsystem/templates/enap_designsystem/sistema_votacao_page.html,sha256=lzpf2zRB-92V5XJrX3Gv9nqLP9Z0tLObMFyeMw0s2FQ,54488
|
|
586
590
|
enap_designsystem/templates/enap_designsystem/blocks/accordions.html,sha256=WXBQrkO4U0R8SDbdbFRWBx742gdpiYiKEviiyQURZMk,2940
|
|
587
591
|
enap_designsystem/templates/enap_designsystem/blocks/accordionsv2.html,sha256=-WXIV6zFjdbRAylWhF9mQkMxUr1Df4-d3OazVm1xT9s,5186
|
|
588
592
|
enap_designsystem/templates/enap_designsystem/blocks/alerts.html,sha256=_lbwHiFS4eauJtlQB6j-xWR31sKH7lv1EKD9oI2cki4,2067
|
|
@@ -604,6 +608,7 @@ enap_designsystem/templates/enap_designsystem/blocks/buttongroup.html,sha256=9NI
|
|
|
604
608
|
enap_designsystem/templates/enap_designsystem/blocks/card_block.html,sha256=V-bXd4m4io4SEhUR1mHWgkUVjMCBEUi2cu81A90elWA,10970
|
|
605
609
|
enap_designsystem/templates/enap_designsystem/blocks/card_courses.html,sha256=AnDmdrX6SemGpAXpmBUGp8yi6ePj5T9C7ZSxhRHvP8g,12839
|
|
606
610
|
enap_designsystem/templates/enap_designsystem/blocks/card_curso_block.html,sha256=NZ83x2O-QC1xkihH6NYE05hsPA_SKQAjzQ0jyNXZowQ,2174
|
|
611
|
+
enap_designsystem/templates/enap_designsystem/blocks/card_flex_block.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
607
612
|
enap_designsystem/templates/enap_designsystem/blocks/card_item.html,sha256=i8P0HyYQNIYknIw7RQf81QxdnAaJgPoLi4y0Hr4mAdg,1628
|
|
608
613
|
enap_designsystem/templates/enap_designsystem/blocks/cardgrid_block.html,sha256=nxD_ZgzSRtZIo3AtHPj1R6pWVgJY3AUHJTRYUcf5dTw,207
|
|
609
614
|
enap_designsystem/templates/enap_designsystem/blocks/cards_section.html,sha256=nEN4HNbT8eb_Vs8XG0uB4IyxVFfd3uLPt2SWJzP30h0,3967
|
|
@@ -621,6 +626,8 @@ enap_designsystem/templates/enap_designsystem/blocks/clientes_block.html,sha256=
|
|
|
621
626
|
enap_designsystem/templates/enap_designsystem/blocks/container_info_block.html,sha256=dNKp21ssEAbEWsgGlJCDyPCatlx1PZlbXFGCJQZNEI4,3330
|
|
622
627
|
enap_designsystem/templates/enap_designsystem/blocks/contato_block.html,sha256=skfnDb2iSXzdo_wbknQTtRmfJ6D6cpjFwNev6gLPAEs,4565
|
|
623
628
|
enap_designsystem/templates/enap_designsystem/blocks/contato_page.html,sha256=vae6hP4Z7n5atoEL4OtLrCXSslYABIT2sm53V78VsIs,1136
|
|
629
|
+
enap_designsystem/templates/enap_designsystem/blocks/content_box.html,sha256=O_RtaVfEOk9Jz_gpA1QBF1DfSGDmtbYGYVsmsB_Nz98,5973
|
|
630
|
+
enap_designsystem/templates/enap_designsystem/blocks/content_flex_block.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
624
631
|
enap_designsystem/templates/enap_designsystem/blocks/course_intro_topics.html,sha256=jc-tjDBsSM-xJu9x-gmnATSSw_ER0ZLSiiJrb9PwiCw,1855
|
|
625
632
|
enap_designsystem/templates/enap_designsystem/blocks/cpnu_dashboard_block.html,sha256=GvcQNgO-H4S-9_Ssosllh_rDZI1slx4hG5FhSr0vW3E,29102
|
|
626
633
|
enap_designsystem/templates/enap_designsystem/blocks/cta2.html,sha256=5SHLlgZT572JZoxxVNbVVc7mybO-v52ZygMEZo7hUxs,866
|
|
@@ -699,6 +706,7 @@ enap_designsystem/templates/enap_designsystem/blocks/timeline_container.html,sha
|
|
|
699
706
|
enap_designsystem/templates/enap_designsystem/blocks/timeline_etapa.html,sha256=Rh_8C9R3xQlRRmU_bguUSYx3ie4g42ilw3dtJZ4-IpM,11855
|
|
700
707
|
enap_designsystem/templates/enap_designsystem/blocks/topic_links_block.html,sha256=k3Mty-PiSAkeYBTSb4jiFACaC0m9txS-c9by5dnofmc,1083
|
|
701
708
|
enap_designsystem/templates/enap_designsystem/blocks/video_block.html,sha256=MGxXXVx2LhziavRbua3HGEdMC8t41Y1HvTdKMJhdUpU,5247
|
|
709
|
+
enap_designsystem/templates/enap_designsystem/blocks/video_hero_banner.html,sha256=2hyYTkqK2gDw2zjRU0qqQsk0bch1dmisLeWvUo-POiU,6325
|
|
702
710
|
enap_designsystem/templates/enap_designsystem/blocks/why_choose.html,sha256=g6AhjSOCmKSNnG77R_qqJ9GAn-cbfwnExGRQ6DSyALk,2002
|
|
703
711
|
enap_designsystem/templates/enap_designsystem/blocks/wizard.html,sha256=9flhjtnYFeyuxKk0OKFU4fBtAt_pPHQuLkLSJHfjrqU,2498
|
|
704
712
|
enap_designsystem/templates/enap_designsystem/blocks/footer/footer_social_block.html,sha256=xa112srdhgJk0_0T5VM9j9tYDkjBtB1Jn9QZKXD7kOY,1132
|
|
@@ -808,8 +816,8 @@ enap_designsystem/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
808
816
|
enap_designsystem/utils/decorators.py,sha256=aq6SbLn0LcH2rfE3ZFit8jkD7pSx9fLVBUUwVB747hg,335
|
|
809
817
|
enap_designsystem/utils/services.py,sha256=6dG5jLSbwH49jpZV9ZNpWlaZqI49gTlwlr1vaerxdiU,5824
|
|
810
818
|
enap_designsystem/utils/sso.py,sha256=vjAuoYgoLeQAa_dkkyQ6-LmHvKMaVCxizNFpe5y3iUA,1145
|
|
811
|
-
wagtail_enap_designsystem-1.2.1.
|
|
812
|
-
wagtail_enap_designsystem-1.2.1.
|
|
813
|
-
wagtail_enap_designsystem-1.2.1.
|
|
814
|
-
wagtail_enap_designsystem-1.2.1.
|
|
815
|
-
wagtail_enap_designsystem-1.2.1.
|
|
819
|
+
wagtail_enap_designsystem-1.2.1.121.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
|
|
820
|
+
wagtail_enap_designsystem-1.2.1.121.dist-info/METADATA,sha256=eIAyf3PzRZWnhMQROTsxWuPo9MjLAJbE43E3vDaFf_U,3651
|
|
821
|
+
wagtail_enap_designsystem-1.2.1.121.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
822
|
+
wagtail_enap_designsystem-1.2.1.121.dist-info/top_level.txt,sha256=RSFgMASxoA-hVftm5i4Qd0rArlX4Dq08lLv5G4sYD-g,18
|
|
823
|
+
wagtail_enap_designsystem-1.2.1.121.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|