protected void marqueFinOperation(String codeOperation) {
OperationMaintenance operation =
- (OperationMaintenance) OperationMaintenance.createCriteria().get {
- eq('code', codeOperation)
- }
+ (OperationMaintenance) OperationMaintenance.createCriteria().get {
+ eq('code', codeOperation)
+ }
if (!operation) {
operation = new OperationMaintenance(code: codeOperation)
protected void migrePermissionsExistantesSurGroupesLocaux(SecuriteSession securiteSession,
Item item) {
- List<ProprietesScolarite> groupesLocaux = findAllGroupeLocalAvecAutorisationParDefaut(item)
- groupesLocaux.each {ProprietesScolarite groupeLocal ->
+ List<Autorisation> autorisationModifiees = findAllAutorisationModifieDesGroupesDistants(item)
- switch (groupeLocal.fonction.code) {
- case FonctionEnum.ELEVE.code :
- copiePermissionsGroupeEleves(securiteSession, groupeLocal, item)
- break
+ autorisationModifiees.each { Autorisation autorisation ->
+ GroupeInfo groupeDistant =
+ annuaireService.getGroupeInfo(autorisation.autorite.idExterne)
- case FonctionEnum.PERS_REL_ELEVE.code :
- copiePermissionsGroupeParents(securiteSession, groupeLocal, item)
+ switch (groupeDistant.typeGroupeScolarite) {
+ case GroupeInfo.GROUPE_ELEVE:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.ELEVE
+ )
+ )
break
- case FonctionEnum.ENSEIGNANT.code :
- if (groupeLocal.responsableStructureEnseignement) {
- copiePermissionsGroupeEnseignantsPrincipaux(securiteSession, groupeLocal, item)
- } else {
- copiePermissionsGroupeEnseignants(securiteSession, groupeLocal, item)
- }
+ case GroupeInfo.GROUPE_PARENT:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.PERS_REL_ELEVE
+ )
+ )
break
- case FonctionEnum.DIRECTION.code :
- copiePermissionsGroupeDirecteurs(groupeLocal, item)
+ case GroupeInfo.GROUPE_ENSEIGNANT:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.ENSEIGNANT
+ )
+ )
break
- case FonctionEnum.EDUCATION.code :
- copiePermissionsGroupeEducations(groupeLocal, item)
+ case GroupeInfo.GROUPE_ADMINS_LOCAUX:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.ADMIN_LOCAL
+ )
+ )
break
- case FonctionEnum.DOCUMENTALISTE.code :
- copiePermissionsGroupeDocumentalistes(groupeLocal, item)
- break
-
- case FonctionEnum.ADMIN_LOCAL.code :
- copiePermissionsGroupeAdminsLocaux(groupeLocal, item)
+ case GroupeInfo.GROUPE_PERSONNEL:
+ switch (groupeDistant.fonction) {
+ case GroupeInfo.FONCTION_PERSONNEL_DIRECTION:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.DIRECTION
+ )
+ )
+ break
+
+ case GroupeInfo.FONCTION_PERSONNEL_CPE:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.EDUCATION
+ )
+ )
+ break
+
+ case GroupeInfo.FONCTION_CHEF_TRAVAUX:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.CHEF_TRAVAUX
+ )
+ )
+ break
+
+ case GroupeInfo.FONCTION_PERSONNEL_DOCUMENTATION:
+ copiePermissions(
+ autorisation,
+ findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(
+ item,
+ FonctionEnum.DOCUMENTALISTE
+ )
+ )
+ break
+
+ default:
+ log.info("Le groupe distant n'a pas été traité $groupeDistant")
+ break
+ }
break
- case FonctionEnum.CHEF_TRAVAUX.code :
- copiePermissionsGroupeChefsTravaux(groupeLocal, item)
+ default:
+ log.info("Le groupe distant n'a pas été traité $groupeDistant")
break
}
}
supprimeAllAutorisationParDefautGroupesDistants(item)
}
-
- protected List<ProprietesScolarite> findAllGroupeLocalAvecAutorisationParDefaut(Item item) {
-
- String hql = """
- select groupe
- from ProprietesScolarite as groupe
- left join fetch groupe.structureEnseignement
- left join fetch groupe.etablissement
- left join fetch groupe.fonction,
- Autorisation as autorisation
- where groupe.autorite = autorisation.autorite
- and autorisation.item = :item
- and autorisation.valeurPermissionsExpliciteDefaut != 0
- """
-
- return ProprietesScolarite.executeQuery(hql, [item: item])
- }
-
-
- protected void copiePermissionsGroupeEleves(SecuriteSession securiteSession,
- ProprietesScolarite groupeLocal,
- Item item) {
-
-
- StructureInformations structureInfo =
- distantStructureEnseignementService.
- newStructureInformations(groupeLocal.structureEnseignement)
-
- List<GroupeInfo> groupeDistants =
- annuaireService.getGroupeInfoElevePourStructureEnseignement(
- securiteSession,
- structureInfo
- )
-
- copiePermissionsFromGroupesDistants(groupeLocal, groupeDistants, item)
- }
-
-
- protected void copiePermissionsGroupeParents(SecuriteSession securiteSession,
- ProprietesScolarite groupeLocal,
- Item item) {
-
- StructureInformations structureInfo =
- distantStructureEnseignementService.
- newStructureInformations(groupeLocal.structureEnseignement)
-
- List<GroupeInfo> groupeDistants =
- annuaireService.getGroupeInfoParentsPourStructureEnseignement(
- securiteSession,
- structureInfo
+ List<Autorisation> findAllAutorisationModifieDesGroupesDistants(Item item) {
+ String hqlQuery = """
+ SELECT autorisation
+ FROM Autorisation AS autorisation
+ INNER JOIN FETCH autorisation.autorite as autorite
+
+ WHERE autorisation.item =:item
+ AND autorite.type = :groupe
+ AND autorite.localisation = :localisation
+ AND autorisation.valeurPermissionsExpliciteDefaut != 0
+ AND autorisation.valeurPermissionsExpliciteDefaut !=
+ autorisation.valeurPermissionsExplicite
+ """
+
+ return Autorisation.executeQuery(
+ hqlQuery,
+ [
+ item: item,
+ groupe: Autorite.TYPE_GROUPE,
+ localisation: Autorite.LOCALISATION_DISTANTE
+ ]
)
-
- copiePermissionsFromGroupesDistants(groupeLocal, groupeDistants, item)
}
+ Autorisation findAutorisationAvecDroitsParDefautDeGroupeLocalByFonction(Item item, FonctionEnum fonction) {
- protected void copiePermissionsGroupeEnseignantsPrincipaux(SecuriteSession securiteSession,
- ProprietesScolarite groupeLocal,
- Item item) {
-
- StructureInformations structureInfo =
- distantStructureEnseignementService.
- newStructureInformations(groupeLocal.structureEnseignement)
-
- List<GroupeInfo> groupeDistants =
- annuaireService.getGroupeInfoProfPrincipauxPourStructureEnseignement(
- securiteSession,
- structureInfo
- )
-
- copiePermissionsFromGroupesDistants(groupeLocal, groupeDistants, item)
- }
-
-
- protected void copiePermissionsGroupeEnseignants(SecuriteSession securiteSession,
- ProprietesScolarite groupeLocal,
- Item item) {
-
- StructureInformations structureInfo =
- distantStructureEnseignementService.
- newStructureInformations(groupeLocal.structureEnseignement)
-
- List<GroupeInfo> groupeDistants =
- annuaireService.getGroupeInfoEnseignantPourStructureEnseignement(
- securiteSession,
- structureInfo
- )
-
- copiePermissionsFromGroupesDistants(groupeLocal, groupeDistants, item)
- }
-
-
- protected void copiePermissionsGroupeDirecteurs(ProprietesScolarite groupeLocal,
- Item item) {
-
- GroupeInfo groupeDistant =
- annuaireService.getGroupeInfoDirectionForEtablissement(
- groupeLocal.etablissement.idExterne)
-
- copiePermissionsFromGroupesDistants(groupeLocal, [groupeDistant], item)
- }
-
-
- protected void copiePermissionsGroupeEducations(ProprietesScolarite groupeLocal,
- Item item) {
-
- GroupeInfo groupeDistant =
- annuaireService.getGroupeInfoEducationForEtablissement(
- groupeLocal.etablissement.idExterne)
-
- copiePermissionsFromGroupesDistants(groupeLocal, [groupeDistant], item)
- }
-
-
- protected void copiePermissionsGroupeDocumentalistes(ProprietesScolarite groupeLocal,
- Item item) {
-
- GroupeInfo groupeDistant =
- annuaireService.getGroupeInfoDocumentationForEtablissement(
- groupeLocal.etablissement.idExterne)
-
- copiePermissionsFromGroupesDistants(groupeLocal, [groupeDistant], item)
- }
-
-
- protected void copiePermissionsGroupeAdminsLocaux(ProprietesScolarite groupeLocal,
- Item item) {
-
- GroupeInfo groupeDistant =
- annuaireService.getGroupeInfoAdminsLocauxForEtablissement(
- groupeLocal.etablissement.idExterne)
-
- copiePermissionsFromGroupesDistants(groupeLocal, [groupeDistant], item)
- }
-
-
- protected void copiePermissionsGroupeChefsTravaux(ProprietesScolarite groupeLocal,
- Item item) {
-
- GroupeInfo groupeDistant =
- annuaireService.getGroupeInfoChefDeTravauxForEtablissement(
- groupeLocal.etablissement.idExterne)
-
- copiePermissionsFromGroupesDistants(groupeLocal, [groupeDistant], item)
- }
-
-
- protected void copiePermissionsFromGroupesDistants(ProprietesScolarite groupeLocal,
- List<GroupeInfo> groupesDistants,
- Item item) {
-
- Autorisation autorisationGroupeLocal =
- Autorisation.findByAutoriteAndItem(groupeLocal.autorite, item)
-
- List<Autorite> autoriteGroupeDistants =
- distantAutoriteService.getAutoritesForTypeAndIdExterne(
- Autorite.TYPE_GROUPE,
- groupesDistants*.groupeId*.toString(),
- false
+ String hql = """
+ SELECT autorisation
+ From Autorisation as autorisation,
+ ProprietesScolarite as groupe
+ WHERE groupe.autorite = autorisation.autorite
+ AND autorisation.item = :item
+ AND autorisation.valeurPermissionsExpliciteDefaut != 0
+ AND groupe.fonction.code = :fonction
+ AND (
+ groupe.responsableStructureEnseignement is null
+ OR
+ groupe.responsableStructureEnseignement = false
)
+ """
- copiePermissionsFromAutorites(autorisationGroupeLocal, autoriteGroupeDistants)
+ return Autorisation.executeQuery(
+ hql,
+ [
+ item: item,
+ fonction: fonction.code.toString()
+ ]
+ )[0]
}
-
- protected void copiePermissionsFromAutorites(Autorisation autorisationCible,
- List<Autorite> autoriteSources) {
-
- if (!autoriteSources) {
+ protected void copiePermissions(Autorisation autorisationDistante, Autorisation autorisationLocale) {
+ if (!autorisationDistante || !autorisationLocale) {
return
}
-
- List<Autorisation> autorisationSources =
- findAllAutorisationByAutoritesAndItem(
- autoriteSources,
- autorisationCible.item
- )
-
- int valeurMaxGroupeDistant = autorisationSources*.valeurPermissionsExplicite.max()
+ int valeurMaxGroupeDistant = autorisationDistante.valeurPermissionsExplicite
if (valeurMaxGroupeDistant &&
- valeurMaxGroupeDistant > autorisationCible.valeurPermissionsExplicite) {
+ valeurMaxGroupeDistant > autorisationLocale.valeurPermissionsExplicite) {
- autorisationCible.valeurPermissionsExplicite = valeurMaxGroupeDistant
- autorisationCible.save(failOnError: true)
+ autorisationLocale.valeurPermissionsExplicite = valeurMaxGroupeDistant
+ autorisationLocale.save(failOnError: true)
}
}
-
protected void supprimeAllAutorisationParDefautGroupesDistants(Item item) {
List<Autorisation> autorisations = Autorisation.createCriteria().list {
}
- protected List<Autorisation> findAllAutorisationByAutoritesAndItem(List<Autorite> autorites,
- Item item) {
- if (!autorites) {
- return []
- }
-
- return Autorisation.createCriteria().list {
- 'in'('autorite', autorites)
- eq('item', item)
- }
- }
-
-
protected SecuriteSession getSecuriteSessionSystem(Etablissement etablissement) {
return DefaultSecuriteSessionFactory.
getEliotTextesSecuriteSessionForCodePorteurENT(etablissement.porteurEnt.code)