diff --git a/sigi/apps/eventos/templates/eventos/alocacao_equipe.html b/sigi/apps/eventos/templates/eventos/alocacao_equipe.html
new file mode 100644
index 0000000..0756f22
--- /dev/null
+++ b/sigi/apps/eventos/templates/eventos/alocacao_equipe.html
@@ -0,0 +1,51 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_static %}
+{% load static from staticfiles %}
+{% load thumbnail %}
+
+{% block extrastyle %}
+
+ {{ block.super }}
+{% endblock %}
+
+{% block extrahead %}
+ {{ block.super }}
+{% endblock %}
+
+{% block coltype %}colMS{% endblock %}
+
+{% block content_title %}
{% blocktrans %}Alocação de equipe em {{ ano_pesquisa }}{% endblocktrans %}
{% endblock %}
+
+{% block object-tools-items %}
+ {% if prev_button %}
+ {% trans "Ano anterior" %}
+ {% endif %}
+ {% if next_button %}
+ {% trans "Próximo ano" %}
+ {% endif %}
+{% endblock %}
+
+{% block content %}
+
+
+ {% for linha in linhas %}
+
+ {% if forloop.first %}
+ {% for coluna in linha %}
+ {{ coluna }} |
+ {% endfor %}
+ {% else %}
+ {% for coluna in linha %}
+ {{ coluna }} |
+ {% endfor %}
+ {% endif %}
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/sigi/apps/eventos/urls.py b/sigi/apps/eventos/urls.py
index 0368400..a648c7c 100644
--- a/sigi/apps/eventos/urls.py
+++ b/sigi/apps/eventos/urls.py
@@ -6,4 +6,5 @@ urlpatterns = patterns(
'sigi.apps.eventos.views',
# Painel de ocorrencias
url(r'^calendario/$', 'calendario', name='eventos-calendario'),
+ url(r'^alocacaoequipe/$', 'alocacao_equipe', name='eventos-alocacaoequipe'),
)
diff --git a/sigi/apps/eventos/views.py b/sigi/apps/eventos/views.py
index b3e11b2..da10f94 100644
--- a/sigi/apps/eventos/views.py
+++ b/sigi/apps/eventos/views.py
@@ -20,9 +20,13 @@
import calendar
import datetime
+import locale
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
+from django.utils import translation
+from django.utils.translation import ungettext, ugettext as _
from sigi.apps.eventos.models import Evento
+from sigi.apps.servidores.models import Servidor
@login_required
def calendario(request):
@@ -103,4 +107,58 @@ def calendario(request):
data['eventos'] = eventos
data['linhas'] = linhas
- return render(request, 'eventos/calendario.html', data)
\ No newline at end of file
+ return render(request, 'eventos/calendario.html', data)
+
+def alocacao_equipe(request):
+ ano_pesquisa = int(request.GET.get('ano', datetime.date.today().year))
+
+ data = {'ano_pesquisa': ano_pesquisa}
+
+ if Evento.objects.filter(data_inicio__year=ano_pesquisa-1).exists():
+ data['prev_button'] = {'ano': ano_pesquisa - 1 }
+
+ if Evento.objects.filter(data_inicio__year=ano_pesquisa+1).exists():
+ data['next_button'] = {'ano': ano_pesquisa + 1 }
+
+ dados = []
+
+ for evento in Evento.objects.filter(data_inicio__year=ano_pesquisa).exclude(status='C').prefetch_related('equipe_set'):
+ for p in evento.equipe_set.all():
+ registro = None
+ for r in dados:
+ if r[0] == p.membro.pk:
+ registro = r
+ break
+ if not registro:
+ registro = [p.membro.pk, p.membro.nome_completo, [{'dias': 0, 'eventos': 0} for x in range(1,13)]]
+ dados.append(registro)
+
+ registro[2][evento.data_inicio.month-1]['dias'] += (evento.data_termino - evento.data_inicio).days + 1
+ registro[2][evento.data_inicio.month-1]['eventos'] += 1
+
+ dados.sort(lambda x, y: cmp(x[1], y[1]))
+
+ lang = (translation.to_locale(translation.get_language())+'.utf8').encode()
+ locale.setlocale(locale.LC_ALL, lang)
+
+ linhas = [[_(u"Servidor")] + [calendar.month_name[m] for m in range(1,13)] + ['total']]
+
+ for r in dados:
+ r[2].append(reduce(lambda x,y:{'dias': x['dias'] + y['dias'],
+ 'eventos': x['eventos'] + y['eventos']}, r[2]))
+ linhas.append([r[1]] +
+ [_(ungettext(u"%(dias)s dia", u"%(dias)s dias", d['dias']) + " em " +
+ ungettext(u"%(eventos)s evento", u"%(eventos)s eventos", d['eventos'])
+ ) % d if d['dias'] > 0 or d['eventos'] > 0 else '' for d in r[2]])
+
+# for registro in Servidor.objects.filter(equipe_evento__evento__data_inicio__year=ano_pesquisa).exclude(equipe_evento__evento__status='C').distinct():
+# dados = [{'dias': 0, 'eventos': 0} for x in range(1,13)]
+# for part in registro.equipe_evento.filter(evento__data_inicio__year=ano_pesquisa).exclude(evento__status='C'):
+# dados[part.evento.data_inicio.month-1]['dias'] += (part.evento.data_termino -
+# part.evento.data_inicio).days + 1
+# dados[part.evento.data_inicio.month-1]['eventos'] += 1
+# dados.append([registro.nome_completo] + [_(ungettext(u"%(dias)s dia", u"%(dias)s dias", d['dias']) + " em " + ungettext(u"%(eventos)s evento", u"%(eventos)s eventos", d['eventos'])) % d if d['dias'] > 0 or d['eventos'] > 0 else '' for d in dados])
+
+ data['linhas'] = linhas
+
+ return render(request, 'eventos/alocacao_equipe.html', data)
\ No newline at end of file