wagtail-enap-designsystem 1.2.1.121__py3-none-any.whl → 1.2.1.122__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.

@@ -1220,98 +1220,256 @@ def hide_snippets_from_menu(request, menu_items):
1220
1220
 
1221
1221
 
1222
1222
 
1223
- # wagtail_hooks.py - Sistema de Votação com Snippets
1224
1223
 
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
1224
 
1225
+ # wagtail_hooks.py - Versão mínima: só menu + CSV
1230
1226
 
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
1227
+ from wagtail import hooks
1228
+ from django.http import HttpResponse
1229
+ import csv
1245
1230
 
1246
1231
 
1247
- # Registrar o ViewSet
1248
- register_snippet(VotoRegistrado, viewset=VotoRegistradoViewSet)
1232
+ # Página de estatísticas simples
1233
+ def dashboard_votacao_view(request):
1234
+ """Página simples com estatísticas"""
1235
+ if not request.user.is_staff:
1236
+ from django.http import HttpResponseForbidden
1237
+ return HttpResponseForbidden()
1238
+
1239
+ try:
1240
+ from .models import VotoRegistrado, CategoriaVotacao, ProjetoVotacao
1241
+ from django.db.models import Count
1242
+
1243
+ total_votos = VotoRegistrado.objects.count()
1244
+ total_categorias = CategoriaVotacao.objects.filter(ativo=True).count()
1245
+ total_projetos = ProjetoVotacao.objects.filter(ativo=True).count()
1246
+
1247
+ # Ranking geral
1248
+ ranking_geral = (VotoRegistrado.objects
1249
+ .values('projeto__titulo', 'projeto__nome_equipe', 'projeto__categoria__nome')
1250
+ .annotate(votos=Count('id'))
1251
+ .order_by('-votos')[:10])
1252
+
1253
+ # Mais votado por categoria
1254
+ categorias = CategoriaVotacao.objects.filter(ativo=True).order_by('ordem')
1255
+ mais_votados_categoria = {}
1256
+
1257
+ for categoria in categorias:
1258
+ mais_votado = (VotoRegistrado.objects
1259
+ .filter(projeto__categoria=categoria)
1260
+ .values('projeto__titulo', 'projeto__nome_equipe')
1261
+ .annotate(votos=Count('id'))
1262
+ .order_by('-votos')
1263
+ .first())
1264
+ if mais_votado:
1265
+ mais_votados_categoria[categoria] = mais_votado
1266
+
1267
+ html = f"""
1268
+ <html>
1269
+ <head>
1270
+ <title>Dashboard Votação</title>
1271
+ <link rel="stylesheet" href="/static/wagtailadmin/css/core.css">
1272
+ <style>
1273
+ body {{ margin: 20px; font-family: Arial, sans-serif; }}
1274
+ .stats {{ display: flex; gap: 20px; margin: 20px 0; }}
1275
+ .stat {{ background: #024248; color: white; padding: 20px; border-radius: 8px; text-align: center; flex: 1; }}
1276
+ .stat-number {{ font-size: 28px; font-weight: bold; }}
1277
+ .ranking {{ background: white; border: 1px solid #ddd; border-radius: 8px; margin: 20px 0; }}
1278
+ .ranking-item {{ padding: 15px; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; }}
1279
+ .categoria-card {{ background: white; border: 1px solid #ddd; border-radius: 8px; margin: 15px 0; }}
1280
+ .categoria-header {{ background: #007D7A; color: white; padding: 15px; font-weight: bold; }}
1281
+ .categoria-content {{ padding: 20px; }}
1282
+ .btn {{ background: #007D7A; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; margin: 10px; }}
1283
+ .grid {{ display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }}
1284
+ </style>
1285
+ </head>
1286
+ <body>
1287
+ <h1 style="color: #024248;">Dashboard de Votação</h1>
1288
+ <a href="/admin/" class="btn">← Voltar ao Admin</a>
1289
+
1290
+ <div class="stats">
1291
+ <div class="stat">
1292
+ <div class="stat-number">{total_votos}</div>
1293
+ <div>Total Votos</div>
1294
+ </div>
1295
+ <div class="stat">
1296
+ <div class="stat-number">{total_projetos}</div>
1297
+ <div>Projetos</div>
1298
+ </div>
1299
+ <div class="stat">
1300
+ <div class="stat-number">{total_categorias}</div>
1301
+ <div>Categorias</div>
1302
+ </div>
1303
+ </div>
1304
+
1305
+ <div class="grid">
1306
+ <div>
1307
+ <h2>Mais Votados por Categoria</h2>
1308
+ """
1309
+
1310
+ # Seção de mais votados por categoria
1311
+ if mais_votados_categoria:
1312
+ for categoria, projeto in mais_votados_categoria.items():
1313
+ html += f"""
1314
+ <div class="categoria-card">
1315
+ <div class="categoria-header">
1316
+ {categoria.nome}
1317
+ </div>
1318
+ <div class="categoria-content">
1319
+ <strong style="font-size: 18px;">{projeto['projeto__titulo']}</strong>
1320
+ <br>
1321
+ <small style="color: #666;">{projeto['projeto__nome_equipe']}</small>
1322
+ <div style="margin-top: 10px;">
1323
+ <span style="background: #024248; color: white; padding: 8px 16px; border-radius: 20px; font-weight: bold;">
1324
+ {projeto['votos']} votos
1325
+ </span>
1326
+ </div>
1327
+ </div>
1328
+ </div>
1329
+ """
1330
+ else:
1331
+ html += "<p style='text-align: center; color: #999;'>Nenhum voto por categoria ainda</p>"
1332
+
1333
+ html += """
1334
+ </div>
1335
+ <div>
1336
+ <h2>Ranking Geral</h2>
1337
+ <div class="ranking">
1338
+ """
1339
+
1340
+ # Ranking geral
1341
+ if ranking_geral:
1342
+ for i, item in enumerate(ranking_geral, 1):
1343
+ medal = "🥇" if i == 1 else "🥈" if i == 2 else "🥉" if i == 3 else f"{i}º"
1344
+ html += f"""
1345
+ <div class="ranking-item">
1346
+ <div>
1347
+ <strong>{medal}</strong>
1348
+ <strong>{item['projeto__titulo']}</strong>
1349
+ <br>
1350
+ <small>{item['projeto__nome_equipe']} • {item['projeto__categoria__nome']}</small>
1351
+ </div>
1352
+ <div style="background: #024248; color: white; padding: 5px 15px; border-radius: 15px;">
1353
+ {item['votos']}
1354
+ </div>
1355
+ </div>
1356
+ """
1357
+ else:
1358
+ html += "<p style='padding: 40px; text-align: center;'>Nenhum voto registrado</p>"
1359
+
1360
+ html += """
1361
+ </div>
1362
+ </div>
1363
+ </div>
1364
+
1365
+ <div style="text-align: center; margin: 30px 0;">
1366
+ <a href="/admin/exportar-votos/" class="btn">Exportar Todos os Votos (CSV)</a>
1367
+ <a href="/admin/exportar-ranking/" class="btn">Exportar Ranking (CSV)</a>
1368
+ </div>
1369
+ </body>
1370
+ </html>
1371
+ """
1372
+
1373
+ return HttpResponse(html)
1374
+
1375
+ except Exception as e:
1376
+ return HttpResponse(f"<h1>Erro</h1><p>{e}</p><a href='/admin/'>Voltar</a>")
1249
1377
 
1250
1378
 
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
1379
+ # Exportar todos os votos
1380
+ def exportar_votos(request):
1381
+ if not request.user.is_staff:
1382
+ from django.http import HttpResponseForbidden
1383
+ return HttpResponseForbidden()
1259
1384
 
1260
- # Só mostra para superusers
1261
- if not request.user.is_superuser:
1262
- return
1263
-
1264
- # Contar totais
1265
1385
  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
1386
+ from .models import VotoRegistrado
1387
+
1388
+ response = HttpResponse(content_type='text/csv; charset=utf-8')
1389
+ response['Content-Disposition'] = 'attachment; filename="todos_votos.csv"'
1390
+
1391
+ writer = csv.writer(response)
1392
+ writer.writerow(['ID', 'Data/Hora', 'Projeto', 'Categoria', 'Equipe', 'IP'])
1393
+
1394
+ votos = VotoRegistrado.objects.select_related('projeto', 'projeto__categoria').order_by('-timestamp')
1395
+
1396
+ for voto in votos:
1397
+ writer.writerow([
1398
+ str(voto.id),
1399
+ voto.timestamp.strftime('%d/%m/%Y %H:%M:%S'),
1400
+ voto.projeto.titulo,
1401
+ voto.projeto.categoria.nome,
1402
+ voto.projeto.nome_equipe,
1403
+ voto.ip_address
1404
+ ])
1405
+
1406
+ return response
1407
+
1408
+ except Exception as e:
1409
+ return HttpResponse(f"Erro: {e}")
1277
1410
 
1278
1411
 
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
1412
+ # Exportar ranking
1413
+ def exportar_ranking(request):
1414
+ if not request.user.is_staff:
1415
+ from django.http import HttpResponseForbidden
1416
+ return HttpResponseForbidden()
1287
1417
 
1288
1418
  try:
1289
- from .models import CategoriaVotacao, ProjetoVotacao
1419
+ from .models import VotoRegistrado, CategoriaVotacao
1420
+ from django.db.models import Count
1421
+
1422
+ response = HttpResponse(content_type='text/csv; charset=utf-8')
1423
+ response['Content-Disposition'] = 'attachment; filename="ranking_votacao.csv"'
1290
1424
 
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
- }
1425
+ writer = csv.writer(response)
1426
+ writer.writerow(['Categoria', 'Posição', 'Projeto', 'Equipe', 'Total Votos'])
1298
1427
 
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
- """
1428
+ # Por categoria
1429
+ categorias = CategoriaVotacao.objects.filter(ativo=True).order_by('ordem')
1312
1430
 
1313
- panels.append(Component(html))
1431
+ for categoria in categorias:
1432
+ ranking = (VotoRegistrado.objects
1433
+ .filter(projeto__categoria=categoria)
1434
+ .values('projeto__titulo', 'projeto__nome_equipe')
1435
+ .annotate(votos=Count('id'))
1436
+ .order_by('-votos'))
1437
+
1438
+ for i, item in enumerate(ranking, 1):
1439
+ writer.writerow([
1440
+ categoria.nome,
1441
+ i,
1442
+ item['projeto__titulo'],
1443
+ item['projeto__nome_equipe'],
1444
+ item['votos']
1445
+ ])
1446
+
1447
+ return response
1314
1448
 
1315
1449
  except Exception as e:
1316
- # Se der erro, não quebra o admin
1317
- pass
1450
+ return HttpResponse(f"Erro: {e}")
1451
+
1452
+
1453
+ # Menu lateral - só isso
1454
+ @hooks.register('construct_main_menu')
1455
+ def menu_dashboard_votacao(request, menu_items):
1456
+ from wagtail.admin.menu import MenuItem
1457
+
1458
+ if request.user.is_staff:
1459
+ menu_items.append(MenuItem(
1460
+ 'Dashboard Votação',
1461
+ '/admin/dashboard-votacao/',
1462
+ icon_name='view',
1463
+ order=450
1464
+ ))
1465
+
1466
+
1467
+ # URLs
1468
+ @hooks.register('register_admin_urls')
1469
+ def register_urls():
1470
+ from django.urls import path
1471
+ return [
1472
+ path('dashboard-votacao/', dashboard_votacao_view, name='dashboard_votacao'),
1473
+ path('exportar-votos/', exportar_votos, name='exportar_votos'),
1474
+ path('exportar-ranking/', exportar_ranking, name='exportar_ranking'),
1475
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wagtail-enap-designsystem
3
- Version: 1.2.1.121
3
+ Version: 1.2.1.122
4
4
  Summary: Módulo de componentes utilizado nos portais ENAP, desenvolvido com Wagtail + CodeRedCMS
5
5
  Author: Renan Campos
6
6
  Author-email: renan.oliveira@enap.gov.br
@@ -1,18 +1,18 @@
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=V2SbxwI9cpFAUkJ7s5QllNTZYdPHxSsOWt9xD3qD4Xc,140989
4
+ enap_designsystem/models.py,sha256=g4AW9e9rN2CtoTvR71XwK9p0qMDEPmW2y2f1c4Am3L8,140142
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=mEwIIesWtmekY6A04l-vogs2-srxncdgjP0lmGOAIfo,2162
8
- enap_designsystem/views.py,sha256=b6fSGCI_eeAVjrkNNhpuVBi62NwqcryFV5cBkUjNK5o,79450
9
- enap_designsystem/wagtail_hooks.py,sha256=ftWXSAqtr1fFUO6Gws5IMfwPALJaPAcSglm8rRVOV-k,49251
7
+ enap_designsystem/urls.py,sha256=EJ52w-55BysQU5pTZR4ltMtZM7aSKyjZdnQDGFipDXY,2219
8
+ enap_designsystem/views.py,sha256=6Du7WPcij-ztv5WrA9s5eukgXLGJHv0XD5y6OYZWAo4,78310
9
+ enap_designsystem/wagtail_hooks.py,sha256=OZhdzNolcQ4OOa6JSc6uAYvizvuiCtevFP9bRu8p80k,55920
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
13
13
  enap_designsystem/blocks/content_blocks.py,sha256=4oWDtY0zmvC6k7v_WduCTAyGapJuQTsfJ9ij_vJZXxY,16549
14
14
  enap_designsystem/blocks/form.py,sha256=FHRrDuDHhZeI0qNUrJaKa_dzTWqNA78yDEqMwiI4Usw,54954
15
- enap_designsystem/blocks/html_blocks.py,sha256=bIqXXFoHmWg_rbfx283OF7eEqOq6F47SZfxEYu6m_t0,230441
15
+ enap_designsystem/blocks/html_blocks.py,sha256=T4N7IsO7fZBuso1lSmY0SsOI2MltZIIhgHjVc-NS6I4,229400
16
16
  enap_designsystem/blocks/layout_blocks.py,sha256=WyVt3nwYxA4Eqr6-MqQY7W-xtjh07ZhstM8aiQaHmLw,23388
17
17
  enap_designsystem/blocks/semana_blocks.py,sha256=tJ8bFvW6lTSnLp2Wf1CARNSM4UoGl95lvYmxik5g0GA,70251
18
18
  enap_designsystem/blocks/semana_inovacao.py,sha256=7AKQ-3huoTqIix3I_Xi-nwWdw8Qo7m9sXQzOnz-lREI,46982
@@ -577,7 +577,6 @@ enap_designsystem/static/imagens/todos.jpg,sha256=5iX0s0IkFhz2e-ysQ3Iu1qKp5auSz5
577
577
  enap_designsystem/static/imagens/trilhas.jpg,sha256=lF_FmSDFIbXCcc1uar5-2KmHHKBYMjXpoj9QtGEMiJw,53976
578
578
  enap_designsystem/templates/404.html,sha256=zWLrPMFuUT8N4XZhhApJlV8Qp74j24pNuPek3sxMyxs,9831
579
579
  enap_designsystem/templates/area_do_aluno.html,sha256=OOgmzgTuCz9ApYlabb2eYuMd3D2Jyt4JUjmH3u50tic,217
580
- enap_designsystem/templates/custom_404.html,sha256=gsJpZL9EK1l1GwIkFdCNHLLjA2v3QS_w7ozwWbuoA88,9798
581
580
  enap_designsystem/templates/logout_intermediario.html,sha256=3omva26SjLgi7LULnPER79EmMofm5JICKiy--1D63Jk,665
582
581
  enap_designsystem/templates/teste_login_sso.html,sha256=ThGCDsq3b1aEgsp24O9FpmCAaz0ijtW2seXkQzQPd3M,557
583
582
  enap_designsystem/templates/Holofote/draft_holofote.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -586,7 +585,7 @@ enap_designsystem/templates/admin/exportar_respostas.html,sha256=jF7hGJ6LkbKo536
586
585
  enap_designsystem/templates/admin/meta_tags_manager.html,sha256=jXNvT9etPN88TNT8Ou8ko-AHComioM9p8iU1lpW5m3k,11826
587
586
  enap_designsystem/templates/enap_designsystem/accordion_v2.html,sha256=SE-72OoHu-WucITL-CPR4XJzfLHrq78kmiytaSJB3Lc,4228
588
587
  enap_designsystem/templates/enap_designsystem/base.html,sha256=bBWBjIUwzIqbTf5wIqajFNgloN38XajTFakWfb0GfCM,12712
589
- enap_designsystem/templates/enap_designsystem/sistema_votacao_page.html,sha256=lzpf2zRB-92V5XJrX3Gv9nqLP9Z0tLObMFyeMw0s2FQ,54488
588
+ enap_designsystem/templates/enap_designsystem/sistema_votacao_page.html,sha256=YsskzA-SBF6UzvU6rxicpUOOe-QPCAg-3Bp9NHOweRA,53049
590
589
  enap_designsystem/templates/enap_designsystem/blocks/accordions.html,sha256=WXBQrkO4U0R8SDbdbFRWBx742gdpiYiKEviiyQURZMk,2940
591
590
  enap_designsystem/templates/enap_designsystem/blocks/accordionsv2.html,sha256=-WXIV6zFjdbRAylWhF9mQkMxUr1Df4-d3OazVm1xT9s,5186
592
591
  enap_designsystem/templates/enap_designsystem/blocks/alerts.html,sha256=_lbwHiFS4eauJtlQB6j-xWR31sKH7lv1EKD9oI2cki4,2067
@@ -816,8 +815,8 @@ enap_designsystem/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
816
815
  enap_designsystem/utils/decorators.py,sha256=aq6SbLn0LcH2rfE3ZFit8jkD7pSx9fLVBUUwVB747hg,335
817
816
  enap_designsystem/utils/services.py,sha256=6dG5jLSbwH49jpZV9ZNpWlaZqI49gTlwlr1vaerxdiU,5824
818
817
  enap_designsystem/utils/sso.py,sha256=vjAuoYgoLeQAa_dkkyQ6-LmHvKMaVCxizNFpe5y3iUA,1145
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,,
818
+ wagtail_enap_designsystem-1.2.1.122.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
819
+ wagtail_enap_designsystem-1.2.1.122.dist-info/METADATA,sha256=c1jN7B2pncT938F9W7vxLCnYcgw9ccDreOBa5Hop5qg,3651
820
+ wagtail_enap_designsystem-1.2.1.122.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
821
+ wagtail_enap_designsystem-1.2.1.122.dist-info/top_level.txt,sha256=RSFgMASxoA-hVftm5i4Qd0rArlX4Dq08lLv5G4sYD-g,18
822
+ wagtail_enap_designsystem-1.2.1.122.dist-info/RECORD,,