exchangelib.services.delete_item API documentation

# Module `exchangelib.services.delete_item`

Expand source code

    from collections import OrderedDict

    from .common import EWSAccountService, create_item_ids_element
    from ..util import create_element
    from ..version import EXCHANGE_2013_SP1

    class DeleteItem(EWSAccountService):
        """Take a folder and a list of (id, changekey) tuples. Return result of deletion as a list of tuples
        (success[True|False], errormessage), in the same order as the input list.

        MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/deleteitem-operation
        """

        SERVICE_NAME = 'DeleteItem'
        returns_elements = False

        def call(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences, suppress_read_receipts):
            from ..items import DELETE_TYPE_CHOICES, SEND_MEETING_CANCELLATIONS_CHOICES, AFFECTED_TASK_OCCURRENCES_CHOICES
            if delete_type not in DELETE_TYPE_CHOICES:
                raise ValueError("'delete_type' %s must be one of %s" % (
                    delete_type, DELETE_TYPE_CHOICES
                ))
            if send_meeting_cancellations not in SEND_MEETING_CANCELLATIONS_CHOICES:
                raise ValueError("'send_meeting_cancellations' %s must be one of %s" % (
                    send_meeting_cancellations, SEND_MEETING_CANCELLATIONS_CHOICES
                ))
            if affected_task_occurrences not in AFFECTED_TASK_OCCURRENCES_CHOICES:
                raise ValueError("'affected_task_occurrences' %s must be one of %s" % (
                    affected_task_occurrences, AFFECTED_TASK_OCCURRENCES_CHOICES
                ))
            if suppress_read_receipts not in (True, False):
                raise ValueError("'suppress_read_receipts' %s must be True or False" % suppress_read_receipts)
            return self._chunked_get_elements(
                self.get_payload,
                items=items,
                delete_type=delete_type,
                send_meeting_cancellations=send_meeting_cancellations,
                affected_task_occurrences=affected_task_occurrences,
                suppress_read_receipts=suppress_read_receipts,
            )

        def get_payload(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences,
                        suppress_read_receipts):
            # Takes a list of (id, changekey) tuples or Item objects and returns the XML for a DeleteItem request.
            if self.account.version.build >= EXCHANGE_2013_SP1:
                deleteitem = create_element(
                    'm:%s' % self.SERVICE_NAME,
                    attrs=OrderedDict([
                        ('DeleteType', delete_type),
                        ('SendMeetingCancellations', send_meeting_cancellations),
                        ('AffectedTaskOccurrences', affected_task_occurrences),
                        ('SuppressReadReceipts', 'true' if suppress_read_receipts else 'false'),
                    ])
                )
            else:
                deleteitem = create_element(
                    'm:%s' % self.SERVICE_NAME,
                    attrs=OrderedDict([
                        ('DeleteType', delete_type),
                        ('SendMeetingCancellations', send_meeting_cancellations),
                        ('AffectedTaskOccurrences', affected_task_occurrences),
                     ])
                )

            item_ids = create_item_ids_element(items=items, version=self.account.version)
            deleteitem.append(item_ids)
            return deleteitem

## Classes

`class DeleteItem (*args, **kwargs)`

  Take a folder and a list of (id, changekey) tuples. Return result of deletion as a list of tuples (success[True|False], errormessage), in the same order as the input list.

  MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/deleteitem-operation

  Expand source code

      class DeleteItem(EWSAccountService):
          """Take a folder and a list of (id, changekey) tuples. Return result of deletion as a list of tuples
          (success[True|False], errormessage), in the same order as the input list.

          MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/deleteitem-operation
          """

          SERVICE_NAME = 'DeleteItem'
          returns_elements = False

          def call(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences, suppress_read_receipts):
              from ..items import DELETE_TYPE_CHOICES, SEND_MEETING_CANCELLATIONS_CHOICES, AFFECTED_TASK_OCCURRENCES_CHOICES
              if delete_type not in DELETE_TYPE_CHOICES:
                  raise ValueError("'delete_type' %s must be one of %s" % (
                      delete_type, DELETE_TYPE_CHOICES
                  ))
              if send_meeting_cancellations not in SEND_MEETING_CANCELLATIONS_CHOICES:
                  raise ValueError("'send_meeting_cancellations' %s must be one of %s" % (
                      send_meeting_cancellations, SEND_MEETING_CANCELLATIONS_CHOICES
                  ))
              if affected_task_occurrences not in AFFECTED_TASK_OCCURRENCES_CHOICES:
                  raise ValueError("'affected_task_occurrences' %s must be one of %s" % (
                      affected_task_occurrences, AFFECTED_TASK_OCCURRENCES_CHOICES
                  ))
              if suppress_read_receipts not in (True, False):
                  raise ValueError("'suppress_read_receipts' %s must be True or False" % suppress_read_receipts)
              return self._chunked_get_elements(
                  self.get_payload,
                  items=items,
                  delete_type=delete_type,
                  send_meeting_cancellations=send_meeting_cancellations,
                  affected_task_occurrences=affected_task_occurrences,
                  suppress_read_receipts=suppress_read_receipts,
              )

          def get_payload(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences,
                          suppress_read_receipts):
              # Takes a list of (id, changekey) tuples or Item objects and returns the XML for a DeleteItem request.
              if self.account.version.build >= EXCHANGE_2013_SP1:
                  deleteitem = create_element(
                      'm:%s' % self.SERVICE_NAME,
                      attrs=OrderedDict([
                          ('DeleteType', delete_type),
                          ('SendMeetingCancellations', send_meeting_cancellations),
                          ('AffectedTaskOccurrences', affected_task_occurrences),
                          ('SuppressReadReceipts', 'true' if suppress_read_receipts else 'false'),
                      ])
                  )
              else:
                  deleteitem = create_element(
                      'm:%s' % self.SERVICE_NAME,
                      attrs=OrderedDict([
                          ('DeleteType', delete_type),
                          ('SendMeetingCancellations', send_meeting_cancellations),
                          ('AffectedTaskOccurrences', affected_task_occurrences),
                       ])
                  )

              item_ids = create_item_ids_element(items=items, version=self.account.version)
              deleteitem.append(item_ids)
              return deleteitem

  ### Ancestors

  - EWSAccountService
  - EWSService

  ### Class variables

  `var SERVICE_NAME`
  `var returns_elements`

  ### Methods

  `def call(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences, suppress_read_receipts)`
    Expand source code

        def call(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences, suppress_read_receipts):
            from ..items import DELETE_TYPE_CHOICES, SEND_MEETING_CANCELLATIONS_CHOICES, AFFECTED_TASK_OCCURRENCES_CHOICES
            if delete_type not in DELETE_TYPE_CHOICES:
                raise ValueError("'delete_type' %s must be one of %s" % (
                    delete_type, DELETE_TYPE_CHOICES
                ))
            if send_meeting_cancellations not in SEND_MEETING_CANCELLATIONS_CHOICES:
                raise ValueError("'send_meeting_cancellations' %s must be one of %s" % (
                    send_meeting_cancellations, SEND_MEETING_CANCELLATIONS_CHOICES
                ))
            if affected_task_occurrences not in AFFECTED_TASK_OCCURRENCES_CHOICES:
                raise ValueError("'affected_task_occurrences' %s must be one of %s" % (
                    affected_task_occurrences, AFFECTED_TASK_OCCURRENCES_CHOICES
                ))
            if suppress_read_receipts not in (True, False):
                raise ValueError("'suppress_read_receipts' %s must be True or False" % suppress_read_receipts)
            return self._chunked_get_elements(
                self.get_payload,
                items=items,
                delete_type=delete_type,
                send_meeting_cancellations=send_meeting_cancellations,
                affected_task_occurrences=affected_task_occurrences,
                suppress_read_receipts=suppress_read_receipts,
            )

  `def get_payload(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences, suppress_read_receipts)`
    Expand source code

        def get_payload(self, items, delete_type, send_meeting_cancellations, affected_task_occurrences,
                        suppress_read_receipts):
            # Takes a list of (id, changekey) tuples or Item objects and returns the XML for a DeleteItem request.
            if self.account.version.build >= EXCHANGE_2013_SP1:
                deleteitem = create_element(
                    'm:%s' % self.SERVICE_NAME,
                    attrs=OrderedDict([
                        ('DeleteType', delete_type),
                        ('SendMeetingCancellations', send_meeting_cancellations),
                        ('AffectedTaskOccurrences', affected_task_occurrences),
                        ('SuppressReadReceipts', 'true' if suppress_read_receipts else 'false'),
                    ])
                )
            else:
                deleteitem = create_element(
                    'm:%s' % self.SERVICE_NAME,
                    attrs=OrderedDict([
                        ('DeleteType', delete_type),
                        ('SendMeetingCancellations', send_meeting_cancellations),
                        ('AffectedTaskOccurrences', affected_task_occurrences),
                     ])
                )

            item_ids = create_item_ids_element(items=items, version=self.account.version)
            deleteitem.append(item_ids)
            return deleteitem

  ### Inherited members

  - `EWSAccountService`:
    - `NO_VALID_SERVER_VERSIONS`
    - `WARNINGS_TO_CATCH_IN_RESPONSE`
    - `get`
    - `parse`