# Path: openfonacide/filtros.py
# def filtros(request):
#     prioridades = request.GET.get('prioridades')
# 
#     ubicacion = request.GET.get('ubicacion')
#     reportadas = request.GET.get('reportadas')
#     if reportadas == 'true':
#         reportadas = True
#     else:
#         reportadas = None
#     documentos = request.GET.get('documentos')
#     if documentos == 'true':
#         documentos = True
#     else:
#         documentos = None
#     # adjudicaciones = request.GET.get('adjudicaciones')
#     # planificaciones = request.GET.get('planificaciones')
#     estado = request.GET.get('estado')
#     if reportadas or documentos or estado and estado.lower() in ('priorizado', 'planificado', 'adjudicado', 'terminado'):
#         if not prioridades:
#             prioridades = json.dumps({'mobiliarios': True, 'sanitarios': True, 'aulas': True, 'otros': True})
#     if prioridades:
#         prioridades = json.loads(prioridades)
#         tipo = []
#         rango = get_rango(prioridades.get('rango'))
#         if ubicacion:
#             ubicacion = json.loads(ubicacion)
#         else:
#             ubicacion = {}
#         for key in prioridades:
#             if prioridades.get(key):
#                 tipo.append(key)
#         return JsonResponse(filtro_prioridad(tipo, rango, ubicacion, estado, documentos, reportadas), safe=False)
#     else:
#         if ubicacion:
#             ubicacion = json.loads(ubicacion)
#         else:
#             ubicacion = {}
#         return JsonResponse(filtro_ubicacion(ubicacion), safe=False)
# 
# def generar_ubicacion(request):
#     cursor = connection.cursor()
#     query = ('SELECT codigo_departamento, min(nombre_departamento), codigo_distrito,'
#             'min(nombre_distrito), codigo_barrio_localidad, min(nombre_barrio_localidad) '
#             'FROM openfonacide_establecimiento '
#             'WHERE nombre_barrio_localidad NOT LIKE \'%CONFIRMAR%\' '
#             'GROUP BY codigo_departamento, codigo_distrito, codigo_barrio_localidad '
#             'ORDER BY codigo_departamento, codigo_distrito, codigo_barrio_localidad')
#     cursor.execute(query)
#     rows = cursor.fetchall()
#     # [dep, dis, bar ]
#     anterior = [None, None, None]
#     actual = [None, None, None]
#     dep = None
#     dis = None
#     bar = None
#     result = []
#     for row in rows:
#         actual[0] = row[0]
#         actual[1] = row[2]
#         actual[2] = row[4]
# 
#         if anterior[0] != actual[0]:
#             dep = {'id': row[0], 'nombre': row[1], 'distritos':[]}
#             result.append(dep)
# 
#         if anterior[1] != actual[1]:
#             dis = {'id': row[2], 'nombre': row[3], 'barrios':[]}
#             dep.get('distritos').append(dis)
# 
#         if anterior[2] != actual[2]:
#             bar = {'id': row[4], 'nombre': row[5]}
#             dis.get('barrios').append(bar)
# 
#         anterior[0] = row[0]
#         anterior[1] = row[2]
#         anterior[2] = row[4]
#     cursor.close()
#     return JsonResponse(result, safe=False)


from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from openfonacide.filtros import filtros, generar_ubicacion
from openfonacide.resumen import _resumen
from openfonacide.infografiaDNCP import *
from rest_framework import routers
from openfonacide.views import *

    # ... more partials ...,
)

private_api = patterns('',
    url(r'^temporal/$', TemporalListView.as_view()),
    url(r'^unlink/$', UnlinkAPIView.as_view()),
)

"""
    XXX: Se puede mejorar el manejo de rutas, esto se hace para pasarle todas las rutas a router de
    AngularJS, particularmente la tercera ruta.
"""
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^api/v1/', include(router.urls)),
    url(r'^api/', include('rest_framework_swagger.urls')),
    url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'index-nuevo.html'}),
    url(r'^accounts/recuperar/$', Recuperar.as_view(), name='recuperar_pass'),
    # (.*)/? es para poder llamar desde cualquier lugar
    url(r'^((?!admin).)*/?partials/', include(partial_patterns, namespace='partials')),
    url(r'^((?!admin).)*/?prioridades/(?P<codigo_establecimiento>\w*)/?', PrioridadController.as_view(), name='prioridad'),
    url(r'^((?!admin).)*/?establecimiento/(?P<codigo_establecimiento>\w*)/?$', EstablecimientoController.as_view(), name='establecimiento'),
    url(r'^((?!admin).)*/?institucion/(?P<codigo_establecimiento>\w*)/?$', InstitucionController.as_view(), name='institucion'),
    # url(r'^listaInstituciones',ListaInstitucionesController.as_view(), name='listaInstituciones'),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^logout/$', 'django.contrib.auth.views.logout',  {'next_page': 'index'}, name='logout'),

# Path: openfonacide/filtros.py
# def filtros(request):
#     prioridades = request.GET.get('prioridades')
# 
#     ubicacion = request.GET.get('ubicacion')
#     reportadas = request.GET.get('reportadas')
#     if reportadas == 'true':
#         reportadas = True
#     else:
#         reportadas = None
#     documentos = request.GET.get('documentos')
#     if documentos == 'true':
#         documentos = True
#     else:
#         documentos = None
#     # adjudicaciones = request.GET.get('adjudicaciones')
#     # planificaciones = request.GET.get('planificaciones')
#     estado = request.GET.get('estado')
#     if reportadas or documentos or estado and estado.lower() in ('priorizado', 'planificado', 'adjudicado', 'terminado'):
#         if not prioridades:
#             prioridades = json.dumps({'mobiliarios': True, 'sanitarios': True, 'aulas': True, 'otros': True})
#     if prioridades:
#         prioridades = json.loads(prioridades)
#         tipo = []
#         rango = get_rango(prioridades.get('rango'))
#         if ubicacion:
#             ubicacion = json.loads(ubicacion)
#         else:
#             ubicacion = {}
#         for key in prioridades:
#             if prioridades.get(key):
#                 tipo.append(key)
#         return JsonResponse(filtro_prioridad(tipo, rango, ubicacion, estado, documentos, reportadas), safe=False)
#     else:
#         if ubicacion:
#             ubicacion = json.loads(ubicacion)
#         else:
#             ubicacion = {}
#         return JsonResponse(filtro_ubicacion(ubicacion), safe=False)
# 
# def generar_ubicacion(request):
#     cursor = connection.cursor()
#     query = ('SELECT codigo_departamento, min(nombre_departamento), codigo_distrito,'
#             'min(nombre_distrito), codigo_barrio_localidad, min(nombre_barrio_localidad) '
#             'FROM openfonacide_establecimiento '
#             'WHERE nombre_barrio_localidad NOT LIKE \'%CONFIRMAR%\' '
#             'GROUP BY codigo_departamento, codigo_distrito, codigo_barrio_localidad '
#             'ORDER BY codigo_departamento, codigo_distrito, codigo_barrio_localidad')
#     cursor.execute(query)
#     rows = cursor.fetchall()
#     # [dep, dis, bar ]
#     anterior = [None, None, None]
#     actual = [None, None, None]
#     dep = None
#     dis = None
#     bar = None
#     result = []
#     for row in rows:
#         actual[0] = row[0]
#         actual[1] = row[2]
#         actual[2] = row[4]
# 
#         if anterior[0] != actual[0]:
#             dep = {'id': row[0], 'nombre': row[1], 'distritos':[]}
#             result.append(dep)
# 
#         if anterior[1] != actual[1]:
#             dis = {'id': row[2], 'nombre': row[3], 'barrios':[]}
#             dep.get('distritos').append(dis)
# 
#         if anterior[2] != actual[2]:
#             bar = {'id': row[4], 'nombre': row[5]}
#             dis.get('barrios').append(bar)
# 
#         anterior[0] = row[0]
#         anterior[1] = row[2]
#         anterior[2] = row[4]
#     cursor.close()
#     return JsonResponse(result, safe=False)


# Path: openfonacide/urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from openfonacide.filtros import filtros, generar_ubicacion
from openfonacide.resumen import _resumen
from openfonacide.infografiaDNCP import *
from rest_framework import routers
from openfonacide.views import *


    # ... more partials ...,
)

private_api = patterns('',
    url(r'^temporal/$', TemporalListView.as_view()),
    url(r'^unlink/$', UnlinkAPIView.as_view()),
)

"""
    XXX: Se puede mejorar el manejo de rutas, esto se hace para pasarle todas las rutas a router de
    AngularJS, particularmente la tercera ruta.
"""
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^api/v1/', include(router.urls)),
    url(r'^api/', include('rest_framework_swagger.urls')),
    url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'index-nuevo.html'}),
    url(r'^accounts/recuperar/$', Recuperar.as_view(), name='recuperar_pass'),
    # (.*)/? es para poder llamar desde cualquier lugar
    url(r'^((?!admin).)*/?partials/', include(partial_patterns, namespace='partials')),
    url(r'^((?!admin).)*/?prioridades/(?P<codigo_establecimiento>\w*)/?', PrioridadController.as_view(), name='prioridad'),
    url(r'^((?!admin).)*/?establecimiento/(?P<codigo_establecimiento>\w*)/?$', EstablecimientoController.as_view(), name='establecimiento'),
    url(r'^((?!admin).)*/?institucion/(?P<codigo_establecimiento>\w*)/?$', InstitucionController.as_view(), name='institucion'),
    # url(r'^listaInstituciones',ListaInstitucionesController.as_view(), name='listaInstituciones'),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^logout/$', 'django.contrib.auth.views.logout',  {'next_page': 'index'}, name='logout'),

    url(r'^filtros/$', filtros, name='filtros'),