Skip to content

Commit

Permalink
Adding magic method __eq__ to all classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Alejandro Casanovas committed Nov 5, 2019
1 parent 9fc40f5 commit 3f9a699
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 6 deletions.
18 changes: 12 additions & 6 deletions O365/address_book.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,15 @@ def __init__(self, *, parent=None, con=None, **kwargs):
self.emails.add(user_principal_name)
self.__emails.untrack = False

def __str__(self):
return self.__repr__()

def __repr__(self):
return self.display_name or self.full_name or 'Unknown Name'

def __eq__(self, other):
return self.object_id == other.object_id

@property
def created(self):
""" Created Time
Expand Down Expand Up @@ -421,12 +430,6 @@ def folder_id(self):
"""
return self.__folder_id

def __str__(self):
return self.__repr__()

def __repr__(self):
return self.display_name or self.full_name or 'Unknown Name'

def to_api_data(self, restrict_keys=None):
""" Returns a dictionary in cloud format
Expand Down Expand Up @@ -644,6 +647,9 @@ def __str__(self):
def __repr__(self):
return 'Contact Folder: {}'.format(self.name)

def __eq__(self, other):
return self.folder_id == other.folder_id

def get_contacts(self, limit=100, *, query=None, order_by=None, batch=None):
""" Gets a list of contacts from this address book
Expand Down
6 changes: 6 additions & 0 deletions O365/calendar.py
Original file line number Diff line number Diff line change
Expand Up @@ -889,6 +889,9 @@ def __repr__(self):
return 'Subject: {} (starts: {} {} and ends: {} {})'.format(self.subject, self.start.date(), self.start.time(), self.end.date(),
self.end.time())

def __eq__(self, other):
return self.object_id == other.object_id

def to_api_data(self, restrict_keys=None):
""" Returns a dict to communicate with the server
Expand Down Expand Up @@ -1517,6 +1520,9 @@ def __str__(self):
def __repr__(self):
return 'Calendar: {} from {}'.format(self.name, self.owner)

def __eq__(self, other):
return self.calendar_id == other.calendar_id

@property
def owner(self):
""" Owner of the calendar
Expand Down
3 changes: 3 additions & 0 deletions O365/directory.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ def __str__(self):
def __repr__(self):
return self.display_name or self.full_name or self.user_principal_name or 'Unknown Name'

def __eq__(self, other):
return self.object_id == other.object_id

@property
def full_name(self):
""" Full Name (Name + Surname)
Expand Down
3 changes: 3 additions & 0 deletions O365/drive.py
Original file line number Diff line number Diff line change
Expand Up @@ -1320,6 +1320,9 @@ def __repr__(self):
return 'Drive: {}'.format(
self.name or self.object_id or 'Default Drive')

def __eq__(self, other):
return self.object_id == other.object_id

def get_root_folder(self):
""" Returns the Root Folder of this drive
Expand Down
22 changes: 22 additions & 0 deletions O365/excel.py
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,9 @@ def __str__(self):
def __repr__(self):
return 'Range address: {}'.format(self.address)

def __eq__(self, other):
return self.object_id == other.object_id

@property
def column_hidden(self):
return self._column_hidden
Expand Down Expand Up @@ -902,6 +905,9 @@ def __str__(self):
def __repr__(self):
return 'Named Range: {} ({})'.format(self.name, self.value)

def __eq__(self, other):
return self.object_id == other.object_id

def get_range(self):
""" Returns the Range instance this named range refers to """
url = self.build_url(self._endpoints.get('get_range'))
Expand Down Expand Up @@ -975,6 +981,9 @@ def __str__(self):
def __repr__(self):
return 'Row number: {}'.format(self.index)

def __eq__(self, other):
return self.object_id == other.object_id

def get_range(self):
""" Gets the range object associated with the entire row """
url = self.build_url(self._endpoints.get('get_range'))
Expand Down Expand Up @@ -1044,6 +1053,9 @@ def __str__(self):
def __repr__(self):
return 'Table Column: {}'.format(self.name)

def __eq__(self, other):
return self.object_id == other.object_id

def delete(self):
""" Deletes this table Column """
url = self.build_url(self._endpoints.get('delete'))
Expand Down Expand Up @@ -1186,6 +1198,9 @@ def __str__(self):
def __repr__(self):
return 'Table: {}'.format(self.name)

def __eq__(self, other):
return self.object_id == other.object_id

def get_columns(self, *, top=None, skip=None):
"""
Return the columns of this table
Expand Down Expand Up @@ -1508,6 +1523,9 @@ def __str__(self):
def __repr__(self):
return 'Worksheet: {}'.format(self.name)

def __eq__(self, other):
return self.object_id == other.object_id

def delete(self):
""" Deletes this worksheet """
return bool(self.session.delete(self.build_url('')))
Expand Down Expand Up @@ -1687,13 +1705,17 @@ def __init__(self, file_item, *, use_session=True, persist=True):
self.session.create_session()

self.name = file_item.name
self.object_id = 'Workbook:{}'.format(file_item.object_id) # Mangle the object id

def __str__(self):
return self.__repr__()

def __repr__(self):
return 'Workbook: {}'.format(self.name)

def __eq__(self, other):
return self.object_id == other.object_id

def get_tables(self):
""" Returns a collection of this workbook tables"""

Expand Down
5 changes: 5 additions & 0 deletions O365/mailbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,18 @@ def __init__(self, *, parent=None, con=None, **kwargs):
self.total_items_count = cloud_data.get(self._cc('totalItemCount'),
0)
self.updated_at = dt.datetime.now()
else:
self.folder_id = 'root'

def __str__(self):
return self.__repr__()

def __repr__(self):
return '{} from resource: {}'.format(self.name, self.main_resource)

def __eq__(self, other):
return self.folder_id == other.folder_id

def get_folders(self, limit=None, *, query=None, order_by=None, batch=None):
""" Returns a list of child folders matching the query
Expand Down
3 changes: 3 additions & 0 deletions O365/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,9 @@ def __str__(self):
def __repr__(self):
return 'Subject: {}'.format(self.subject)

def __eq__(self, other):
return self.object_id == other.object_id

@property
def is_read(self):
""" Check if the message is read or not
Expand Down
3 changes: 3 additions & 0 deletions O365/planner.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ def __str__(self):
def __repr__(self):
return 'Task: {}'.format(self.title)

def __eq__(self, other):
return self.object_id == other.object_id


class Planner(ApiComponent):
""" A microsoft planner class
Expand Down
12 changes: 12 additions & 0 deletions O365/sharepoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ def __init__(self, *, parent=None, con=None, **kwargs):
def __repr__(self):
return 'List Column: {0}-{1}'.format(self.display_name, self.field_type)

def __eq__(self, other):
return self.object_id == other.object_id


class SharepointListItem(ApiComponent):
_endpoints = {'update_list_item': '/items/{item_id}/fields',
Expand Down Expand Up @@ -119,6 +122,9 @@ def __init__(self, *, parent=None, con=None, **kwargs):
def __repr__(self):
return 'List Item: {}'.format(self.web_url)

def __eq__(self, other):
return self.object_id == other.object_id

def _clear_tracker(self):
self._track_changes = TrackerSet(casing=self._cc)

Expand Down Expand Up @@ -250,6 +256,9 @@ def __init__(self, *, parent=None, con=None, **kwargs):
self.column_name_cw = {col.display_name: col.internal_name for
col in self.get_list_columns() if not col.read_only}

def __eq__(self, other):
return self.object_id == other.object_id

def get_items(self, limit=None, *, query=None, order_by=None, batch=None):
""" Returns a collection of Sharepoint Items
:param int limit: max no. of items to get. Over 999 uses batch.
Expand Down Expand Up @@ -425,6 +434,9 @@ def __str__(self):
def __repr__(self):
return 'Site: {}'.format(self.name)

def __eq__(self, other):
return self.object_id == other.object_id

def get_default_document_library(self, request_drive=False):
""" Returns the default document library of this site (Drive instance)
Expand Down
3 changes: 3 additions & 0 deletions O365/utils/attachment.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,9 @@ def __len__(self):
""" Returns the size of this attachment """
return self.size

def __eq__(self, other):
return self.attachment_id == other.attachment_id

def to_api_data(self):
""" Returns a dict to communicate with the server
Expand Down

0 comments on commit 3f9a699

Please sign in to comment.