From 259182720f63bbcbe258de37c9f494c085a2546f Mon Sep 17 00:00:00 2001 From: "Adonay Felipe Nogueira (http://libreplanet.org/wiki/User:Adfeno)" Date: Sun, 26 Apr 2026 17:31:30 -0300 Subject: Adiciona conteúdo do repositório provisório MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 31 +++++++++++ federana.py | 32 ++++++++++++ static/base.css | 108 +++++++++++++++++++++++++++++++++++++++ templates/base.html | 37 ++++++++++++++ templates/contato.html | 17 ++++++ templates/erro.html | 37 ++++++++++++++ templates/estatuto.html | 16 ++++++ templates/index.html | 6 +++ templates/regimento-interno.html | 10 ++++ wsgi.py | 7 +++ 10 files changed, 301 insertions(+) create mode 100755 federana.py create mode 100644 static/base.css create mode 100644 templates/base.html create mode 100644 templates/contato.html create mode 100644 templates/erro.html create mode 100644 templates/estatuto.html create mode 100644 templates/index.html create mode 100644 templates/regimento-interno.html create mode 100755 wsgi.py diff --git a/README.md b/README.md index fe39a5e..04859b6 100644 --- a/README.md +++ b/README.md @@ -1 +1,32 @@ Repositório do site da Federação pela Soberania Digital do Brasil + +Este projeto depende de Flask, Jinja2 e Python. + +Instale todas as dependências no Trisquel usando: + + apt-get install python3-flask + +Isto vai baixar automaticamente as demais. + +# Contribuindo + +O repositório está em +https://git.brigadadigital.org.br/cgit/federana/website.git/. + +Para baixar e contribuir mesmo sem permissão de escrita, basta +clonar o repositório usando: + + git clone https://git.brigadadigital.org.br/cgit/federana/website.git/ + +Se você tem permissão de escrita, então clone usando: + + git clone ssh://federana@git.brigadadigital.org.br:22123/~/website.git + +Para saber quais partes conhecidas que precisam de correção, +faça o seguinte: + + git grep 'FIXME:' + +Ou, sem git: + + grep --exclude-dir='.git' -R 'FIXME:' diff --git a/federana.py b/federana.py new file mode 100755 index 0000000..34a6cd3 --- /dev/null +++ b/federana.py @@ -0,0 +1,32 @@ +#!/usr/bin/python3 + +import sys +import time +from flask import Flask, abort, render_template, redirect, url_for, request +from werkzeug.exceptions import default_exceptions +import jinja2.exceptions + +app = Flask(__name__) +app.jinja_env.auto_reload = True +app.config['TEMPLATES_AUTO_RELOAD'] = True + +@app.context_processor +def injetar_dados_basicos(): + return dict(organizacao = 'FederANA') + +def generic_handler(e): + return render_template('/erro.html', erro = e), getattr(e, 'code', 500) + +for codigo in default_exceptions: + app.errorhandler(codigo)(generic_handler) + +@app.route('/') +def index(): + return redirect('/index.html') + +@app.route('/.html') +def ver_pagina(caminho): + try: + return render_template('/' + caminho + '.html') + except jinja2.exceptions.TemplateNotFound as e: + abort(404) diff --git a/static/base.css b/static/base.css new file mode 100644 index 0000000..cfc6a7c --- /dev/null +++ b/static/base.css @@ -0,0 +1,108 @@ +* { + font-size: 12pt; +} + +body { + counter-reset: h3; + display: flex; +} + +body > header { + border-right: solid; + padding-right: 2.5%; + margin-right: 2.5%; +} + +nav > ul { + list-style: none; +} + +body > header ~ div { + flex: 1; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +address, p { + line-height: 1.5; + text-align: justify; + text-indent: 1.25cm; +} + +pre { + white-space: pre-wrap; +} + +h1, h2, h3, h4 { + text-transform: uppercase; +} + +h1, h2, h3, h5 { + font-weight: bold; +} + +h4, h6 { + font-weight: normal; +} + +h1, h2 { + font-size: 14pt; + text-align: center; +} + +h3 { + counter-reset: h4; +} + +h4 { + counter-reset: h5; +} + +h5 { + counter-reset: h6; +} + +h3:before { + counter-increment: h3; + content: "Capítulo\0000a0" counter(h3) "\0000a0"; +} + +h4:before { + counter-increment: h4; + content: "Seção\0000a0" counter(h4) "\0000a0"; +} + +h5:before { + counter-increment: h5; + content: "Subseção\0000a0" counter(h5) "\0000a0"; +} + +h6:before { + counter-increment: h6; + content: "Subseção\0000a0" counter(h5) "." counter(h6) "\0000a0"; +} + +.nao-contar h3:before, h3.nao-contar:before, +.nao-contar h4:before, h4.nao-contar:before, +.nao-contar h5:before, h5.nao-contar:before, +.nao-contar h6:before, h6.nao-contar:before { + content: ""; + counter-increment: none; +} + +.centro { + display: block; + margin-left: auto; + margin-right: auto; + width: 50%; +} + +@media print { + body > header { + display: none; + } +} diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..c25a275 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,37 @@ + + + + {%- block cabeca %} + + + {%- endblock %} + {% block titulo required %}{% endblock %} — {{ organizacao }} + + +
+

{{ organizacao }}

+ +
+
+
+

{{ self.titulo() }}

+ {%- block principal required %}{% endblock -%} + {%- if self.extra() %}
{%- block extra %}{% endblock -%}
{% endif -%} +
+
+ + diff --git a/templates/contato.html b/templates/contato.html new file mode 100644 index 0000000..c4de814 --- /dev/null +++ b/templates/contato.html @@ -0,0 +1,17 @@ +{% extends 'base.html' %} +{% block titulo %}Contato{% endblock %} +{% block principal %} +

Seguem as formas de participar ou entrar em contato:

+ +{% endblock %} diff --git a/templates/erro.html b/templates/erro.html new file mode 100644 index 0000000..230914a --- /dev/null +++ b/templates/erro.html @@ -0,0 +1,37 @@ +{% extends 'base.html' %} +{% block titulo %}Erro HTTP {{ erro['code'] }}{% endblock %} +{% block principal %} +{%- set traducoes = dict({ + 400: 'Requisição mal feita', + 401: 'Acesso não autorizado', + 403: 'Proibido para este usuário', + 404: 'Caminho ou arquivo não encontrado', + 405: 'Método de requisição não permitido', + 406: 'Critérios de requisição não aceitáveis', + 408: 'Tempo esgotado', + 409: 'Conflito com o estado do servidor', + 410: 'O caminho ou arquivo foi removido', + 411: 'É preciso informar o tamanho desejado', + 412: 'Nenhum resultado para as condicionantes informadas nos cabeçalhos da requisição', + 413: 'O conteúdo da requisição é muito grande', + 414: 'Caminho muito longo', + 415: 'Tipo de mídia ou conteúdo não suportado', + 416: 'O intervalo requerido para o arquivo não existe', + 417: 'Requisição grande não autorizada/esperada', + 418: 'Eu sou uma chaleira ou não aceito robôs', + 422: 'Erro de semântica ou dados inválidos', + 423: 'Arquivo Travado ou bloqueado', + 424: 'Dependência não cumprida', + 428: 'Condição requerida', + 429: 'Muitos pedidos ou requisições', + 431: 'Cabeçalhos muito grandes', + 451: 'Indisponível legalmente', + 500: 'Erro interno', + 501: 'Não implementado', + 502: 'Ponte de ligação ruim', + 503: 'Serviço indisponível', + 504: 'Tempo esgotado para a ponte de ligação', + 505: 'Versão HTTP não suportada' +}) %} +

{{ traducoes[erro['code']] }}

+{% endblock %} diff --git a/templates/estatuto.html b/templates/estatuto.html new file mode 100644 index 0000000..8348bac --- /dev/null +++ b/templates/estatuto.html @@ -0,0 +1,16 @@ +{% extends 'base.html' %} +{% block titulo %}Estatuto{% endblock %} +{% block principal %} +

Versão estática do Estatuto.

+

Teste A

+

A 1

+

Teste B

+

B 1

+

Teste B B

+

B B 1

+{% endblock %} +{% block extra %} +

Sugerindo alterações

+

Uma das formas de propor mudanças neste documento é deixar uma mensagem no ActivityPub.

+

Você também pode fazer um comentário ou entrar em contato de outras formas.

+{% endblock %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..77beab4 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,6 @@ +{% extends 'base.html' %} +{% block titulo %}Sobre a {{ organizacao }}{% endblock %} +{% block principal %} +

A {{ organizacao }} tem como fins e objetivos a promoção da soberania digital do Brasil e de sua população. Para tanto, estamos construindo de forma colaborativa o Estatuuto, Regimento Interno e demais elementos.

+

Tem alguma sugestão? Quer participar? Veja as páginas no menu de navegação para saber como contribuir.

+{% endblock %} diff --git a/templates/regimento-interno.html b/templates/regimento-interno.html new file mode 100644 index 0000000..f8921c2 --- /dev/null +++ b/templates/regimento-interno.html @@ -0,0 +1,10 @@ +{% extends 'base.html' %} +{% block titulo %}Regimento Interno{% endblock %} +{% block principal %} +

Versão estática do Regimento Interno.

+{% endblock %} +{% block extra %} +

Sugerindo alterações

+

Uma das formas de propor mudanças neste documento é deixar uma mensagem no ActivityPub.

+

Você também pode fazer um comentário ou entrar em contato de outras formas.

+{% endblock %} diff --git a/wsgi.py b/wsgi.py new file mode 100755 index 0000000..65256b7 --- /dev/null +++ b/wsgi.py @@ -0,0 +1,7 @@ +#!/usr/bin/python3 + +from federana import app + +if __name__ == '__main__': + app.run() + -- cgit v1.2.3