def complete_task_on_list_explain(self, task_name, list_name, list_best_match=None): task_best_match = self.find_task_on_list_explain( task_name, list_name, list_best_match=list_best_match, speak_level=1) if not task_best_match.name: return False if task_name != task_best_match.name: response = self.get_response('DoYouWantToCompleteIt', num_retries=0) if not response or response not in self.yes_keyword: self.speak_dialog('NoConfirm') return True if not self.get_timeline(): return False c = {"dialog": "CompleteTaskOnListUndo", "dialogParam": { TASK_PARAMETER: task_best_match.name, LIST_PARAMETER: task_best_match.list_best_match.name}, 'transaction_id': []} for t in task_best_match.task_list: transaction_id, error_text, error_code = cow_rest.complete_task( t['task_id'], t['taskseries_id'], task_best_match.list_best_match.id) if error_text: self.speak_dialog('RestResponseError', {ERROR_TEXT_PARAMETER: error_text, ERROR_CODE_PARAMETER: error_code}) # RECOVER return False c['transaction_id'].append(transaction_id) if len(task_best_match.task_list) == 1: self.speak_dialog("CompleteTaskOnList", { TASK_PARAMETER: task_best_match.name, LIST_PARAMETER: task_best_match.list_best_match.name}) else: self.speak_dialog("CompleteManyTasksOnList", { NOF_TASK_PARAMETER: str(len(task_best_match.task_list)), TASK_PARAMETER: task_best_match.name, LIST_PARAMETER: task_best_match.list_best_match.name}) self.set_context(UNDO_CONTEXT, json.dumps(c)) return True
def complete_list_explain(self, list_name, list_best_match=None): if not list_best_match: list_best_match = self.find_list_explain(list_name) if not list_best_match.id or list_best_match.error_text: return task_list, error_code, error_text = cow_rest.list_task( 'status:incomplete', list_best_match.id) if error_text: self.speak_dialog('RestResponseError', {ERROR_TEXT_PARAMETER: error_text, ERROR_CODE_PARAMETER: error_code}) return flat_task_list = cow_rest.flat_task_list(task_list) if len(flat_task_list) == 0: self.speak_dialog("NoTaskOnList", {LIST_PARAMETER: list_best_match.name}) return nof_tasks_to_complete = len(flat_task_list) if nof_tasks_to_complete > MAX_TASK_COMPLETE: nof_tasks_to_complete = MAX_TASK_COMPLETE self.speak_dialog('CompletePartOfListStart', { NOF_TASK_PARAMETER: str(len(flat_task_list))}) if nof_tasks_to_complete > 10: self.speak_dialog('CompleteListStart', {NOF_TASK_PARAMETER: nof_tasks_to_complete, LIST_PARAMETER: list_best_match.name}) if not self.get_timeline(): return c = { "dialog": ("CompleteListOneTaskUndo" if nof_tasks_to_complete == 1 else "CompleteListUndo"), "dialogParam": {NOF_TASK_PARAMETER: nof_tasks_to_complete, LIST_PARAMETER: list_best_match.name}, 'transaction_id': []} i = nof_tasks_to_complete for t in flat_task_list: transaction_id, error_text, error_code = cow_rest.complete_task( t['task_id'], t['taskseries_id'], list_best_match.id) if error_text: self.speak_dialog('RestResponseError', {ERROR_TEXT_PARAMETER: error_text, ERROR_CODE_PARAMETER: error_code}) # RECOVER return c['transaction_id'].append(transaction_id) i = i - 1 if i < 1: break self.speak_dialog( ("CompleteListOneTask" if nof_tasks_to_complete == 1 else "CompleteList"), {LIST_PARAMETER: list_best_match.name, NOF_TASK_PARAMETER: nof_tasks_to_complete}) self.set_context(UNDO_CONTEXT, json.dumps(c))
def test_add_remove_item_to_list(self): task_name = "Cows Lists test item: " + str(uuid.uuid1()) print "Working on item:" + task_name cow_rest.get_token(cow_rest) self.assertNotEqual(cow_rest.auth_token, None) error_text, error_code = cow_rest.verify_token_validity() self.assertEqual(error_text, None) error_text, error_code = cow_rest.get_timeline(cow_rest) self.assertEqual(error_text, None) self.assertNotEqual(cow_rest.timeline, None) # Get all lists list_result, error_text, error_code = cow_rest.get_list() self.assertEqual(error_text, None) list_id = filter(lambda x: str(x['name']).lower() == "inbox", list_result)[0]['id'] # add an item taskseries_id, task_id, error_text, error_code = cow_rest.add_task( task_name, list_id) self.assertEqual(error_text, None) self.assertNotEqual(task_id, None) # check item was added task_list, error_code, error_text = cow_rest.list_task( "status:incomplete", list_id) self.assertEqual(error_text, None) task_match = cow_rest.find_task_id(task_list, taskseries_id, task_id) self.assertNotEqual(task_match, None) # assuming RTM make unique tasks # check flat list flat_task_list = cow_rest.flat_task_list(task_list) self.assertTrue( len( filter( lambda x: x['task_name'] == task_name and x[ 'taskseries_id'] == taskseries_id and x['task_id'] == task_id, flat_task_list)) > 0) # mark task as complete transaction_id, error_text, error_code = cow_rest.complete_task( task_id, taskseries_id, list_id) self.assertEqual(error_text, None) self.assertNotEqual(transaction_id, None) # check item is completed task_list, error_code, error_text = cow_rest.list_task( "status:completed", list_id) self.assertEqual(error_text, None) task_match = cow_rest.find_task_id(task_list, taskseries_id, task_id) self.assertNotEqual(task_match, None) # assuming RTM make unique tasks # roll back error_text, error_code = cow_rest.roll_back(str(transaction_id)) self.assertEqual(error_text, None) # check item was set back to incomplete task_list, error_code, error_text = cow_rest.list_task( "status:incomplete", list_id) self.assertEqual(error_text, None) task_match = cow_rest.find_task_id(task_list, taskseries_id, task_id) self.assertNotEqual(task_match, None) # assuming RTM make unique tasks # delete the item transaction_id, error_text, error_code = cow_rest.delete_task( task_id, taskseries_id, list_id) self.assertEqual(error_text, None) self.assertNotEqual(transaction_id, None) # check item was deleted task_list, error_code, error_text = cow_rest.list_task( "status:incomplete", list_id) self.assertEqual(error_text, None) task_match = cow_rest.find_task_id(task_list, taskseries_id, task_id) self.assertEqual(task_match, None) # assuming RTM make unique tasks