Commit e204154c authored by rheafernandes's avatar rheafernandes
Browse files

Added changes to handle visibility Public only

parent e8e30675
schema-updates 3.9.0-prod-fix 4.1.0_fixes AmiableAnil-patch-1 Gcloud_copy Gcloud_fix Remove_unwantedCode_Gcloud_fix actors-test bulk-upload-comptenecy-mapping bulk-upload-excelsheet bulk-upload-test_excel bulk_upload code-cleanup csp-migration dependabot/maven/platform-core/platform-telemetry/ch.qos.logback-logback-core-1.2.9 dependabot/maven/search-api/search-core/org.apache.httpcomponents-httpclient-4.5.13 knowlg-friday knowlg-oneclick local-setup-fix local-setup-kube m-4.2.0 master master-data org-target-enhancement patch-1 patch-2 patch-3 poc_bulk_upload qs-schema rahul_bulk_upload_postgres release-3.6.0 release-3.6.0.1 release-3.7.0 release-3.8.0 release-3.9.0 release-4.0.0 release-4.1.0 release-4.10.0 release-4.10.1 release-4.2.0 release-4.3.0 release-4.4.0 release-4.5.0 release-4.6.0 release-4.7.0 release-4.7.0-debug release-4.8.0 release-4.8.0-debug release-4.9.0 release-4.9.1 release-5.0.0 release-5.0.1 release-5.1.0 release-5.1.0-content release-5.2.0 release-5.3.0 revert-718-visiblity-private-api revert-719-assessment-private-read-api revert-720-visiblity-public-search-api revert-721-visiblity-private-search-api review-4.1.0 s-debug schema-update-4.0 release-5.2.0_RC2 release-5.2.0_RC1 release-5.1.0_RC1 release-5.0.0_RC2 release-5.0.0_RC1 release-4.10.0_RC2 release-4.10.0_RC1 release-4.9.1_RC1 release-4.9.0_RC8 release-4.9.0_RC7 release-4.9.0_RC6 release-4.9.0_RC5 release-4.9.0_RC4 release-4.9.0_RC3 release-4.9.0_RC2 release-4.9.0_RC1 release-4.8.0_RC5 release-4.8.0_RC4 release-4.8.0_RC3 release-4.8.0_RC2 release-4.8.0_RC1 release-4.7.0_RC6 release-4.7.0_RC5 release-4.7.0_RC4 release-4.7.0_RC3 release-4.7.0_RC2 release-4.7.0_RC1 release-4.6.0_RC2 release-4.6.0_RC1 release-4.5.0_RC2 release-4.5.0_RC1 release-4.4.0_RC6 release-4.4.0_RC5 release-4.4.0_RC4 release-4.4.0_RC3 release-4.4.0_RC2 release-4.4.0_RC1 release-4.3.0_RC10 release-4.3.0_RC9 release-4.3.0_RC8 release-4.3.0_RC7 release-4.3.0_RC6 release-4.3.0_RC5 release-4.3.0_RC4 release-4.3.0_RC3 release-4.3.0_RC2 release-4.3.0_RC1 release-4.2.0_RC13 release-4.2.0_RC12 release-4.2.0_RC11 release-4.2.0_RC10 release-4.2.0_RC9 release-4.2.0_RC8 release-4.2.0_RC7 release-4.2.0_RC6 release-4.2.0_RC5 release-4.2.0_RC4 release-4.2.0_RC3 release-4.2.0_RC2 release-4.2.0_RC1 release-4.1.0_RC13 release-4.1.0_RC12 release-4.1.0_RC11 release-4.1.0_RC10 release-4.1.0_RC9 release-4.1.0_RC8 release-4.1.0_RC7 release-4.1.0_RC6 release-4.1.0_RC5 release-4.1.0_RC4 release-4.1.0_RC3 release-4.1.0_RC2 release-4.1.0_RC1 release-4.0.0_RC9 release-4.0.0_RC8 release-4.0.0_RC7 release-4.0.0_RC6 release-4.0.0_RC5 release-4.0.0_RC4 release-4.0.0_RC3 release-4.0.0_RC2 release-4.0.0_RC1 release-3.9.0_RC12 release-3.9.0_RC11 release-3.9.0_RC10 release-3.9.0_RC9 release-3.9.0_RC8 release-3.9.0_RC7 release-3.9.0_RC6 release-3.9.0_RC5 release-3.9.0_RC4 release-3.9.0_RC3 release-3.9.0_RC2 release-3.9.0_RC1 release-3.8.0_RC9 release-3.8.0_RC8 release-3.8.0_RC7 release-3.8.0_RC6 release-3.8.0_RC5 release-3.8.0_RC4 release-3.8.0_RC3 release-3.8.0_RC2 release-3.8.0_RC1 release-3.7.0_RC1 release-3.6.0_RC5 release-3.6.0_RC4 release-3.6.0_RC3
No related merge requests found
Showing with 51 additions and 28 deletions
+51 -28
......@@ -12,6 +12,7 @@ import org.sunbird.graph.OntologyEngineContext
import org.sunbird.graph.nodes.DataNode
import org.sunbird.graph.utils.NodeUtil
import org.sunbird.managers.QuestionManager
import org.sunbird.utils.RequestUtil
import scala.collection.JavaConverters
import scala.concurrent.{ExecutionContext, Future}
......@@ -37,11 +38,12 @@ class QuestionActor @Inject()(implicit oec: OntologyEngineContext) extends BaseA
if (StringUtils.isBlank(visibility))
throw new ClientException("ERR_QUESTION_CREATE", "Visibility is a mandatory parameter")
visibility match {
case "Parent" => if (!request.getRequest.containsKey("parent"))
throw new ClientException("ERR_QUESTION_CREATE", "For visibility Parent, parent id is mandatory") else
request.getRequest.put("questionSet", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
//TODO: Enable support in future
// case "Parent" => if (!request.getRequest.containsKey("parent"))
// throw new ClientException("ERR_QUESTION_CREATE", "For visibility Parent, parent id is mandatory") else
// request.getRequest.put("questionSet", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
case "Public" => if (request.getRequest.containsKey("parent")) throw new ClientException("ERR_QUESTION_CREATE", "For visibility Public, question can't have parent id")
case _ => throw new ClientException("ERR_QUESTION_CREATE", "Visibility should be one of [\"Parent\", \"Public\"]")
case _ => throw new ClientException("ERR_QUESTION_CREATE", "Visibility should be one of [\"Public\"]")
}
DataNode.create(request).map(node => {
val response = ResponseHandler.OK
......@@ -63,16 +65,20 @@ class QuestionActor @Inject()(implicit oec: OntologyEngineContext) extends BaseA
}
def update(request: Request): Future[Response] = {
RequestUtil.restrictProperties(request)
request.getRequest.put("identifier", request.getContext.get("identifier"))
DataNode.read(request).flatMap(node => {
request.getRequest.getOrDefault("visibility", "") match {
case "Public" => request.put("parent", null)
case "Parent" => if (!node.getMetadata.containsKey("parent") || !request.getRequest.containsKey("parent"))
throw new ClientException("ERR_QUESTION_CREATE_FAILED", "For visibility Parent, parent id is mandatory")
if(node.getMetadata.containsKey("questionSet")) throw new ClientException("ERR_QUESTION_CREATE_FAILED", "For visibility Parent, cannot pass questionSet metadata")
else request.getRequest.put("questionSet", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
case _ => request
}
//TODO: Remove commented when required
// request.getRequest.getOrDefault("visibility", "") match {
// case "Public" => request.put("parent", null)
// case "Parent" => {
// if (!node.getMetadata.containsKey("parent") || !request.getRequest.containsKey("parent"))
// throw new ClientException("ERR_QUESTION_CREATE_FAILED", "For visibility Parent, parent id is mandatory")
// if(request.getRequest.containsKey("questionSet"))
// throw new ClientException("ERR_QUESTION_CREATE_FAILED", "For visibility Parent, cannot pass questionSet metadata")
// else request.getRequest.put("questionSet", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)}
// case _ => request
// }
DataNode.update(request).map(node => {
val response: Response = ResponseHandler.OK
response.putAll(Map("identifier" -> node.getIdentifier.replace(".img", ""), "versionKey" -> node.getMetadata.get("versionKey")).asJava)
......
......@@ -14,7 +14,7 @@ import org.sunbird.graph.dac.model.Relation
import org.sunbird.graph.nodes.DataNode
import org.sunbird.graph.utils.NodeUtil
import org.sunbird.managers.QuestionManager
import org.sunbird.utils.RequestUtil
import org.sunbird.utils.{RequestUtil}
import scala.collection.JavaConverters
import scala.collection.JavaConverters._
......@@ -45,11 +45,11 @@ class QuestionSetActor @Inject() (implicit oec: OntologyEngineContext) extends B
if (StringUtils.isBlank(visibility))
throw new ClientException("ERR_QUESTION_SET_CREATE", "Visibility is a mandatory parameter")
visibility match {
case "Parent" => if (!request.getRequest.containsKey("parent"))
throw new ClientException("ERR_QUESTION_SET_CREATE", "For visibility Parent, parent id is mandatory") else
request.getRequest.put("parent", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
// case "Parent" => if (!request.getRequest.containsKey("parent"))
// throw new ClientException("ERR_QUESTION_SET_CREATE", "For visibility Parent, parent id is mandatory") else
// request.getRequest.put("parent", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
case "Public" => if (request.getRequest.containsKey("parent")) throw new ClientException("ERR_QUESTION_SET_CREATE", "For visibility Public, question can't have parent id")
case _ => throw new ClientException("ERR_QUESTION_SET_CREATE", "Visibility should be one of [\"Parent\", \"Public\"]")
case _ => throw new ClientException("ERR_QUESTION_SET_CREATE", "Visibility should be one of [\"Public\"]")
}
DataNode.create(request).map(node => {
val response = ResponseHandler.OK
......@@ -73,14 +73,15 @@ class QuestionSetActor @Inject() (implicit oec: OntologyEngineContext) extends B
def update(request: Request): Future[Response] = {
RequestUtil.restrictProperties(request)
request.getRequest.put("identifier", request.getContext.get("identifier"))
DataNode.read(request).flatMap(node => {
request.getRequest.getOrDefault("visibility", "") match {
case "Public" => request.put("parent", null)
case "Parent" => if (!node.getMetadata.containsKey("parent") || !request.getRequest.containsKey("parent"))
throw new ClientException("ERR_QUESTION_CREATE_FAILED", "For visibility Parent, parent id is mandatory")
else request.getRequest.put("parent", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
case _ => request
}
//TODO: Remove commented when required
DataNode.read(request).flatMap(node => {
// request.getRequest.getOrDefault("visibility", "") match {
// case "Public" => request.put("parent", null)
// case "Parent" => if (!node.getMetadata.containsKey("parent") || !request.getRequest.containsKey("parent"))
// throw new ClientException("ERR_QUESTION_CREATE_FAILED", "For visibility Parent, parent id is mandatory")
// else request.getRequest.put("parent", List[java.util.Map[String, AnyRef]](Map("identifier" -> request.get("parent")).asJava).asJava)
// case _ => request
// }
DataNode.update(request).map(node => {
val response: Response = ResponseHandler.OK
response.putAll(Map("identifier" -> node.getIdentifier.replace(".img", ""), "versionKey" -> node.getMetadata.get("versionKey")).asJava)
......@@ -184,6 +185,7 @@ class QuestionSetActor @Inject() (implicit oec: OntologyEngineContext) extends B
}
def updateHierarchy(request: Request): Future[Response] = {
Future(ResponseHandler.OK())
}
......@@ -191,5 +193,13 @@ class QuestionSetActor @Inject() (implicit oec: OntologyEngineContext) extends B
Future(ResponseHandler.OK())
}
// def processUpdateHierarchyRequest(request: Request): (String, Map[String,AnyRef], Map[String, AnyRef]) = {
// val nodesModified: Map[String, AnyRef] = request.getRequest.get("nodesModifier").asInstanceOf[util.Map[String, AnyRef]].asScala.toMap
// val hierarchy:Map[String, AnyRef] = request.getRequest.get("hierarchy").asInstanceOf[util.Map[String, AnyRef]].asScala.toMap
// if (StringUtils.isEmpty(rootId) && StringUtils.isAllBlank(rootId) || StringUtils.contains(rootId, ".img"))
// throw new ClientException("ERR_INVALID_ROOT_ID", "Please Provide Valid Root Node Identifier")
// (rootId, nodesModified, hierarchy)
// }
}
......@@ -29,7 +29,7 @@ class QuestionController @Inject()(@Named(ActorNames.QUESTION_ACTOR) questionAct
val headers = commonHeaders()
val question = new java.util.HashMap().asInstanceOf[java.util.Map[String, Object]]
question.putAll(headers)
question.putAll(Map("identifier" -> identifier, "fields" -> fields.getOrElse(""), "mode" -> mode).asJava)
question.putAll(Map("identifier" -> identifier, "fields" -> fields.getOrElse(""), "mode" -> mode.getOrElse("read")).asJava)
val questionRequest = getRequest(question, headers, QuestionOperations.readQuestion.toString)
setRequestContext(questionRequest, version, objectType, schemaName)
getResult(ApiId.READ_QUESTION, questionActor, questionRequest)
......
......@@ -29,7 +29,7 @@ class QuestionSetController @Inject()(@Named(ActorNames.QUESTION_SET_ACTOR) ques
val headers = commonHeaders()
val questionSet = new java.util.HashMap().asInstanceOf[java.util.Map[String, Object]]
questionSet.putAll(headers)
questionSet.putAll(Map("identifier" -> identifier, "fields" -> fields.getOrElse(""), "mode" -> mode).asJava)
questionSet.putAll(Map("identifier" -> identifier, "fields" -> fields.getOrElse(""), "mode" -> mode.getOrElse("read")).asJava)
val questionSetRequest = getRequest(questionSet, headers, QuestionSetOperations.readQuestionSet.toString)
setRequestContext(questionSetRequest, version, objectType, schemaName)
getResult(ApiId.READ_QUESTION_SET, questionSetActor, questionSetRequest)
......
......@@ -7,6 +7,13 @@
"objects": ["QuestionSet", "QuestionSetImage"]
}
},
"restrictProps": {
"create" : [
],
"update" : [
"visibility"
]
},
"version": "enable",
"versionCheckMode": "ON",
"frameworkCategories": [],
......
......@@ -22,7 +22,7 @@
"children"
],
"update" : [
"children"
"children", "visibility"
]
},
"external": {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment