def METHOD_NAME(projects, start_date=None, end_date=None):
    results_qs = IndicatorPeriod.objects\
        .select_related('indicator', 'indicator__result')\
        .prefetch_related('disaggregations')\
        .filter(id__in=get_chosen_results_period_ids())
    narratives_qs = IndicatorPeriod.objects\
        .select_related('indicator')\
        .filter(id__in=get_chosen_narrative_period_ids())
    if start_date and end_date:
        results_qs = results_qs.filter(
            Q(period_start__isnull=True) | Q(period_start__gte=start_date),
            Q(period_end__isnull=True) | Q(period_end__lte=end_date)
        )
        narratives_qs = narratives_qs.filter(
            Q(period_start__isnull=True) | Q(period_start__gte=start_date),
            Q(period_end__isnull=True) | Q(period_end__lte=end_date)
        )
    return [build_view_object(p, results_qs, narratives_qs) for p in projects]