STAM#58232 Opdracht notities ook via API2
svn path=/Website/branches/v2019.1/; revision=43063
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user