Beispiel #1
0
    def test_base(self):
        start = date.today()

        cities = list(self.backend.iter_city_search('paris'))
        assert cities

        for c in cities:
            assert c.id
            assert c.name

        c = cities[0]

        cur = self.backend.get_current(c.id)
        assert cur
        assert cur.temp
        assert cur.temp.unit
        assert not empty(cur.temp.value)
        assert cur.text

        forecast = list(self.backend.iter_forecast(c.id))
        assert forecast

        for f in forecast:
            assert f.date
            assert new_datetime(f.date) >= new_datetime(start)
            assert f.text
            assert -20 < f.low.value <= f.high.value < 40
            assert f.low.unit == 'C'
            assert f.high.unit == 'C'
Beispiel #2
0
    def all_events(self, start, end):
        self.users.go()
        users = {u.id: u for u in self.page.iter_users()}

        last = None
        while True:
            if end:
                if end < start:
                    break
            else:
                if last and last + timedelta(days=300) < start:
                    self.logger.info('300 days without event, stopping')
                    break

            window_end = start + timedelta(days=14)

            params = {
                'date': 'between,%s,%s' % (start.strftime('%Y-%m-%d'), window_end.strftime('%Y-%m-%d')),
                'paging': '0,10000',
                'owner.id': ','.join(str(u.id) for u in users.values()),
                'fields': 'u,a,o,ls,mc,r,c,rw',
            }
            self.calendar.go(params=params)
            events = self.page.iter_events(start, users=users)
            for event in sorted(events, key=lambda ev: new_datetime(ev.start_date)):
                if end and event.start_date >= end:
                    continue
                yield event
                last = new_datetime(event.start_date)

            start = window_end
Beispiel #3
0
    def all_events(self, start, end):
        self.users.go()
        users = {u.id: u for u in self.page.iter_users()}

        last = None
        while True:
            if end:
                if end < start:
                    break
            else:
                if last and last + timedelta(days=300) < start:
                    self.logger.info('300 days without event, stopping')
                    break

            window_end = start + timedelta(days=14)

            params = {
                'date': 'between,%s,%s' % (start.strftime('%Y-%m-%d'), window_end.strftime('%Y-%m-%d')),
                'leavePeriod.ownerId': ','.join(str(u.id) for u in users.values()),
                'fields': 'leavePeriod[id,ownerId,isConfirmed],isAm,date,color,isRemoteWork,leaveAccount[name,isRemoteWork]',
            }
            self.calendar.go(params=params)
            events = self.page.iter_events(start, users=users)
            for event in sorted(events, key=lambda ev: new_datetime(ev.start_date)):
                if end and event.start_date >= end:
                    continue
                yield event
                last = new_datetime(event.start_date)

            start = window_end + timedelta(days=1)
Beispiel #4
0
 def __setattr__(self, name, value):
     if name == 'value':
         # Force use of our date and datetime types, to fix bugs in python2
         # with strftime on year<1900.
         if type(value) is datetime.datetime:
             value = new_datetime(value)
         if type(value) is datetime.date:
             value = new_date(value)
     return object.__setattr__(self, name, value)
Beispiel #5
0
 def __setattr__(self, name, value):
     if name == 'value':
         # Force use of our date and datetime types, to fix bugs in python2
         # with strftime on year<1900.
         if type(value) is datetime.datetime:
             value = new_datetime(value)
         if type(value) is datetime.date:
             value = new_date(value)
     return object.__setattr__(self, name, value)
Beispiel #6
0
def sorted_transactions(iterable):
    """Sort an iterable of transactions in reverse chronological order"""
    return sorted(iterable, reverse=True, key=lambda tr: (tr.date, new_datetime(tr.rdate) if tr.rdate else datetime.datetime.min))
Beispiel #7
0
def sorted_transactions(iterable):
    """Sort an iterable of transactions in reverse chronological order"""
    return sorted(iterable,
                  reverse=True,
                  key=lambda tr: (tr.date, new_datetime(tr.rdate)
                                  if tr.rdate else datetime.datetime.min))