STAM#58232 Opdracht notities ook via API2

svn path=/Website/branches/v2019.1/; revision=43063
This commit is contained in:
Jos Groot Lipman
2019-06-24 13:54:14 +00:00
parent c441ecdda4
commit 9fe08384e0
2 changed files with 98 additions and 36 deletions

View File

@@ -15,6 +15,7 @@
<!-- #include file="./model_custom_fields.inc"-->
<!-- #include file="./model_mld_kenmerk.inc"-->
<!-- #include file="../bgt/bgt_tools.inc" -->
<!-- #include file="./model_notes.inc"-->
<%
function model_mld_opdr()
@@ -280,6 +281,10 @@ function model_mld_opdr()
this.includes= {
"notes": {
model: new model_notes("ORD"),
joinfield: "parent"
},
"custom_fields" : {
"model": new model_custom_fields(this, new model_mld_kenmerk('O', { internal: true }), { pNiveau: "O" }),
"joinfield": "flexparentkey",

View File

@@ -9,6 +9,11 @@
Context:
Notes: table en fields worden dynamisch per module bepaald
Merk op dat dit een beetje een vreemde eend in de bijt is.
Notities vallen echt onder andere objecten en en dan is een
include het meest voor de hand liggend. Desalniettemin mag (/moet)
je ze ook *rechtstreeks* toevoegen via /api2/notes
Ook: in model_issues.inc doen we extra filtering op mld_melding_note_flag
*/
/*
@@ -118,7 +123,15 @@ function model_notes(module)
"created" : { dbs: tabel.naam + "_aanmaak", typ: "datetime", "readonly": true},
"parent" : { dbs: tabel.parent + "_key", typ: "key", filter: "exact" }
};
// (Nog) niet ondersteuned
// switch (module)
// {
// case "MLD":
// {
// this.fields.push("flag": { dbs: "mld_melding_note_flag", typ: "number", filter: "exact" });
// break;
// }
// }
this.list = {
"columns": [
"id",
@@ -132,51 +145,94 @@ function model_notes(module)
{
params.message = "";
if (params.filter.module == "MLD")
switch (params.filter.module)
{
var autfunction = (params.filter.scope == "fe"? "WEB_MLDFOF" : "WEB_MLDBOF");
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
switch (method)
case "MLD":
{
case "GET":
if (params.filter.parent_key)
{
var autfunction = (params.filter.scope == "fe"? "WEB_MLDFOF" : "WEB_MLDBOF");
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
switch (method)
{
case "GET":
if (params.filter.parent_key)
{
var mld_key = params.filter.parent_key;
var this_mld = mld.func_enabled_melding(mld_key, params);
user.auth_required_or_abort(this_mld.canReadNotes);
}
break;
case "DELETE":
// Notes mogen niet worden verwijderd.
// en verder met de autorisatie van PUT...
case "PUT":
var mld_key = params.filter.parent;
var this_mld = mld.func_enabled_melding(mld_key, params);
user.auth_required_or_abort(this_mld.canWriteNotes);
params.isNew = false;
break;
case "POST":
var mld_key = params.filter.parent_key;
var this_mld = mld.func_enabled_melding(mld_key, params);
user.auth_required_or_abort(this_mld.canReadNotes);
}
break;
case "DELETE":
// Notes mogen niet worden verwijderd.
// en verder met de autorisatie van PUT...
case "PUT":
var mld_key = params.filter.parent;
var this_mld = mld.func_enabled_melding(mld_key, params);
user.auth_required_or_abort(this_mld.canWriteNotes);
params.isNew = false;
break;
case "POST":
var mld_key = params.filter.parent_key;
var this_mld = mld.func_enabled_melding(mld_key, params);
user.auth_required_or_abort(this_mld.canWriteNotes);
params.isNew = true;
break;
user.auth_required_or_abort(this_mld.canWriteNotes);
params.isNew = true;
break;
}
params.func_enabled = this_mld || {};
break;
}
params.func_enabled = this_mld || {};
}
else
{
// Voor alle andere modules toevoegen niet toestaan.
if (method == "POST")
case "ORD":
{
var opdr_key = params.filter.parent_key;
var this_opdr = mld.func_enabled_opdracht(opdr_key);
switch (method)
{
case "PUT":
var opdr_key = params.filter.parent_key;
var this_opdr = mld.func_enabled_opdracht(opdr_key);
user.auth_required_or_abort(this_opdr.canEditOpdrNote);
params.isNew = false;
break;
case "POST":
var opdr_key = params.filter.parent_key;
var this_opdr = mld.func_enabled_opdracht(opdr_key);
user.auth_required_or_abort(this_opdr.canEditOpdrNote);
params.isNew = true;
break;
}
params.func_enabled = this_opdr || {};
break;
}
default:
{
// Voor alle andere modules (nog) niets toestaan.
user.auth_required_or_abort(false);
}
}
}
// Geen REST_GET, dat doe je maar via het hoofdmodel/include niet (rechtstreeks) toestaan?
this.REST_PUT = function (params, jsondata, the_key) /* update note */
// Geen standaard REST_GET, dat doe je maar via het hoofdmodel/include
this.templateREST_GET = function _GET(params)
{
var query = api2.sqlfields(params, this );
var wheres = api2.sqlfilter(params, this);
query.wheres = query.wheres.concat(wheres);
var sql = "SELECT " + query.selects.join(", ")
+ " FROM " + query.tables.join(", ");
if (query.wheres.length)
sql += " WHERE " + query.wheres.join(" AND " );
var json = api2.sql2json (params, sql, this );
return json;
};
// deprecated omdat hij volgens mij toch niet werkt / geen _check_authorization heeft
this.deprecatedREST_PUT = function (params, jsondata, the_key) /* update note */
{
this.REST_GET = this.templateREST_GET; // om het resultaat te kunnen opleveren
// Een note kan alleen worden aangepast door de persoon die hem geschreven heeft.
// Alleen van de meest recente note bij een (melding/opdracht/...) kan de omschrijving worden aangepast.
//
@@ -194,6 +250,7 @@ function model_notes(module)
this.REST_POST = function (params, jsondata) /* new note */
{
this.REST_GET = this.templateREST_GET; // om het resultaat te kunnen opleveren
params.filter.parent_key = parseInt(jsondata.parent, 10);
if (!jsondata.author)
jsondata.author = user_key;