From efe5989158ba46157bceacb1933359ff33ec48b4 Mon Sep 17 00:00:00 2001 From: Tim Wells Date: Fri, 31 Jul 2020 16:47:31 -0700 Subject: [PATCH 1/5] fix: #144 bumped missing property message to debug. --- smartsheet/sheets.py | 2 +- smartsheet/util.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/smartsheet/sheets.py b/smartsheet/sheets.py index 335127b3..6d7541f3 100644 --- a/smartsheet/sheets.py +++ b/smartsheet/sheets.py @@ -1213,7 +1213,7 @@ def update_update_request(self, sheet_id, update_request_id, update_request_obj) Returns: Result """ - _op = fresh_operation('create_update_request') + _op = fresh_operation('update_update_request') _op['method'] = 'PUT' _op['path'] = '/sheets/' + str(sheet_id) + '/updaterequests/' + str(update_request_id) _op['json'] = update_request_obj diff --git a/smartsheet/util.py b/smartsheet/util.py index d92ae0cd..be5d7541 100644 --- a/smartsheet/util.py +++ b/smartsheet/util.py @@ -130,7 +130,7 @@ def deserialize(obj, props): setattr(obj, key_, value) else: - _log.info('object \'%s\' is missing property \'%s\'', obj.__class__.__name__, key_) + _log.debug('object \'%s\' is missing property \'%s\'', obj.__class__.__name__, key_) def dump_message_headers(request): From b3a023fd7c2fce9983cfc3c6d833126c739f5988 Mon Sep 17 00:00:00 2001 From: Tim Wells Date: Mon, 31 Aug 2020 10:43:54 -0700 Subject: [PATCH 2/5] chg: add `rules` and `ruleRecipients` to create sheet from template inclusion --- smartsheet/home.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smartsheet/home.py b/smartsheet/home.py index 48812535..deac61ba 100644 --- a/smartsheet/home.py +++ b/smartsheet/home.py @@ -101,7 +101,7 @@ def create_sheet_from_template(self, sheet_obj, include=None): sheet_obj (Sheet): Sheet object. include (list[str]): A list of optional elements to include from the source Template. Valid list values: - data, attachments, discussions, cellLinks, forms. + attachments, cellLinks, data, discussions, forms, rules and ruleRecipients. Returns: Result From 609cfb71747273df581b61a8194a9b51e18e43cd Mon Sep 17 00:00:00 2001 From: charliemcco <43075071+charliemcco@users.noreply.github.com> Date: Tue, 22 Sep 2020 15:45:43 -0600 Subject: [PATCH 3/5] Adding rowsModifiedSince parameter to sheet.get_sheet --- smartsheet/sheets.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/smartsheet/sheets.py b/smartsheet/sheets.py index 6d7541f3..f431080f 100644 --- a/smartsheet/sheets.py +++ b/smartsheet/sheets.py @@ -470,7 +470,8 @@ def get_share(self, sheet_id, share_id): return response def get_sheet(self, sheet_id, include=None, exclude=None, row_ids=None, - row_numbers=None, column_ids=None, page_size=None, page=None, if_version_after=None, level=None): + row_numbers=None, column_ids=None, page_size=None, page=None, + if_version_after=None, level=None, rows_modified_since=None): """Get the specified Sheet. Get the specified Sheet. Returns the Sheet, including Rows, @@ -500,6 +501,7 @@ def get_sheet(self, sheet_id, include=None, exclude=None, row_ids=None, page (int): Which page to return. if_version_after (int): only fetch Sheet if more recent version available. + rows_modified_since: Date should be in ISO-8601 format, for example, rowsModifiedSince=2020-01-30T13:25:32-07:00. Returns: Sheet @@ -516,6 +518,7 @@ def get_sheet(self, sheet_id, include=None, exclude=None, row_ids=None, _op['query_params']['page'] = page _op['query_params']['ifVersionAfter'] = if_version_after _op['query_params']['level'] = level + _op['query_params']['rowsModifiedSince'] = rows_modified_since expected = 'Sheet' prepped_request = self._base.prepare_request(_op) From bfc59a4122c2fcbe9ba4280cade029b3816f60e3 Mon Sep 17 00:00:00 2001 From: Tim Wells Date: Wed, 7 Oct 2020 13:36:27 -0700 Subject: [PATCH 4/5] new: add column formulas --- smartsheet/models/column.py | 9 +++++++++ tests/integration/test_columns.py | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/smartsheet/models/column.py b/smartsheet/models/column.py index 8f150d06..e89c4a93 100644 --- a/smartsheet/models/column.py +++ b/smartsheet/models/column.py @@ -39,6 +39,7 @@ def __init__(self, props=None, base_obj=None): self._contact_options = TypedList(Contact) self._description = String() self._format_ = String() + self._formula = String() self._hidden = Boolean() self._id_ = Number() self._index = Number() @@ -114,6 +115,14 @@ def format_(self): def format_(self, value): self._format_.value = value + @property + def formula(self): + return self._formula.value + + @formula.setter + def formula(self, value): + self._formula.value = value + @property def hidden(self): return self._hidden.value diff --git a/tests/integration/test_columns.py b/tests/integration/test_columns.py index fe7e701e..f0a62ffe 100644 --- a/tests/integration/test_columns.py +++ b/tests/integration/test_columns.py @@ -71,3 +71,21 @@ def test_delete_column(self, smart_setup): col.id ) assert action.message == 'SUCCESS' + + def test_column_formulas(self, smart_setup): + smart = smart_setup['smart'] + action = smart_setup['sheet'].add_columns({ + 'title': 'Column Formula', + 'type': 'DATE', + 'index': 1, + 'formula': '=TODAY()' + }) + cols = action.result + assert action.message == 'SUCCESS' + assert cols[0].formula is not None + + action = smart.Sheets.update_column(smart_setup['sheet'].id, cols[0].id, + {'formula': ''}) + col = action.result + assert action.message == 'SUCCESS' + assert col.formula is None From 52c47e3ced4d89438a01950463a10d94223dde39 Mon Sep 17 00:00:00 2001 From: Tim Wells Date: Wed, 7 Oct 2020 13:43:57 -0700 Subject: [PATCH 5/5] add: add filterId to get_sheets --- smartsheet/sheets.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/smartsheet/sheets.py b/smartsheet/sheets.py index f431080f..0d0e67ea 100644 --- a/smartsheet/sheets.py +++ b/smartsheet/sheets.py @@ -471,7 +471,8 @@ def get_share(self, sheet_id, share_id): def get_sheet(self, sheet_id, include=None, exclude=None, row_ids=None, row_numbers=None, column_ids=None, page_size=None, page=None, - if_version_after=None, level=None, rows_modified_since=None): + if_version_after=None, level=None, rows_modified_since=None, + filter_id=None): """Get the specified Sheet. Get the specified Sheet. Returns the Sheet, including Rows, @@ -502,6 +503,8 @@ def get_sheet(self, sheet_id, include=None, exclude=None, row_ids=None, if_version_after (int): only fetch Sheet if more recent version available. rows_modified_since: Date should be in ISO-8601 format, for example, rowsModifiedSince=2020-01-30T13:25:32-07:00. + filter_id (int): Applies the given filter (if accessible by the calling user) + and marks the affected rows as "filteredOut": true Returns: Sheet @@ -519,6 +522,7 @@ def get_sheet(self, sheet_id, include=None, exclude=None, row_ids=None, _op['query_params']['ifVersionAfter'] = if_version_after _op['query_params']['level'] = level _op['query_params']['rowsModifiedSince'] = rows_modified_since + _op['query_params']['filterId'] = filter_id expected = 'Sheet' prepped_request = self._base.prepare_request(_op)