From 5c1c7c93a142608b3c3ed6dadd5df6eeab51584b Mon Sep 17 00:00:00 2001
From: Harsha Kethineni <harshakethineni@flywheel.io>
Date: Thu, 15 Jun 2017 10:25:47 -0500
Subject: [PATCH] session update, then check compliance, then update

---
 api/dao/containerstorage.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/api/dao/containerstorage.py b/api/dao/containerstorage.py
index 527dfeae..07f9b07a 100644
--- a/api/dao/containerstorage.py
+++ b/api/dao/containerstorage.py
@@ -308,12 +308,19 @@ class SessionStorage(ContainerStorage):
         payload_has_template = (payload and payload.get('project_has_template'))
         session_has_template = session.get('project_has_template') is not None
         unset_payload_has_template = (unset_payload and 'project_has_template'in unset_payload)
-
+        if payload_has_template or (session_has_template and not unset_payload_has_template):
+            project = ProjectStorage().get_container(session['project'])
+            session.update(payload)
+        pre_result = super(SessionStorage, self).update_el(_id, payload, unset_payload=unset_payload, recursive=recursive, r_payload=r_payload, replace_metadata=replace_metadata)
         if payload_has_template or (session_has_template and not unset_payload_has_template):
             project = ProjectStorage().get_container(session['project'])
             session.update(payload)
             payload['satisfies_template'] = hierarchy.is_session_compliant(session, project.get('template'))
-        return super(SessionStorage, self).update_el(_id, payload, unset_payload=unset_payload, recursive=recursive, r_payload=r_payload, replace_metadata=replace_metadata)
+        post_result = super(SessionStorage, self).update_el(_id, payload, unset_payload=unset_payload, recursive=recursive, r_payload=r_payload, replace_metadata=replace_metadata)
+        if(post_result.modified_count == 1):
+            return post_result
+        else:
+            return pre_result
 
     def recalc_session_compliance(self, session_id, session=None, template=None, hard=False):
         """
-- 
GitLab