src/modules/client/api.py
changeset 2205 53d0be594162
parent 2200 155eda704b2f
child 2207 029ca014fced
--- a/src/modules/client/api.py	Wed Feb 02 17:19:50 2011 -0800
+++ b/src/modules/client/api.py	Thu Feb 03 09:00:27 2011 -0800
@@ -394,9 +394,11 @@
 
                 if exc_type == apx.PlanCreationException:
                         self.__set_history_PlanCreationException(exc_value)
-
                 elif exc_type == apx.CanceledException:
                         self.__cancel_done()
+                elif exc_type == apx.ConflictingActionErrors:
+                        self.log_operation_end(error=str(exc_value),
+                            result=history.RESULT_CONFLICTING_ACTIONS)
                 elif not log_op_end or exc_type in log_op_end:
                         self.log_operation_end(error=exc_value)
 
@@ -413,7 +415,19 @@
                         # is supplied.
                         pass
 
+                # In the case of duplicate actions, we want to save off the plan
+                # description for display to the client (if they requested it),
+                # as once the solver's done its job, there's interesting
+                # information in the plan.  We have to save it here and restore
+                # it later because __reset_unlock() torches it.
+                if exc_type == apx.ConflictingActionErrors:
+                        plan_desc = PlanDescription(self.__img, self.__new_be)
+
                 self.__reset_unlock()
+
+                if exc_type == apx.ConflictingActionErrors:
+                        self.__plan_desc = plan_desc
+
                 self.__activity_lock.release()
                 raise