def set_years_available(self): """ Collapse a list of years into a single string that spans year ranges 2000,2001,2002,2004 --> 2000-02,2004 """ years = set() for time_type, time_key in self.indicatordata_set.filter( time_key__isnull=False).exclude( numeric__isnull=True, string__isnull=True).values_list('time_type', 'time_key').distinct(): if time_type == 'School Year': years.add(school_year_to_year(time_key)) if time_type == 'Calendar Year': years.add(int(time_key.split('.')[0])) self.years_available = list(years) # FIXME: done in a rush, could be better years = sorted(years) ranged_sets = [] last_year = None start = None for year in years: if not last_year: start = year last_year = year else: if year == last_year + 1: last_year = year else: if last_year == start: if start: ranged_sets.append(str(start)) else: ranged_sets.append("%s-%s" % (start, str(last_year)[2:4])) start = year last_year = year if last_year == start: if start: ranged_sets.append(str(start)) else: ranged_sets.append("%s-%s" % (start, str(last_year)[2:4])) if len(ranged_sets) > 0: self.years_available_display = ','.join(ranged_sets) else: self.years_available_display = ''
def set_years_available(self): """ Collapse a list of years into a single string that spans year ranges 2000,2001,2002,2004 --> 2000-02,2004 """ years = set() for time_type, time_key in ( self.indicatordata_set.filter(time_key__isnull=False) .exclude(numeric__isnull=True, string__isnull=True) .values_list("time_type", "time_key") .distinct() ): if time_type == "School Year": years.add(school_year_to_year(time_key)) if time_type == "Calendar Year": years.add(int(time_key.split(".")[0])) self.years_available = list(years) # FIXME: done in a rush, could be better years = sorted(years) ranged_sets = [] last_year = None start = None for year in years: if not last_year: start = year last_year = year else: if year == last_year + 1: last_year = year else: if last_year == start: if start: ranged_sets.append(str(start)) else: ranged_sets.append("%s-%s" % (start, str(last_year)[2:4])) start = year last_year = year if last_year == start: if start: ranged_sets.append(str(start)) else: ranged_sets.append("%s-%s" % (start, str(last_year)[2:4])) if len(ranged_sets) > 0: self.years_available_display = ",".join(ranged_sets) else: self.years_available_display = ""
def get_years_available(self): return map(lambda sy: school_year_to_year(sy), self.get_time_keys_available())