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)