Skip to content
This repository has been archived by the owner on Aug 7, 2018. It is now read-only.

Commit

Permalink
Merge branch 'master' of https://github.com/radar-parlamentar/radar i…
Browse files Browse the repository at this point in the history
…nto issue452
  • Loading branch information
lopes05 committed Apr 27, 2018
2 parents e3743f6 + e9cc002 commit 75b5b51
Show file tree
Hide file tree
Showing 12 changed files with 155 additions and 62 deletions.
13 changes: 12 additions & 1 deletion deploy/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,23 @@ cleanup() {
rm -rf /radar/radar_parlamentar/htmlcov
}

setup_cron() {
echo "Setuping cron"
crontab -l > mycron
# Executes 'manage.py runcrons' hourly:
echo "5 * * * * python /radar/radar_parlamentar/manage.py runcrons >> /var/log/radar/cronjob.log 2>&1" >> mycron
crontab mycron
rm mycron
crond
}

case "$1" in
deploy)
echo "Initializing deploy mode."
wait_for_port "Postgres" "$DB_HOST" "$DB_PORT"
python manage.py migrate
python manage.py collectstatic --noinput
setup_cron
;;
celery)
echo "Initializing celery."
Expand Down Expand Up @@ -88,8 +99,8 @@ case "$1" in
wait_for_port "Postgres" "$DB_HOST" "$DB_PORT"
python manage.py migrate
python manage.py collectstatic --noinput
setup_cron
echo "Starting uwsgi"
uwsgi --ini /radar/deploy/radar_uwsgi.ini
;;
esac

6 changes: 6 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

# EXAMPLE AT: https://github.com/nevercaution/docker-django-uwsgi-nginx
version: "3.4"

Expand All @@ -18,6 +19,10 @@ services:

elasticsearch:
image: elasticsearch:2.4-alpine # docker.elastic.co/elasticsearch/elasticsearch:6.2.3
# Estamos usando uma versão velha do ElasticSearch para não ter que
# dar o seguinte comando no host:
# sysctl -w vm.max_map_count=262144
# https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
volumes:
- ./deploy/elasticsearch/hunspell:/usr/share/elasticsearch/config/hunspell
- volume_radar_elasticsearch_data:/usr/share/elasticsearch/data
Expand Down Expand Up @@ -58,6 +63,7 @@ services:
- memcache
- rabbitmq
- elasticsearch
- nginx # because CashRefresherJob
depends_on:
- postgres
- nginx
Expand Down
37 changes: 0 additions & 37 deletions radar_parlamentar/cron/cache-analises.sh

This file was deleted.

4 changes: 0 additions & 4 deletions radar_parlamentar/cron/clear-cache.sh

This file was deleted.

38 changes: 33 additions & 5 deletions radar_parlamentar/cron/jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
import logging
from importadores.celery_tasks import importar_assincronamente
from datetime import date
from django.core.cache import cache
import requests
from modelagem import models

logger = logging.getLogger("radar")

Expand All @@ -12,17 +15,18 @@

# Isso é chamada a cada 2 min contanto que
# python manage.py runcrons seja constantemente executado
# TODO: colocar "python manage.py runcrons" no cron do container.
class DemoJob(CronJobBase):
"""Para testes"""

RUN_EVERY_MINS = 2
schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
code = 'job.CashRefresherJob' # a unique code
code = 'job.DemoJob' # a unique code

def do(self):
logger.info('DemoJob foi chamado.')

class ImportadorJob(CronJobBase):
"""Executado terça às 2h"""

RUN_AT_TIMES = ['02:00']
schedule = Schedule(run_at_times=RUN_AT_TIMES)
Expand All @@ -39,6 +43,30 @@ def do(self):
else:
logger.info('Hoje não é o dia. ImportadorJob só trabalha às terças.')

# TODO
# class CashRefresherJob
# class DbDumperJob
class CashRefresherJob(CronJobBase):
"""Executado diariamente às 1h"""

RUN_AT_TIMES = ['01:00']
schedule = Schedule(run_at_times=RUN_AT_TIMES)
code = 'job.CashRefresherJob'

def do(self):
logger.info('CashRefresherJob foi chamado.')
cache.clear()
casas = [ casa.nome_curto for casa in models.CasaLegislativa.objects.all() ]
periodicidades = [ periodo[0] for periodo in models.PERIODOS ]
if 'MES' in periodicidades:
periodicidades.remove('MES')
for casa in casas:
for periodicidade in periodicidades:
url = 'http://nginx/radar/json/%s/%s/' % (casa, periodicidade)
# localhost não é alcançável, pois o django é acessado via socket
logger.info('CashRefresherJob invocando', url)
requests.get(url)
# Retorno:
# <h1>Bad Request (400)</h1>
# Obs: Do host, 'GET http://localhost/radar/json/cmsp/ANO/'
# funciona.


# TODO class DbDumperJob - Executado segunda às 4h
2 changes: 1 addition & 1 deletion radar_parlamentar/importadores/celery_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@

@shared_task
def importar_assincronamente(nome_curto_casa_legislativa):
# importador.main([nome_curto_casa_legislativa])
importador.main([nome_curto_casa_legislativa])
logger.info("Importação de %s completa", nome_curto_casa_legislativa)
1 change: 0 additions & 1 deletion radar_parlamentar/radar_parlamentar/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,6 @@
CACHE_MIDDLEWARE_SECONDS = 60*60

CRON_CLASSES = [
'cron.jobs.DemoJob',
'cron.jobs.ImportadorJob',
]

Expand Down
27 changes: 14 additions & 13 deletions radar_parlamentar/radar_parlamentar/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@
<li><a href="/ogrupo">O Grupo</a></li>
<li><a href="/premiacoes">Premiações</a></li>
<li><a href="/radarnamidia">Radar na Mídia</a></li>
<li><a href="/radarnaacademia">Radar na Academia</a></li>
</ul>
</li>
</ul>
Expand All @@ -179,7 +180,7 @@ <h3>{% block pagedesc %}{% endblock pagedesc %}</h3>

<section id="content">
<ul class="breadcrumbs">
{% block breadcrumbs %}{% endblock breadcrumbs %}
{% block breadcrumbs %}{% endblock breadcrumbs %}
</ul>
{% if messages %}
<ul class="messages">
Expand All @@ -191,7 +192,7 @@ <h3>{% block pagedesc %}{% endblock pagedesc %}</h3>
{% endfor %}
</ul>
{% endif %}
{% block content %}{% csrf_token %}{% endblock content %}
{% block content %}{% csrf_token %}{% endblock content %}

<section class="cols">
<div class="half">
Expand Down Expand Up @@ -338,7 +339,7 @@ <h5><a href="http://polignu.org/projeto/camaraws/análise-automatizada-da-semelh
</ul>
</div><!-- end of .oneThird -->
<div class="oneThird">

<div class="stHead"><h2>CONTATE-NOS</h2></div>
<ul class="address">
<!-- <li class="street">Av. Prof. Almeida Prado, trav. 2, n.83, sala S-33 - Edif. de Eng. Civil - Cid. Universitária - São Paulo - SP 05508-900 Brasil</li>
Expand All @@ -347,7 +348,7 @@ <h5><a href="http://polignu.org/projeto/camaraws/análise-automatizada-da-semelh
<li class="email"><a href="mailto:radar@polignu.org" rel="nofollow">radar@polignu.org (lista aberta)</a></li>
<!-- <li class="skype"><a href="skype:circles_support?add" rel="nofollow">circles_support</a></li> -->
</ul><!-- end of .address -->

<div class="stHead"><h2>APOIO</h2></div>
<ul class="miniBlogList">
<li>
Expand All @@ -369,18 +370,18 @@ <h5><a href="http://imasters.com.br/" target="_blank">iMasters</a></h5>
<h5><a href="http://ccsl.ime.usp.br/" target="_blank">Centro de Competência de Software Livre</a></h5>
</li>
</ul>

</div><!-- end of .oneThird -->
</section><!-- end of .cols -->
</div><!-- end of .wrap -->
</div><!-- end of .top -->
<section class="bottom">

<div class="contents">
<p class="copy">
Copyright &copy; 2012 |
<a href="http://www.gnu.org/licenses/agpl">Alguns Direitos Reservados: Affero GPL</a> |
<a href="https://github.com/radar-parlamentar/radar/">Código Fonte deste projeto</a>
Copyright &copy; 2012 |
<a href="http://www.gnu.org/licenses/agpl">Alguns Direitos Reservados: Affero GPL</a> |
<a href="https://github.com/radar-parlamentar/radar/">Código Fonte deste projeto</a>
</p>
<ul class="socialLinks">
<li class="twitter"><a href="https://twitter.com/#!/RadarParlamento">Twitter</a></li>
Expand All @@ -390,7 +391,7 @@ <h5><a href="http://ccsl.ime.usp.br/" target="_blank">Centro de Competência de
<li class="flickr"><a href="#">Flickr</a></li> -->

</ul><!-- end of socialLinks -->

<p class="version">
{% load versao_radar %}
{% versao_radar %}
Expand Down Expand Up @@ -442,17 +443,17 @@ <h5><a href="http://ccsl.ime.usp.br/" target="_blank">Centro de Competência de

{% if request.get_host != '127.0.0.1:8000' and request.get_host != 'localhost:8000' %}
<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-11505683-7']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>
{% endif %}
</body>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{%extends "base.html"%}

{% block title %}
Radar na Academia
{% endblock title %}

{% block extrascripts %}
{% endblock extrascripts %}

{% block extrahead %}
{% endblock extrahead %}

{% block headerImgClass %}
about
{% endblock headerImgClass %}

{% block nomepagina %}
Radar na Academia
{% endblock nomepagina %}

{% block pagedesc %}
Radar Parlamentar também está no mundo acadêmico!
{% endblock pagedesc %}

{% block breadcrumbs %}
<li><a href="/index">Home</a> &raquo;</li>
<li><a href="/radarnamidia">Radar na Academia</a></li>

{% endblock breadcrumbs %}

{% block content %}
<article class="aboutDesc">
<!-- artigo do Leviathan fica fixo em primeiro lugar -->
<h4>Análise de votações nominais do legislativo brasileiro utilizando componentes principais</h4>
<p>Autores: Leonardo Leite e Saulo Trento.
Publicado em: <a href="https://www.revistas.usp.br/leviathan" target="_blank"> Leviathan, Cadernos de Pesquisa Política</a>. 2018</p>
<p>
Este artigo traz uma revisão de métodos de análise quantitativa de votações nominais em casas legislativas e discute a utilização da análise de componentes principais (ACP) como um método simples e eficaz para analisar votações nominais de casas legislativas. Apresentamos também nossa abordagem para o tratamento de abstenções e para análises agregadas por partido, temas pouco explorados na literatura devido a pouca relevância no contexto de casas legislativas dos Estados Unidos. A avaliação do modelo é apresentada com medidas comparadas ao WNOMINATE, um dos métodos mais conhecidos de análise de votações nominais das ciências políticas.
<br><a href="https://www.revistas.usp.br/leviathan/article/view/143408" target="_blank">Artigo completo...</a><br>
</p>
<!-- daqui pra baixo é em ordem cronológica descendente -->
<h4>Using PageRank to reveal relevant issues to support decision-making on open source projects</h4>
<p>Autores: Alessandro Caetano, Leonardo Leite, Paulo Meirelles, Hilmer Neri, Fabio Kon e Guilherme Horta Travassos.
A ser publicado em: <a href="https://www.oss2018.org/" target="_blank">14th International Conference on Open Source Systems (OSS 2018)</a>.</p>
<p>
This paper introduces an approach based on software issues to support decision-making regarding open source software development
activities such as release planning and retrospectives. It uses the PageRank algorithm to suggest an importance ranking
of the software issues based on the issues dependencies topology. When based on a highly connected topology, project
leaders can use this rank as an input to planning activities. The observation of two open source projects indicates
the feasibility of our approach.
<br><a href="https://www.dropbox.com/s/gie4u0tym5bekqo/OSS2018_PageRank_Issues.pdf?dl=0" target="_blank">Artigo completo...</a><br>
</p>
<h4>O papel dos Hackathons promovidos no setor público brasileiro: um estudo na perspectiva de inovação aberta, citizen-sourcing e motivação dos participantes</h4>
<p>Autor: Gabriel Ferreira. Orientadora: Josivania Farias.
Dissertação de mestrado da Faculdade de Economia, Administração, Contabilidade e Gestão de Políticas Públicas da Universidade de Brasília (FACE/UnB). 2017</p>
<p>
O Hackathon é uma estratégia de citizen-sourcing que convida hackers a criar projetos que
transformem informações de interesse público em soluções digitais, acessíveis a todos os
cidadãos. Esta pesquisa teve como objetivo geral investigar as iniciativas de Hackathons
utilizadas como estratégia de citizen-sourcing para inovação aberta no setor público brasileiro,
considerando-se a perspectiva de agentes públicos promotores das iniciativas e a motivação
de cidadãos participantes.
<br><a href="https://www.dropbox.com/s/dz4txyeb4qgv52f/Disserta%C3%A7%C3%A3o%20-%20Gabriel%20Ferreira%20-%20VF2.pdf?dl=0" target="_blank">Trabalho completo...</a><br>
</p>
<h4>Aplicação de Software Analytics e o algoritmo de ranqueamento de páginas para apoiar decisões de planejamento de sprint</h4>
<p>Autor: Alessandro Beltrão. Orientador: Hilmer Neri.
Trabalho de conclusão de curso da <a href="https://fga.unb.br/" target="_blank"> Universidade de Brasília - Faculdade UnB Gama (UnB/FGA)</a>. 2016</p>
<p>
Este trabalho propõe a utilização de Software Analytics, para a anáĺise de relevancia de issues
de repositórios de código aberto com a utilização de algoritmos de Page Ranking e centralidade de redes
para apoiar a tomada de decisões de planejamento de sprint e a priorização de atividades.
<br><a href="https://fga.unb.br/articles/0001/6945/tcc__2_.pdf" target="_blank">Trabalho completo...</a><br>
</p>
<p>
</article>
{% endblock content %}

{% block extrascriptsend %}
menuActive('sobre_nos');
{% endblock extrascriptsend %}

{% block extrajsend %}
{% endblock extrajsend %}
1 change: 1 addition & 0 deletions radar_parlamentar/radar_parlamentar/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
path('ogrupo/', radar_views.ogrupo, name="ogrupo"),
path('premiacoes/', radar_views.premiacoes, name="premiacoes"),
path('radarnamidia/', radar_views.radar_na_midia, name="radar_na_midia"),
path('radarnaacademia/', radar_views.radar_na_academia, name="radar_na_academia"),
path('sim-voto-aberto/', radar_views.votoaberto, name="votoaberto"),
path('blog/', radar_views.generate_blog_news, name="blog"),
path('dados/', radar_views.dados_utilizados), # URL legada
Expand Down
4 changes: 4 additions & 0 deletions radar_parlamentar/radar_parlamentar/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ def radar_na_midia(request):
return render(request,'radar_na_midia.html')


def radar_na_academia(request):
return render(request,'radar_na_academia.html')


def votoaberto(request):
return render(request,'votoaberto.html')

Expand Down
1 change: 1 addition & 0 deletions run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docker-compose up django

0 comments on commit 75b5b51

Please sign in to comment.