-----
- Expand support for `ExtendedProperty` to include all possible attributes. This required renaming the `property_id`
attribute to `property_set_id`.
- When using the `Credentials` class, `UnauthorizedError` is now raised if the credentials are wrong.
- Add a new `version` attribute to `Configuration`, to force the server version if version guessing does not work.
Accepts a
`exchangelib.version.Version` object.
- Rework bulk operations `Account.bulk_foo()` and `Account.fetch()` to return some exceptions unraised, if it is deemed
the exception does not apply to all items. This means that e.g. `fetch()` can return a mix of `` `Item ``
and `ErrorItemNotFound` instances, if only some of the requested `ItemId` were valid. Other exceptions will be raised
immediately, e.g. `ErrorNonExistentMailbox` because the exception applies to all items. It is the responsibility of
the caller to check the type of the returned values.
- The `Folder` class has new attributes `total_count`, `unread_count`
and `child_folder_count`, and a `refresh()` method to update these values.
- The argument to `Account.upload()` was renamed from `upload_data` to just `data`
- Support for using a string search expression for `Folder.filter()`
was removed. It was a cool idea but using QuerySet chaining and `Q`
objects is even cooler and provides the same functionality, and more.
- Add support for `reminder_due_by` and
`reminder_minutes_before_start` fields on `Item` objects. Submitted by `vikipha`.
- Added a new `ServiceAccount` class which is like `Credentials` but does what `is_service_account` did before. If you
need fault-tolerane and used `Credentials(..., is_service_account=True)`
before, use `ServiceAccount` now. This also disables fault-tolerance for the `Credentials` class, which is in line
with what most users expected.
- Added an optional `update_fields` attribute to `save()` to specify only some fields to be updated.
- Code in in `folders.py` has been split into multiple files, and some classes will have new import locaions. The most
commonly used classes have a shortcut in \_\_init\_\_.py
- Added support for the `exists` lookup in filters, e.g.
`my_folder.filter(categories__exists=True|False)` to filter on the existence of that field on items in the folder.
- When filtering, `foo__in=value` now requires the value to be a list, and `foo__contains` requires the value to be a
list if the field itself is a list, e.g. `categories__contains=['a', 'b']`.
- Added support for fields and enum entries that are only supported in some EWS versions
- Added a new field `Item.text_body` which is a read-only version of HTML body content, where HTML tags are stripped by
the server. Only supported from Exchange 2013 and up.
- Added a new choice `WorkingElsewhere` to the
`CalendarItem.legacy_free_busy_status` enum. Only supported from Exchange 2013 and up.