Esempio n. 1
0
    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 = ''
Esempio n. 2
0
    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 = ""
Esempio n. 3
0
 def get_years_available(self):
     return map(lambda sy: school_year_to_year(sy),
                self.get_time_keys_available())
Esempio n. 4
0
 def get_years_available(self):
     return map(lambda sy: school_year_to_year(sy), self.get_time_keys_available())