diff --git a/app/api/assiduites.py b/app/api/assiduites.py index ec47f518a2..bbd6142f91 100644 --- a/app/api/assiduites.py +++ b/app/api/assiduites.py @@ -601,9 +601,12 @@ def _create_singular( moduleimpl_id = data.get("moduleimpl_id", False) moduleimpl: ModuleImpl = None - if moduleimpl_id not in [False, None]: + if moduleimpl_id not in [False, None, "", "-1"]: if moduleimpl_id != "autre": - moduleimpl = ModuleImpl.query.filter_by(id=int(moduleimpl_id)).first() + try: + moduleimpl = ModuleImpl.query.filter_by(id=int(moduleimpl_id)).first() + except ValueError: + moduleimpl = None if moduleimpl is None: errors.append("param 'moduleimpl_id': invalide") else: @@ -810,7 +813,7 @@ def _edit_singular(assiduite_unique, data): moduleimpl: ModuleImpl = None if moduleimpl_id is not False: - if moduleimpl_id is not None: + if moduleimpl_id not in [None, "", "-1"]: if moduleimpl_id == "autre": assiduite_unique.moduleimpl_id = None external_data = ( @@ -823,7 +826,13 @@ def _edit_singular(assiduite_unique, data): assiduite_unique.external_data = external_data else: - moduleimpl = ModuleImpl.query.filter_by(id=int(moduleimpl_id)).first() + try: + moduleimpl = ModuleImpl.query.filter_by( + id=int(moduleimpl_id) + ).first() + except ValueError: + moduleimpl = None + if moduleimpl is None: errors.append("param 'moduleimpl_id': invalide") else: @@ -834,7 +843,7 @@ def _edit_singular(assiduite_unique, data): else: assiduite_unique.moduleimpl_id = moduleimpl_id else: - assiduite_unique.moduleimpl_id = moduleimpl_id + assiduite_unique.moduleimpl_id = None # Cas 3 : desc desc = data.get("desc", False) diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js index a28c0eca85..73d872ec65 100644 --- a/app/static/js/assiduites.js +++ b/app/static/js/assiduites.js @@ -921,14 +921,11 @@ function deleteAssiduite(assiduite_id) { function hasModuleImpl(assiduite) { if (assiduite.moduleimpl_id != null) return true; - if ( - "external_data" in assiduite && - assiduite.external_data instanceof Object && - "module" in assiduite.external_data - ) - return true; - - return false; + return ( + assiduite.hasOwnProperty("external_data") && + assiduite.external_data != null && + assiduite.external_data.hasOwnProperty("module") + ); } /** @@ -1406,10 +1403,10 @@ function setModuleImplId(assiduite, module = null) { const moduleimpl = module == null ? getModuleImplId() : module; if (moduleimpl === "autre") { if ( - "external_data" in assiduite && - assiduite.external_data instanceof Object + assiduite.hasOwnProperty("external_data") && + assiduite.external_data != null ) { - if ("module" in assiduite.external_data) { + if (assiduite.external_data.hasOwnProperty("module")) { assiduite.external_data.module = "Autre"; } else { assiduite["external_data"] = { module: "Autre" }; @@ -1421,10 +1418,10 @@ function setModuleImplId(assiduite, module = null) { } else { assiduite["moduleimpl_id"] = moduleimpl; if ( - "external_data" in assiduite && - assiduite.external_data instanceof Object + assiduite.hasOwnProperty("external_data") && + assiduite.external_data != null ) { - if ("module" in assiduite.external_data) { + if (assiduite.external_data.hasOwnProperty("module")) { delete assiduite.external_data.module; } } @@ -1476,9 +1473,9 @@ function getCurrentAssiduiteModuleImplId() { let mod = currentAssiduites[0].moduleimpl_id; if ( mod == null && - "external_data" in currentAssiduites[0] && - currentAssiduites[0].external_data instanceof Object && - "module" in currentAssiduites[0].external_data + currentAssiduites[0].hasOwnProperty("external_data") && + currentAssiduites[0].external_data != null && + currentAssiduites[0].external_data.hasOwnProperty("module") ) { mod = currentAssiduites[0].external_data.module; } @@ -1690,9 +1687,9 @@ function getModuleImpl(assiduite) { if (id == null || id == undefined) { if ( - "external_data" in assiduite && - assiduite.external_data instanceof Object && - "module" in assiduite.external_data + assiduite.hasOwnProperty("external_data") && + assiduite.external_data != null && + assiduite.external_data.hasOwnProperty("module") ) { return assiduite.external_data.module; } else { @@ -1718,10 +1715,12 @@ function getModuleImpl(assiduite) { } function getUser(obj) { - if ("external_data" in obj && obj.external_data != null) { - if ("enseignant" in obj.external_data) { - return obj.external_data.enseignant; - } + if ( + obj.hasOwnProperty("external_data") && + obj.external_data != null && + obj.external_data.hasOwnProperty("enseignant") + ) { + return obj.external_data.enseignant; } return obj.user_id; diff --git a/app/templates/assiduites/widgets/tableau_assi.j2 b/app/templates/assiduites/widgets/tableau_assi.j2 index c40d211b00..78c34cf007 100644 --- a/app/templates/assiduites/widgets/tableau_assi.j2 +++ b/app/templates/assiduites/widgets/tableau_assi.j2 @@ -184,8 +184,11 @@ path, (data) => { let module = data.moduleimpl_id; - - if (module == null && "external_data" in data && "module" in data.external_data) { + if ( + module == null && data.hasOwnProperty("external_data") && + data.external_data != null && + data.external_data.hasOwnProperty('module') + ) { module = data.external_data.module.toLowerCase(); }