def academic_center(request, slug=None):
    context = {}
    header = {
        1: SortableHeader('#', False),
        2: SortableHeader('State', False),
        3: SortableHeader('institution_name', True, 'Institution Name'),
        4: SortableHeader('Training', False),
        5: SortableHeader('Participants', True),
        6: SortableHeader('Action', False)
    }

    collection = None
    start_date = request.GET.get('training__tdate_0', 0)
    end_date = request.GET.get('training__tdate_1', 0)
    lookup = None
    training_query = TrainingRequest.objects.filter(
        participants__gt=0, sem_start_date__lte=datetime.now())
    if start_date or end_date:
        if start_date and end_date:
            lookup = [start_date, end_date]
        elif start_date:
            lookup = [start_date, now()]
        else:
            lookup = [datetime.strptime('1970-01-01', '%Y-%m-%d'), end_date]
    if slug:
        collection = AcademicCenter.objects.filter(
            id__in=training_query.values_list(
                'training_planner__academic_id').distinct(),
            state__slug=slug).order_by('state__name', 'institution_name')
    else:
        if lookup:
            training_query = TrainingRequest.objects.filter(
                Q(sem_start_date__range=lookup)
                & Q(sem_start_date__lte=datetime.now()),
                participants__gt=0)
            collection = AcademicCenter.objects.filter(
                id__in=training_query.values_list(
                    'training_planner__academic_id').distinct()).order_by(
                        'state__name', 'institution_name')
        else:
            collection = AcademicCenter.objects.filter(
                id__in=training_query.values_list(
                    'training_planner__academic_id').distinct()).order_by(
                        'state__name', 'institution_name')

    raw_get_data = request.GET.get('o', None)
    collection = get_sorted_list(request, collection, header, raw_get_data)
    ordering = get_field_index(raw_get_data)

    collection = AcademicCenterFilter(request.GET, queryset=collection)
    context['form'] = collection.form
    context['total_training'] = training_query.count()
    participant_count = training_query.aggregate(Sum('participants'))
    print(participant_count)
    context['total_participant'] = participant_count['participants__sum']

    page = request.GET.get('page')
    collection = get_page(collection.qs, page)
    context['collection'] = collection
    context['header'] = header
    context['ordering'] = ordering

    return render(request, 'statistics/templates/academic-center.html',
                  context)
def academic_center(request, slug=None):
    context = {}
    header = {
        1: SortableHeader('#', False),
        2: SortableHeader('State', False),
        3: SortableHeader('institution_name', True, 'Institution Name'),
        4: SortableHeader('num_training', True, 'Training'),
        5: SortableHeader('num_participant', True, 'Participants'),
        6: SortableHeader('Action', False)
    }

    collection = None
    training_index = int(request.GET.get('training', 0))
    start_date = request.GET.get('training__tdate_0', 0)
    end_date = request.GET.get('training__tdate_1', 0)
    lookup = None
    if start_date or end_date:
        if start_date and end_date:
            lookup = [start_date, end_date]
        elif start_date:
            lookup = [start_date, now()]
        else:
            lookup = [datetime.strptime('1970-01-01', '%Y-%m-%d'), end_date]
    if slug:
        collection = AcademicCenter.objects.filter(state__slug=slug).order_by(
            'state__name', 'institution_name')
    elif training_index:
        collection = AcademicCenter.objects.filter(
            training__status=4, training__participant_count__gt=0).annotate(
                num_training=Count('training'),
                num_participant=Sum('training__participant_count')).filter(
                    num_training__gte=training_index).order_by(
                        'state__name', 'institution_name')
    else:
        if lookup:
            collection = AcademicCenter.objects.filter(
                training__status=4,
                training__participant_count__gt=0,
                training__tdate__range=lookup).annotate(
                    num_training=Count('training'),
                    num_participant=Sum(
                        'training__participant_count')).order_by(
                            'state__name', 'institution_name')
        else:
            collection = AcademicCenter.objects.filter(
                training__status=4,
                training__participant_count__gt=0).annotate(
                    num_training=Count('training'),
                    num_participant=Sum(
                        'training__participant_count')).order_by(
                            'state__name', 'institution_name')

    raw_get_data = request.GET.get('o', None)
    collection = get_sorted_list(request, collection, header, raw_get_data)
    ordering = get_field_index(raw_get_data)

    collection = AcademicCenterFilter(request.GET, queryset=collection)
    context['form'] = collection.form
    context['total_training'] = collection.qs.aggregate(Sum('num_training'))
    context['total_participant'] = collection.qs.aggregate(
        Sum('num_participant'))

    page = request.GET.get('page')
    collection = get_page(collection, page)
    options = '<option value="0"> --------- </option><option value="1">at least 1</option>'
    for i in range(5, 105, 5):
        options += '<option value="' + str(i) + '"> at least ' + str(
            i) + '</option>'
    options += '<option value="101">more than 100</option>'
    options = options.replace('<option value="' + str(training_index) + '">', \
        '<option value="' + str(training_index) + '" selected="selected">')
    context['collection'] = collection
    context['header'] = header
    context['ordering'] = ordering
    context['options'] = options

    return render(request, 'statistics/templates/academic-center.html',
                  context)