From 52fe08d279a9c0bdb99e2467b90a31f8b9b9b163 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Fri, 29 Jul 2016 09:17:09 +0000
Subject: [PATCH] SSDM-2732 : Separate orders space to avoid OBSERVERS to
 modify orders.

SVN: 36857
---
 .../1/as/webapps/eln-lims/html/js/config/Profile.js   |  3 ++-
 .../webapps/eln-lims/html/js/server/ServerFacade.js   | 11 ++++++++---
 .../html/js/views/SampleForm/SampleFormModel.js       |  2 +-
 .../html/js/views/SideMenu/SideMenuWidgetView.js      |  3 +++
 .../1/dss/reporting-plugins/eln-lims-api/script.py    |  5 +++--
 5 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
index 4dafd311289..1399305bb93 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
@@ -98,11 +98,12 @@ $.extend(DefaultProfile.prototype, {
 		
 		this.searchDomains = [ { "@id" : -1, "@type" : "GobalSearch", label : "Global", name : "global"}];
 		this.inventorySpaces = ["MATERIALS", "METHODS", "PURCHASES"];
+		this.inventorySpacesReadOnly = ["PURCHASES_ORDERS"];
 		this.sampleTypeProtocols = ["GENERAL_PROTOCOL", "PCR_PROTOCOL", "WESTERN_BLOTTING_PROTOCOL"];
 		this.searchSamplesUsingV3OnDropbox = false;
 		this.searchSamplesUsingV3OnDropboxRunCustom = false;
 		this.isInventorySpace = function(spaceCode) {
-			return ($.inArray(spaceCode, this.inventorySpaces) !== -1);
+			return ($.inArray(spaceCode, this.inventorySpaces) !== -1) || ($.inArray(spaceCode, this.inventorySpacesReadOnly) !== -1);
 		}
 		
 		this.directLinkEnabled = true;
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
index 0300c9a575f..95a1be54994 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
@@ -134,9 +134,9 @@ function ServerFacade(openbisServer) {
 	this.createELNUser = function(userId, callback) {
  		var _this = this;
  		var inventorySpacesToRegister = [];
- 		var inventorySpaceToRegisterFunc = function(spaceCode, callback) {
+ 		var inventorySpaceToRegisterFunc = function(spaceCode, userRole, callback) {
 			return function() {
-				_this.openbisServer.registerPersonSpaceRole(spaceCode, userId, "USER", function(data) {
+				_this.openbisServer.registerPersonSpaceRole(spaceCode, userId, userRole, function(data) {
 					if(data.error) {
 						callback(false, data.error.message);
 					} else {
@@ -165,7 +165,12 @@ function ServerFacade(openbisServer) {
 							} else {
 								for(var i = 0; i < profile.inventorySpaces.length; i++) {
 									var spaceCode = profile.inventorySpaces[i];
-									inventorySpacesToRegister.push(inventorySpaceToRegisterFunc(spaceCode, callback));
+									inventorySpacesToRegister.push(inventorySpaceToRegisterFunc(spaceCode, "USER", callback));
+								}
+								
+								for(var i = 0; i < profile.inventorySpacesReadOnly.length; i++) {
+									var spaceCode = profile.inventorySpacesReadOnly[i];
+									inventorySpacesToRegister.push(inventorySpaceToRegisterFunc(spaceCode, "OBSERVER", callback));
 								}
 								
 								var spaceToRegister = inventorySpacesToRegister.pop();
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js
index 0f6ae0a3a22..b475d1fac0c 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormModel.js
@@ -21,7 +21,7 @@ function SampleFormModel(mode, sample) {
 	
 	this.isFormDirty = false;
 	this.isFormLoaded = false;
-	this.isELNSample = profile.inventorySpaces.length > 0 && $.inArray(sample.spaceCode, profile.inventorySpaces) === -1;
+	this.isELNSample = !profile.isInventorySpace(sample.spaceCode);
 	
 	//
 	// TO-DO: Legacy code to be refactored
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SideMenu/SideMenuWidgetView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SideMenu/SideMenuWidgetView.js
index 7e6f6e623c2..e02392b8c4c 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SideMenu/SideMenuWidgetView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SideMenu/SideMenuWidgetView.js
@@ -299,6 +299,9 @@ function SideMenuWidgetView(sideMenuWidgetController, sideMenuWidgetModel) {
         	                    if(space.getCode() === "PURCHASES") {
         	                    	spaceNode.icon = "fa fa-shopping-cart";
         	                    }
+        	                    if(space.getCode() === "PURCHASES_ORDERS") {
+        	                    	spaceNode.icon = "fa fa-cart-plus";
+        	                    }
         	                    results.push(spaceNode);
         	                }
     	                }
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py
index 9782359ed4b..1d3c7ce3dbd 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/eln-lims-api/script.py
@@ -338,8 +338,9 @@ def init(tr, parameters, tableBuilder):
 			purchasesCollection = tr.createNewExperiment("/PURCHASES/REQUESTS/REQUEST_COLLECTION_1",		"PURCHASES");
 			purchasesCollection.setPropertyValue("NAME", "Request Collection 1");
 			
-			tr.createNewProject("/PURCHASES/ORDERS");
-			purchasesCollection = tr.createNewExperiment("/PURCHASES/ORDERS/ORDER_COLLECTION_1",			"PURCHASES");
+			tr.createNewSpace("PURCHASES_ORDERS", None);
+			tr.createNewProject("/PURCHASES_ORDERS/ORDERS");
+			purchasesCollection = tr.createNewExperiment("/PURCHASES_ORDERS/ORDERS/ORDER_COLLECTION_1",			"PURCHASES");
 			purchasesCollection.setPropertyValue("NAME", "Order Collection 1");
 			
 			tr.createNewSpace("MATERIALS", None);
-- 
GitLab