def test_calculate_pk(self): term = Term(term=Term.WINTER, year=2012, current=True) self.assertEqual(term._calculate_pk(), 20121) term = Term(term=Term.SPRING, year=2012, current=True) self.assertEqual(term._calculate_pk(), 20122) term = Term(term=Term.SUMMER, year=2012, current=True) self.assertEqual(term._calculate_pk(), 20123) term = Term(term=Term.FALL, year=2012, current=True) self.assertEqual(term._calculate_pk(), 20124) term = Term(term=Term.UNKNOWN, year=2012, current=True) self.assertEqual(term._calculate_pk(), 20120)
def generate_terms(span=5, include_summer=False): """Create Term instances for current year +/-span(years) inclusive.""" current_year = datetime.date.today().year start_year = max(current_year - span, datetime.MINYEAR) end_year = min(current_year + span, datetime.MAXYEAR) term_codes = [Term.FALL, Term.SPRING] if include_summer: term_codes.append(Term.SUMMER) if settings.TERM_TYPE == 'quarter': term_codes.append(Term.WINTER) new_terms = [] with transaction.atomic(): existing_terms = set([ t.id for t in Term.objects.filter(year__gte=start_year, year__lte=end_year) ]) for year in range(start_year, end_year + 1): for term in term_codes: new_term = Term(term=term, year=year) new_term.id = new_term._calculate_pk() if new_term.id not in existing_terms: new_terms.append(new_term) Term.objects.bulk_create(new_terms) return new_terms
def generate_terms(span=5, include_summer=False): """Create Term instances for current year +/-span(years) inclusive.""" current_year = datetime.date.today().year start_year = max(current_year - span, datetime.MINYEAR) end_year = min(current_year + span, datetime.MAXYEAR) term_codes = [Term.FALL, Term.SPRING] if include_summer: term_codes.append(Term.SUMMER) if settings.TERM_TYPE == 'quarter': term_codes.append(Term.WINTER) new_terms = [] with transaction.atomic(): existing_terms = set([t.id for t in Term.objects.filter( year__gte=start_year, year__lte=end_year)]) for year in range(start_year, end_year + 1): for term in term_codes: new_term = Term(term=term, year=year) new_term.id = new_term._calculate_pk() if new_term.id not in existing_terms: new_terms.append(new_term) Term.objects.bulk_create(new_terms) return new_terms