Beispiel #1
0
 def availability(
     self, emails, duration, interval, start_at, end_at, free_busy=None
 ):
     if isinstance(emails, six.string_types):
         emails = [emails]
     if isinstance(duration, timedelta):
         duration_minutes = int(duration.total_seconds() // 60)
     else:
         duration_minutes = int(duration)
     if isinstance(interval, timedelta):
         interval_minutes = int(interval.total_seconds() // 60)
     else:
         interval_minutes = int(interval)
     if isinstance(start_at, datetime):
         start_time = timestamp_from_dt(start_at)
     else:
         start_time = start_at
     if isinstance(end_at, datetime):
         end_time = timestamp_from_dt(end_at)
     else:
         end_time = end_at
     url = "{api_server}/calendars/availability".format(api_server=self.api_server)
     data = {
         "emails": emails,
         "duration_minutes": duration_minutes,
         "interval_minutes": interval_minutes,
         "start_time": start_time,
         "end_time": end_time,
         "free_busy": free_busy or [],
     }
     resp = self.session.post(url, json=data)
     _validate(resp)
     return resp.json()
Beispiel #2
0
def test_update_thread_attrs(api_client):
    thread = api_client.threads.create()
    first = datetime(2017, 2, 3, 10, 0, 0)
    second = datetime(2016, 10, 5, 14, 30, 0)
    # timestamps and datetimes are handled totally separately
    thread.last_message_at = first
    thread.last_message_timestamp = timestamp_from_dt(second)
    assert thread.last_message_at == first
    assert thread.last_message_timestamp == timestamp_from_dt(second)
    # but datetimes overwrite timestamps when serializing to JSON
    assert thread.as_json()["last_message_timestamp"] == timestamp_from_dt(first)
Beispiel #3
0
def test_update_thread_attrs(api_client):
    thread = api_client.threads.create()
    first = datetime(2017, 2, 3, 10, 0, 0)
    second = datetime(2016, 10, 5, 14, 30, 0)
    # timestamps and datetimes are handled totally separately
    thread.last_message_at = first
    thread.last_message_timestamp = timestamp_from_dt(second)
    assert thread.last_message_at == first
    assert thread.last_message_timestamp == timestamp_from_dt(second)
    # but datetimes overwrite timestamps when serializing to JSON
    assert thread.as_json()['last_message_timestamp'] == timestamp_from_dt(first)
Beispiel #4
0
def test_thread_attrs(api_client):
    thread = api_client.threads.first()
    expected_first = datetime(2016, 1, 2, 3, 4, 5)
    expected_last = datetime(2017, 1, 2, 3, 4, 5)
    expected_last_received = datetime(2017, 1, 2, 3, 4, 5)
    expected_last_sent = datetime(2017, 1, 1, 1, 1, 1)

    assert thread.first_message_timestamp == timestamp_from_dt(expected_first)
    assert thread.first_message_at == expected_first
    assert thread.last_message_timestamp == timestamp_from_dt(expected_last)
    assert thread.last_message_at == expected_last
    assert thread.last_message_received_timestamp == timestamp_from_dt(expected_last_received)
    assert thread.last_message_received_at == expected_last_received
    assert thread.last_message_sent_timestamp == timestamp_from_dt(expected_last_sent)
    assert thread.last_message_sent_at == expected_last_sent
Beispiel #5
0
def test_thread_attrs(api_client):
    thread = api_client.threads.first()
    expected_first = datetime(2016, 1, 2, 3, 4, 5)
    expected_last = datetime(2017, 1, 2, 3, 4, 5)
    expected_last_received = datetime(2017, 1, 2, 3, 4, 5)
    expected_last_sent = datetime(2017, 1, 1, 1, 1, 1)

    assert thread.first_message_timestamp == timestamp_from_dt(expected_first)
    assert thread.first_message_at == expected_first
    assert thread.last_message_timestamp == timestamp_from_dt(expected_last)
    assert thread.last_message_at == expected_last
    assert thread.last_message_received_timestamp == timestamp_from_dt(
        expected_last_received
    )
    assert thread.last_message_received_at == expected_last_received
    assert thread.last_message_sent_timestamp == timestamp_from_dt(expected_last_sent)
    assert thread.last_message_sent_at == expected_last_sent
 def as_json(self):
     dct = {}
     for attr in self.cls.attrs:
         if hasattr(self, attr):
             dct[attr] = getattr(self, attr)
     for dt_attr, ts_attr in self.cls.datetime_attrs.items():
         if self.get(dt_attr):
             dct[ts_attr] = timestamp_from_dt(self[dt_attr])
     return dct
Beispiel #7
0
 def free_busy(self, emails, start_at, end_at):
     if isinstance(emails, six.string_types):
         emails = [emails]
     if isinstance(start_at, datetime):
         start_time = timestamp_from_dt(start_at)
     else:
         start_time = start_at
     if isinstance(end_at, datetime):
         end_time = timestamp_from_dt(end_at)
     else:
         end_time = end_at
     url = "{api_server}/calendars/free-busy".format(api_server=self.api_server)
     data = {
         "emails": emails,
         "start_time": start_time,
         "end_time": end_time,
     }
     resp = self.session.post(url, json=data)
     _validate(resp)
     return resp.json()
Beispiel #8
0
 def as_json(self):
     dct = {}
     for attr in self.cls.attrs:
         if hasattr(self, attr):
             dct[attr] = getattr(self, attr)
     for date_attr, iso_attr in self.cls.date_attrs.items():
         if self.get(date_attr):
             dct[iso_attr] = self[date_attr].strftime("%Y-%m-%d")
     for dt_attr, ts_attr in self.cls.datetime_attrs.items():
         if self.get(dt_attr):
             dct[ts_attr] = timestamp_from_dt(self[dt_attr])
     for attr, value_attr in self.cls.typed_dict_attrs.items():
         typed_dict = getattr(self, attr)
         if value_attr:
             dct[attr] = []
             for key, values in typed_dict.items():
                 for value in values:
                     dct[attr].append({"type": key, value_attr: value})
         else:
             dct[attr] = []
             for values in typed_dict.values():
                 for value in values:
                     dct[attr].append(value)
     return dct
Beispiel #9
0
 def as_json(self):
     dct = {}
     for attr in self.cls.attrs:
         if hasattr(self, attr):
             dct[attr] = getattr(self, attr)
     for date_attr, iso_attr in self.cls.date_attrs.items():
         if self.get(date_attr):
             dct[iso_attr] = self[date_attr].strftime("%Y-%m-%d")
     for dt_attr, ts_attr in self.cls.datetime_attrs.items():
         if self.get(dt_attr):
             dct[ts_attr] = timestamp_from_dt(self[dt_attr])
     for attr, value_attr in self.cls.typed_dict_attrs.items():
         typed_dict = getattr(self, attr)
         if value_attr:
             dct[attr] = []
             for key, values in typed_dict.items():
                 for value in values:
                     dct[attr].append({"type": key, value_attr: value})
         else:
             dct[attr] = []
             for values in typed_dict.values():
                 for value in values:
                     dct[attr].append(value)
     return dct
def test_message_attrs(api_client):
    message = api_client.messages.first()
    expected_received = datetime(2010, 2, 2, 2, 22, 22)
    assert message.received_at == expected_received
    assert message.date == timestamp_from_dt(expected_received)
Beispiel #11
0
def test_message_attrs(api_client):
    message = api_client.messages.first()
    expected_received = datetime(2010, 2, 2, 2, 22, 22)
    assert message.received_at == expected_received
    assert message.date == timestamp_from_dt(expected_received)
Beispiel #12
0
def test_draft_attrs(api_client):
    draft = api_client.drafts.first()
    expected_modified = datetime(2015, 8, 4, 10, 34, 46)
    assert draft.last_modified_at == expected_modified
    assert draft.date == timestamp_from_dt(expected_modified)
Beispiel #13
0
def test_draft_attrs(api_client):
    draft = api_client.drafts.first()
    expected_modified = datetime(2015, 8, 4, 10, 34, 46)
    assert draft.last_modified_at == expected_modified
    assert draft.date == timestamp_from_dt(expected_modified)