예제 #1
0
 def birthday_search(self, state):
     if isinstance(state, DateQueryState):
         if state.date:
             return Individual.get_birthday_query(state.date)
     elif isinstance(state, DateIntervalQueryState):
         if state.start and state.end:
             return Individual.get_birthday_query(state.start, state.end)
     else:
         raise AssertionError
예제 #2
0
 def birthday_search(self, state):
     """ Returns a birthday query suitable for search filters.
         This should be assigned on search_column when you want to filter for
         birth day. e.g.:
         SearchColumn('birth_date', search_column=self.birthday_search)
     """
     if isinstance(state, DateQueryState):
         if state.date:
             return Individual.get_birthday_query(state.date)
     elif isinstance(state, DateIntervalQueryState):
         if state.start and state.end:
             return Individual.get_birthday_query(state.start, state.end)
     else:
         raise AssertionError
예제 #3
0
 def birthday_search(self, state):
     """ Returns a birthday query suitable for search filters.
         This should be assigned on search_column when you want to filter for
         birth day. e.g.:
         SearchColumn('birth_date', search_column=self.birthday_search)
     """
     if isinstance(state, DateQueryState):
         if state.date:
             return Individual.get_birthday_query(state.date)
     elif isinstance(state, DateIntervalQueryState):
         if state.start and state.end:
             return Individual.get_birthday_query(state.start, state.end)
     else:
         raise AssertionError
예제 #4
0
    def test_get_birthday_interval_query(self):
        start = localdatetime(2000, 3, 1)
        end = localdatetime(2000, 3, 25)

        query = Individual.get_birthday_query(start, end)

        start_year = DateTrunc(u'year', Date(start))
        age_in_year = Age(Individual.birth_date,
                          DateTrunc(u'year', Individual.birth_date))
        test_query = (
            start_year + age_in_year +
            Case(condition=age_in_year < Age(Date(start), start_year),
                 result=Interval(u'1 year'),
                 else_=Interval(u'0 year')))
        test_query = And(test_query >= Date(start), test_query <= Date(end))

        self.assertEquals(query, test_query)

        individuals = list(self.store.find(Individual, test_query))
        self.assertEquals(len(individuals), 0)

        client1 = self.create_client(u'Junio C. Hamano')
        client1.person.individual.birth_date = localdate(1972, 10, 15)
        client2 = self.create_client(u'Richard Stallman')
        client2.person.individual.birth_date = localdate(1989, 3, 7)
        client3 = self.create_client(u'Linus Torvalds')
        client3.person.individual.birth_date = localdate(2000, 3, 4)
        client4 = self.create_client(u'Guido van Rossum')
        client4.person.individual.birth_date = localdate(2005, 3, 20)

        individuals = list(self.store.find(Individual, test_query))
        self.assertEquals(len(individuals), 3)
        self.assertTrue(client2.person.individual in individuals)
        self.assertTrue(client3.person.individual in individuals)
        self.assertTrue(client4.person.individual in individuals)
예제 #5
0
파일: test_person.py 프로젝트: rosalin/stoq
    def test_get_birthday_date_query(self):
        start = localdate(2000, 3, 4)

        query = Individual.get_birthday_query(start)

        start_year = DateTrunc(u'year', Date(start))
        age_in_year = Age(Individual.birth_date,
                          DateTrunc(u'year', Individual.birth_date))
        test_query = (
            start_year + age_in_year +
            Case(condition=age_in_year < Age(Date(start), start_year),
                 result=Interval(u'1 year'),
                 else_=Interval(u'0 year'))
        )
        test_query = (test_query == Date(start))

        self.assertEquals(query, test_query)

        individuals = list(self.store.find(Individual, test_query))
        self.assertEquals(len(individuals), 0)

        client1 = self.create_client(u'Junio C. Hamano')
        client1.person.individual.birth_date = localdate(1972, 10, 15)
        client2 = self.create_client(u'Richard Stallman')
        client2.person.individual.birth_date = localdate(1989, 3, 4)
        client3 = self.create_client(u'Linus Torvalds')
        client3.person.individual.birth_date = localdate(2000, 3, 4)
        client4 = self.create_client(u'Guido van Rossum')
        client4.person.individual.birth_date = localdate(2005, 3, 4)

        individuals = list(self.store.find(Individual, test_query))
        self.assertEquals(len(individuals), 3)
        self.assertTrue(client2.person.individual in individuals)
        self.assertTrue(client3.person.individual in individuals)
        self.assertTrue(client4.person.individual in individuals)