diff --git a/api/dao/containerstorage.py b/api/dao/containerstorage.py index 6cd2f119ea264d019a5a9788c517d0cc6eff6b12..e171bfac7068701404641d038b21fad5d77c9482 100644 --- a/api/dao/containerstorage.py +++ b/api/dao/containerstorage.py @@ -304,8 +304,8 @@ class SessionStorage(ContainerStorage): else: payload['subject']['_id'] = bson.ObjectId() - # Determine if we need to calc session compliance + # First check if project is being changed if payload and payload.get('project'): project = ProjectStorage().get_container(payload['project']) if not project: @@ -313,15 +313,11 @@ class SessionStorage(ContainerStorage): else: project = ProjectStorage().get_container(session['project']) + # Check if new (if project is changed) or current project has template payload_has_template = project.get('template', False) 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): - 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): session.update(payload) if project and project.get('template'): @@ -332,11 +328,7 @@ class SessionStorage(ContainerStorage): unset_payload = {} unset_payload['satisfies_template'] = "" unset_payload['project_has_template'] = "" - 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 and post_result.modified_count == 1: - return post_result - else: - return pre_result + return super(SessionStorage, self).update_el(_id, payload, unset_payload=unset_payload, recursive=recursive, r_payload=r_payload, replace_metadata=replace_metadata) def recalc_session_compliance(self, session_id, session=None, template=None, hard=False): """