BaseEleve baseEleve
Boolean isEliotOpen
Boolean isCdtOpen
+ Boolean isTdbaseOpen
static belongsTo = [baseEleve:BaseEleve]
udt(nullable: true)
lvs(nullable: true)
isEliotOpen(nullable:true)
+ isTdbaseOpen(nullable:false)
}
NOTES('notes'),
SCOLARITE('scolarite'),
TEXTES('textes'),
- WEBSERVICES('webservices')
+ WEBSERVICES('webservices'),
+ TDBASE('tdbase')
private String code
RESSOURCE_FICHIER,
VIE_SCOLAIRE,
SUIVI_IMPRESSIONS,
- GESTION_IMPRESSION_CDT
+ GESTION_IMPRESSION_CDT,
+ ELIOT_TDBASE
}
\ No newline at end of file
return url
}
+ /**
+ * Construit une url pour une securiteSession (utilisée pour déterminer le
+ * porteur de l'utilisateur courant), 1 application Eliot
+ * l'action et le controller sont géré par l'application
+ * @return une url
+ * @throws IllegalStateException Si les données fournies n'ont pas permis de
+ * construire une url valide (données invalides en base pour le porteur,
+ * configuration manquante ou incorrecte pour l'application, ou controleur ou
+ * action incorrect
+ */
+ String getUrl(SecuriteSession securiteSession,
+ EliotApplicationEnum application
+ ) {
+
+ String urlServeur = getUrlServeur(securiteSession, application)
+
+ String nomApplication = getNomApplication(application)
+
+ String url = "$urlServeur/$nomApplication/"
+
+ UrlValidator urlValidator = new UrlValidator()
+ if (!urlValidator.isValid(url)) {
+ throw new IllegalStateException(
+ "$url n'est pas une url valide"
+ )
+ }
+
+ return url
+ }
+
/**
* Construit une url pour la sécurite session, pour un serveur non grails
*/
return url
}
-
/**
* @return retourne le nom d'application pour application utilisé dans l'url
*/
* @return une url
*/
public String getUrlServeurFromPorteurEntAnnuaireDistant(
- SecuriteSession securiteSession) {
+ SecuriteSession securiteSession) {
PorteurENTInfo porteurInfo =
- (PorteurENTInfo)annuaireService.getPorteurENTInfoForCodePorteurENT(
+ (PorteurENTInfo) annuaireService.getPorteurENTInfoForCodePorteurENT(
securiteSession.codePorteurENT
)
return porteurInfo.urlAccesEnt
--- /dev/null
+<!--
+ ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ ~
+ ~ Lilie is free software. You can redistribute it and/or modify since
+ ~ you respect the terms of either (at least one of the both license) :
+ ~ - under the terms of the GNU Affero General Public License as
+ ~ published by the Free Software Foundation, either version 3 of the
+ ~ License, or (at your option) any later version.
+ ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ ~ License, or any later version
+ ~
+ ~ There are special exceptions to the terms and conditions of the
+ ~ licenses as they are applied to this software. View the full text of
+ ~ the exception in file LICENSE.txt in the directory of this software
+ ~ distribution.
+ ~
+ ~ Lilie is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ Licenses for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ and the CeCILL-C along with Lilie. If not, see :
+ ~ <http://www.gnu.org/licenses/> and
+ ~ <http://www.cecill.info/licences.fr.html>.
+ -->
+
+<databaseChangeLog
+ xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
+
+ <changeSet id="1" author="bbel">
+ <comment>
+ Ajout de la colonne is_tdbase_open pour la gestion de l'accès à l'application tdbase selon les établissements.
+ </comment>
+
+ <addColumn
+ schemaName="backoffice"
+ tableName="backoffice_config">
+ <column name="is_tdbase_open" defaultValue="false" type="boolean">
+ <constraints nullable="false"/>
+ </column>
+ </addColumn>
+
+ </changeSet>
+
+</databaseChangeLog>
<include file="changelogs/scolarite/2014-01-30-0033643.xml"/>
<include file="changelogs/scolarite/2014-02-03-0033848.xml"/>
<include file="changelogs/scolarite/2014-02-03-0033862.xml"/>
- <include file="changelogs/scolarite/2014-02-04-0033643.xml"/>
- <include file="changelogs/scolarite/2014-02-10-0034131.xml"/>
+ <include file="changelogs/scolarite/2014-02-04-0033643.xml"/>
+ <include file="changelogs/scolarite/2014-02-10-0034131.xml"/>
<include file="changelogs/scolarite/2014-02-13-0033471.xml"/>
<include file="changelogs/securite/2014-02-10-0034147.xml"/>
<include file="changelogs/securite/2014-02-17-0034355.xml"/>
<include file="changelogs/securite/2014-02-25-0034704.xml"/>
<include file="changelogs/scolarite/2014-03-10-0035063.xml"/>
<include file="changelogs/scolarite/2014-03-10-0035063-2.xml"/>
- <include file="changelogs/scolarite/2014-03-11-0033848.xml"/>
+ <include file="changelogs/scolarite/2014-03-11-0033848.xml"/>
<include file="changelogs/scolarite/2014-03-12-0028846.xml"/>
<include file="changelogs/scolarite/2014-03-18-0035293.xml"/>
<include file="changelogs/scolarite/2014-04-03-0030529.xml"/>
<include file="changelogs/scolarite/2014-10-09-0039332.xml"/>
<include file="changelogs/scolarite/2014-10-15-0039332.xml"/>
<include file="changelogs/scolarite/2014-10-20-0039940.xml"/>
- <include file="changelogs/scolarite/2014-10-21-0039942.xml"/>
- <include file="changelogs/scolarite/2014-10-24-0039348.xml"/>
- <include file="changelogs/scolarite/2014-10-31-0039349.xml"/>
- <include file="changelogs/scolarite/2014-11-03-0039341.xml"/>
+ <include file="changelogs/scolarite/2014-10-21-0039942.xml"/>
+ <include file="changelogs/scolarite/2014-10-24-0039348.xml"/>
+ <include file="changelogs/scolarite/2014-10-31-0039349.xml"/>
+ <include file="changelogs/scolarite/2014-11-03-0039341.xml"/>
<include file="changelogs/scolarite/2014-11-07-0039349.xml"/>
<include file="changelogs/scolarite/2014-11-12-0039349.xml"/>
<include file="changelogs/scolarite/2014-11-13-0039349.xml"/>
<include file="changelogs/scolarite/2014-11-18-0040768.xml"/>
<include file="changelogs/securite/2014-11-20-0039547.xml"/>
+ <include file="changelogs/scolarite/2014-12-18-0041650.xml"/>
</databaseChangeLog>
Boolean isCdtOpen
Boolean isCdtOpenExists = false
+
+ Boolean isTdbaseOpen
+ Boolean isTdbaseOpenExists = false
+
def BackofficeConfigSaveParam() {
}
}
}
+ if(json.has('isTdbaseOpen')){
+ isTdbaseOpenExists = true
+ if(json.isTdbaseOpen == true || json.isTdbaseOpen == false){
+ isTdbaseOpen = json.isTdbaseOpen
+ }
+ }
+
}
static constraints = {
lvs(nullable: true)
udt(nullable: true)
isEliotOpen(nullable: true)
+ isTdbaseOpen(nullable: true)
}
}
\ No newline at end of file
if (params.isCdtOpen != null) {
filtre.isCdtOpen = Boolean.valueOf(params.isCdtOpen)
}
+ if (params.isTdbaseOpen != null) {
+ filtre.isTdbaseOpen = Boolean.valueOf(params.isTdbaseOpen)
+ }
if (params.baseEleve) {
filtre.baseEleve = params.baseEleve
}
BackofficeConfig configBackoffice = BackofficeConfig.findByUai(backofficeConfigSaveParam.uai)
- if (configBackoffice){
+ if (configBackoffice) {
updateBackofficeConfig(configBackoffice, backofficeConfigSaveParam)
}
else {
udt: backofficeConfigSaveParam.udt,
nombreEleve: backofficeConfigSaveParam.nombreEleve,
isEliotOpen: backofficeConfigSaveParam.isEliotOpen,
- isCdtOpen: backofficeConfigSaveParam.isCdtOpen
+ isCdtOpen: backofficeConfigSaveParam.isCdtOpen,
+ isTdbaseOpen: backofficeConfigSaveParam.isTdbaseOpen
).save(failOnError: true, flush: true)
}
}
configBackofficeExistant.nom = backofficeConfigSaveParam.nomExists ? backofficeConfigSaveParam.nom : configBackofficeExistant.nom
- if(backofficeConfigSaveParam.baseEleveExists){
+ if (backofficeConfigSaveParam.baseEleveExists) {
configBackofficeExistant.baseEleve = backofficeConfigSaveParam.baseEleve == null ? null : BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve)
}
configBackofficeExistant.lvs = backofficeConfigSaveParam.lvsExists ? backofficeConfigSaveParam.lvs : configBackofficeExistant.lvs
configBackofficeExistant.nombreEleve = backofficeConfigSaveParam.nombreEleveExists ? backofficeConfigSaveParam.nombreEleve : configBackofficeExistant.nombreEleve
configBackofficeExistant.isEliotOpen = backofficeConfigSaveParam.isEliotOpenExists ? backofficeConfigSaveParam.isEliotOpen : configBackofficeExistant.isEliotOpen
configBackofficeExistant.isCdtOpen = backofficeConfigSaveParam.isCdtOpenExists ? backofficeConfigSaveParam.isCdtOpen : configBackofficeExistant.isCdtOpen
- configBackofficeExistant.save(flush:true, failOnError:true)
+ configBackofficeExistant.isTdbaseOpen = backofficeConfigSaveParam.isCdtOpenExists ? backofficeConfigSaveParam.isTdbaseOpen : configBackofficeExistant.isTdbaseOpen
+ configBackofficeExistant.save(flush: true, failOnError: true)
}
bc.lvs,
bc.is_eliot_open,
bc.is_cdt_open,
+ bc.is_tdbase_open,
etablissement.is_eliot as is_etab_eliot,
be.code as base_eleve,
dernier_import_udt.date_debut_pre_traitement as debut_dernier_import_udt,
where 1 = 1
"""
- List listeConfigBackoffice(Filtre filtre, Map pagination){
+ List listeConfigBackoffice(Filtre filtre, Map pagination) {
List params = []
StringBuilder requeteSqlBuilder = new StringBuilder()
requeteSqlBuilder <<= LISTE_CONFIG_BACKOFFICE_SQL
- if (filtre.uai){
+ if (filtre.uai) {
requeteSqlBuilder <<= " and bc.uai like ?"
params << filtre.uai
}
- if (filtre.isEtabEliot == true){
+ if (filtre.isEtabEliot == true) {
requeteSqlBuilder <<= " and etablissement.is_eliot = ?"
params << filtre.isEtabEliot
}
- if (filtre.isEtabEliot == false){
+ if (filtre.isEtabEliot == false) {
requeteSqlBuilder <<= " and etablissement.is_eliot is null"
}
- if (filtre.isEliotOpen != null){
+ if (filtre.isEliotOpen != null) {
requeteSqlBuilder <<= " and bc.is_eliot_open = ?"
params << filtre.isEliotOpen
}
- if (filtre.isCdtOpen != null){
+ if (filtre.isCdtOpen != null) {
requeteSqlBuilder <<= " and bc.is_cdt_open = ?"
params << filtre.isCdtOpen
}
- if (filtre.baseEleve){
+ if (filtre.isTdbaseOpen != null) {
+ requeteSqlBuilder <<= " and bc.is_tdbase_open = ?"
+ params << filtre.isTdbaseOpen
+ }
+ if (filtre.baseEleve) {
requeteSqlBuilder <<= " and be.code = ?"
params << filtre.baseEleve
}
- if (filtre.lvs != null){
+ if (filtre.lvs != null) {
requeteSqlBuilder <<= " and bc.lvs = ?"
params << filtre.lvs
}
- if (filtre.udt != null){
+ if (filtre.udt != null) {
requeteSqlBuilder <<= " and bc.udt = ?"
params << filtre.udt
}
- if (filtre.dernierImportUdtDtDeb){
+ if (filtre.dernierImportUdtDtDeb) {
requeteSqlBuilder <<= " and dernier_import_udt.date_debut_pre_traitement >= ?"
params << new Timestamp(DateUtil.setDebutJour(filtre.dernierImportUdtDtDeb).getTime())
}
- if (filtre.dernierImportUdtDtFin){
+ if (filtre.dernierImportUdtDtFin) {
requeteSqlBuilder <<= " and dernier_import_udt.date_debut_pre_traitement <= ?"
params << new Timestamp(DateUtil.setFinJour(filtre.dernierImportUdtDtFin).getTime())
}
- if (filtre.dernierImportAnnuaireDtDeb){
+ if (filtre.dernierImportAnnuaireDtDeb) {
requeteSqlBuilder <<= " and dernier_import_aaf.date >= ?"
params << new Timestamp(DateUtil.setDebutJour(filtre.dernierImportAnnuaireDtDeb).getTime())
}
- if (filtre.dernierImportAnnuaireDtFin){
+ if (filtre.dernierImportAnnuaireDtFin) {
requeteSqlBuilder <<= " and dernier_import_aaf.date <= ?"
params << new Timestamp(DateUtil.setFinJour(filtre.dernierImportAnnuaireDtFin).getTime())
}
mapImport.lvs = row.getProperty('lvs')
mapImport.isEliotOpen = row.getProperty('is_eliot_open')
mapImport.isCdtOpen = row.getProperty('is_cdt_open')
+ mapImport.isTdbaseOpen = row.getProperty('is_tdbase_open')
mapImport.isEtabEliot = row.getProperty('is_etab_eliot') ? true : false
mapImport.baseEleve = row.getProperty('base_eleve')
mapImport.debutDernierImportUdt = row.getProperty('debut_dernier_import_udt')
}
- Integer compteUtilisateurFiltre (def uai, def filtre) {
+ Integer compteUtilisateurFiltre(def uai, def filtre) {
List params = []
Integer nbrUtilisateurs = 0
def sql = new Sql(dataSource)
try {
- sql.eachRow(requeteSql.toString(), params){row ->
+ sql.eachRow(requeteSql.toString(), params) {row ->
nbrUtilisateurs = row.getProperty('nbr')
}
} catch (Exception e) {
}
- List listeUtilisateurFiltre (def uai, def filtre, def pagination){
+ List listeUtilisateurFiltre(def uai, def filtre, def pagination) {
List params = []
requeteSql = pagine(pagination, params, requeteSql)
- List utilisateurs = []
+ List utilisateurs = []
def sql = new Sql(dataSource)
try {
sql.eachRow(requeteSql.toString(), params) {row ->
}
- private List agregeFonctionsUtilisateur (List utilisateurs){
+ private List agregeFonctionsUtilisateur(List utilisateurs) {
Map fonctionsUtilisateur = [:]
- utilisateurs.each{ utilisateur ->
- if(fonctionsUtilisateur[utilisateur.id]) {
+ utilisateurs.each { utilisateur ->
+ if (fonctionsUtilisateur[utilisateur.id]) {
fonctionsUtilisateur[utilisateur.id].fonction += ", ${utilisateur.fonction}"
} else {
fonctionsUtilisateur[utilisateur.id] = utilisateur
}
- private List formateConfigs(List configs){
- configs.each{ config ->
+ private List formateConfigs(List configs) {
+ configs.each { config ->
//Si l'import n'est pas fini on donne la date du début Pre-traitement, sinon
//la date de fin d'import
- if (config.finDernierImportUdt){
+ if (config.finDernierImportUdt) {
config.dernierImportUdt = 'Fin : ' + config.finDernierImportUdt
} else {
config.dernierImportUdt = 'Début : ' + config.debutDernierImportUdt
return configs
}
-
/**
* Gère la clause union pour les requêtes sqlFiltrePersonne
*/
private void requeteUnion(Boolean union,
Boolean dernier,
StringBuilder sql,
- Closure closure ){
- if(union) {
+ Closure closure) {
+ if (union) {
sql <<= ' ('
closure()
sql <<= ' )'
- if(!dernier) {
+ if (!dernier) {
sql <<= ' union'
}
} else {
}
- private String sqlFiltrePersonne (Map filtre, List params, String uai){
+ private String sqlFiltrePersonne(Map filtre, List params, String uai) {
StringBuilder sql = new StringBuilder()
//Spécial Elèves
if (filtre.fonction == FonctionEnum.ELEVE.code || !filtre.fonction) {
params << uai
requeteUnion(!filtre.fonction, false, sql) {
- sql <<= sqlFiltreEleve (filtre, params)
+ sql <<= sqlFiltreEleve(filtre, params)
}
}
//Spécial Parents
if (filtre.fonction == FonctionEnum.PERS_REL_ELEVE.code || !filtre.fonction) {
params << uai
requeteUnion(!filtre.fonction, false, sql) {
- sql <<= sqlFiltreParent (filtre, params)
+ sql <<= sqlFiltreParent(filtre, params)
}
}
//Spécial Autres personnes
filtre.fonction != FonctionEnum.PERS_REL_ELEVE.code) {
params << uai
requeteUnion(!filtre.fonction, true, sql) {
- sql <<= sqlFiltreAutrePersonne (filtre, params)
+ sql <<= sqlFiltreAutrePersonne(filtre, params)
}
}
return sql.toString()
}
-
/**
* Partie Select pour les requêtes sqlFiltrePersonne
*/
"""
}
-
/**
* Partie du from commune aux requêtes sqlFiltrePersonne
*/
- private String sqlFiltrePersonneFromCommun(){
+ private String sqlFiltrePersonneFromCommun() {
"""
from
ent.personne_propriete_scolarite pps
"""
}
-
/**
* Clause where pour les requêtes sqlFiltrePersonne
*/
and (etab.uai = ?)
"""
- if (filtre?.nom){
+ if (filtre?.nom) {
sql <<= " and pers.nom like ?"
params << filtre.nom
}
- if (filtre?.prenom){
+ if (filtre?.prenom) {
sql <<= " and pers.prenom like ?"
params << filtre.prenom
}
- if (filtre?.epj){
+ if (filtre?.epj) {
sql <<= " and auto.idExterne like ?"
params << filtre.epj
}
- if (filtre?.fonction){
+ if (filtre?.fonction) {
sql <<= " and fonc.code = ?"
params << filtre.fonction
}
return sql.toString()
}
-
/**
* Requête spéciale elèves
*/
- private String sqlFiltreEleve (Map filtre, List params){
+ private String sqlFiltreEleve(Map filtre, List params) {
StringBuilder sql = new StringBuilder()
sql <<= sqlFiltrePersonneSelect()
sql <<= sqlFiltrePersonneFromCommun()
return sql.toString()
}
-
/**
* Requête spéciale parents
*/
- private String sqlFiltreParent (Map filtre, List params){
+ private String sqlFiltreParent(Map filtre, List params) {
StringBuilder sql = new StringBuilder()
sql <<= sqlFiltrePersonneSelect()
sql <<= sqlFiltrePersonneFromCommun()
return sql.toString()
}
-
/**
* Requête spéciale personnes autres que parents et éléve
*/
- private String sqlFiltreAutrePersonne (Map filtre, List params){
+ private String sqlFiltreAutrePersonne(Map filtre, List params) {
StringBuilder sql = new StringBuilder()
sql <<= sqlFiltrePersonneSelect()
sql <<= sqlFiltrePersonneFromCommun()
return sql.toString()
}
-
/**
* gére la pagination
*/
return requeteSql
}
- List <BaseEleve> listeBaseEleves(){
+ List<BaseEleve> listeBaseEleves() {
return BaseEleve.findAll("from BaseEleve as b order by b.code")
}
/**
* Liste les imports UDT
- * @param filtre (uai et debutImport : optionnels tous les 2)
+ * @param filtre (uai et debutImport : optionnels tous les 2)
*/
- List listeImportsUdt(def filtre){
+ List listeImportsUdt(def filtre) {
List params = []
String requeteSql = LISTE_IMPORT_UDT_SQL
- if(filtre.uai) {
+ if (filtre.uai) {
requeteSql += " and e.uai like ?"
params << filtre.uai
}
- if(filtre.debutImport) {
+ if (filtre.debutImport) {
requeteSql += " and i.date_debut_pre_traitement >= ?"
params << filtre.debutImport.toTimestamp()
}
return importsUdt
}
-
/**
* Date de fin d'import à remvoyer par listeImportsUdt
*/
private String dateFinImport(Timestamp dateFinPreTraitement,
Timestamp dateFinImport,
- Long nbrEventEnAttente){
+ Long nbrEventEnAttente) {
String dateARetourner = null
// Si c'est fini
return dateARetourner
}
+
}
\ No newline at end of file
Boolean isEtabEliot
Boolean isEliotOpen
Boolean isCdtOpen
+ Boolean isTdbaseOpen
String baseEleve
Boolean lvs
Boolean udt
* Tests :BackofficeServiceTests
* @author jcok
*/
-class BackofficeServiceTests extends GroovyTestCase{
+class BackofficeServiceTests extends GroovyTestCase {
BackofficeService backofficeService
BackofficeConfigSaveParam backofficeConfigSaveParamTest1
// udt: false,
// nombreEleve: 200
// )
- println ('PASSAGE SETUP')
+ println('PASSAGE SETUP')
backofficeConfigSaveParamTest1 = new BackofficeConfigSaveParam(
- uai:'ABCDEF88',
+ uai: 'ABCDEF88',
nomExists: true,
nom: 'College Serret',
baseEleveExists: true,
baseEleve: 'LVS',
lvsExists: true,
lvs: true,
- udtExists:true,
+ udtExists: true,
udt: false,
nombreEleveExists: true,
nombreEleve: 200,
isEliotOpenExists: true,
isEliotOpen: true,
- isCdtOpen: true
+ isCdtOpen: true,
+ isTdbaseOpen: false
)
backofficeConfigSaveParamTest2 = new BackofficeConfigSaveParam(
- uai:'ABCDEF88',
+ uai: 'ABCDEF88',
nomExists: true,
nom: 'Lycee Encelade',
baseEleveExists: true,
baseEleve: 'LVS',
lvsExists: true,
lvs: true,
- udtExists:true,
+ udtExists: true,
udt: false,
nombreEleveExists: true,
nombreEleve: 800,
isEliotOpenExists: true,
isEliotOpen: true,
- isCdtOpen: true
+ isCdtOpen: true,
+ isTdbaseOpen: true
)
}
- void testinsertUpdateListeBackofficeConfig(){
+ void testinsertUpdateListeBackofficeConfig() {
//Test de l'insert
backofficeService.insertUpdateBackofficeConfig(backofficeConfigSaveParamTest1)
BackofficeConfig bo1 = BackofficeConfig.findByUai('ABCDEF88')
- assertTrue ("L'uai devrait être celle passée en paramètre", bo1.uai == 'ABCDEF88')
- assertTrue ("Le nombreEleve devrait être celui passé en paramètre (200)", bo1.nombreEleve == 200)
+ assertTrue("L'uai devrait être celle passée en paramètre", bo1.uai == 'ABCDEF88')
+ assertTrue("Le nombreEleve devrait être celui passé en paramètre (200)", bo1.nombreEleve == 200)
+ assertFalse("Devrait être désactivé", backofficeConfigSaveParamTest1.isTdbaseOpen)
//Test de l'update
backofficeService.insertUpdateBackofficeConfig(backofficeConfigSaveParamTest2)
BackofficeConfig bo2 = BackofficeConfig.findByUai('ABCDEF88')
- assertTrue ("L'uai devrait être celle passée en paramètre", bo1.uai == 'ABCDEF88')
- assertTrue ("Le nombreEleve devrait être celui passé en paramètre (800)", bo2.nombreEleve == 800)
+ assertTrue("L'uai devrait être celle passée en paramètre", bo1.uai == 'ABCDEF88')
+ assertTrue("Le nombreEleve devrait être celui passé en paramètre (800)", bo2.nombreEleve == 800)
+ assertTrue("Devrait être activé ", backofficeConfigSaveParamTest2.isTdbaseOpen)
//Test de listing
- Filtre filtre = new Filtre(uai:'ABCDEF88')
+ Filtre filtre = new Filtre(uai: 'ABCDEF88')
Map pagination = [:]
List bocl = backofficeService.listeConfigBackoffice(filtre, pagination)
- assertTrue ("L'uai devrait être l'établissement créé ", bocl[0].nombreEleve == 800)
+ assertTrue("L'uai devrait être l'établissement créé ", bocl[0].nombreEleve == 800)
}
- void testListeUtilisateur(){
+ void testListeUtilisateur() {
PopulationTestEtablissement etab1 = PopulationTestEtablissement.ETABLISSEMENT_1
PopulationTestActeur popActeur1 = PopulationTestActeur.DIRECTION_1
- Personne personne = Personne.createCriteria().get{
- autorite{
- eq ('idExterne', popActeur1.idExterne)
+ Personne personne = Personne.createCriteria().get {
+ autorite {
+ eq('idExterne', popActeur1.idExterne)
eq('type', Autorite.TYPE_ACTEUR)
}
- fetchMode('autorite',FetchMode.JOIN)
+ fetchMode('autorite', FetchMode.JOIN)
}
String uai = etab1.codeUai
- Map filtre = [nom:personne.nom ]
- Map pagination = [max:10]
+ Map filtre = [nom: personne.nom]
+ Map pagination = [max: 10]
- List utilisateurs = backofficeService.listeUtilisateurFiltre(uai,filtre,pagination)
+ List utilisateurs = backofficeService.listeUtilisateurFiltre(uai, filtre, pagination)
- assertTrue("La liste ne contient pas l'utilisateur(personne) attendu", utilisateurs.collect{it.epj}.contains(personne.autorite.idExterne))
+ assertTrue("La liste ne contient pas l'utilisateur(personne) attendu", utilisateurs.collect {it.epj}.contains(personne.autorite.idExterne))
}
* remontant au service commercial les dépassements de nombre d'élèves
* par rapport aux prévisions (application externe)
*/
- void testBackofficeVerifNombreEleve(){
+
+ void testBackofficeVerifNombreEleve() {
Sql sql = new Sql(dataSource)
e.uai
"""
Throwable t = null
- try{
+ try {
sql.eachRow(select) { etablissement ->
//Vérifier le nombre d'élèves réel (par un service ou en vérif. cette requête)
}
}
- catch (Exception e){
+ catch (Exception e) {
t = e
}
- assertFalse (t instanceof Exception)
+ assertFalse(t instanceof Exception)
}
}
-
-
}
CAHIER_DE_TEXTES,
RECHERCHE_DES_CAHIERS_DE_TEXTES,
RECHERCHE_ACTIVITES,
- VIE_SCOLAIRE
+ VIE_SCOLAIRE,
+ ELIOT_TDBASE
}
\ No newline at end of file
TextesFonctionnalite.GESTION_IMPRESSION_CDT,
ConstController.CONTROLLER_NAME_SUIVI_IMPRESSION,
ConstController.ACTION_NAME_ACCUEIL
- )
+ ),
+ ELIOT_TDBASE(
+ GroupePage.ELIOT_TDBASE,
+ TextesFonctionnalite.ELIOT_TDBASE,
+ null,
+ null
+ ),
private final GroupePage groupePage
private final TextesFonctionnalite textesFonctionnalite
textes.menu.rechercheActivite.titrePrincipal = Recherche des activités
textes.menu.rechercheCDT.titrePrincipal = Recherche des cahiers de textes
textes.menu.vieScolaire.titrePrincipal =Vie Scolaire
+textes.menu.tdbase.titrePrincipal= TD Base
textes.menu.vieScolaire.sousMenu={0}
#Masque
import org.lilie.services.eliot.scolarite.Etablissement
import org.lilie.services.eliot.securite.AutorisationException
import org.lilie.services.eliot.textes.recherchecahierdetextes.CahierDeTextesRechercheService
+import groovy.sql.Sql
+import org.lilie.services.eliot.backoffice.BackofficeConfig
/**
* Façade recouperant les info sur les droits associé à un cahier de textes
// jcok : grailsApplication est un singleton
@SuppressWarnings('GrailsStatelessService')
GrailsApplication grailsApplication
+ def dataSource
protected List<EliotFonctionnalite> getFonctionnalites() {
- List<EliotFonctionnalite> result = []
- result.addAll(TextesFonctionnalite.values().toList())
- return result
+ return TextesFonctionnalite.values().toList()
}
public HashSet getFonctionnalitesAccessibles(SecuriteSession securiteSession) {
)
}
+ if (!hasAcceeATdbase(securiteSession)) {
+ listeFonctionnalites.remove(
+ TextesFonctionnalite.ELIOT_TDBASE
+ )
+ }
+
HashSet fonctionnalitesAccessibles = (HashSet) listeFonctionnalites
return fonctionnalitesAccessibles
}
+
+ private boolean hasAcceeATdbase(SecuriteSession securiteSession) {
+ List<String> uais = securiteSession.etablissementsAccessibles*.uai
+
+ if (uais.size() == 0) {
+ return false
+ }
+
+
+ String query = """
+ select config.id from BackofficeConfig as config
+ WHERE config.uai IN(:uais)
+ AND config.isTdbaseOpen = true
+ """
+
+ return BackofficeConfig.executeQuery(query, [uais: uais]).size() > 0
+ }
+
/**
* Vérifie le droit de consultation des cahiers de textes sur l'établissement
*/
import org.lilie.services.eliot.scolarite.etablissement.LvsPreferenceEtablissementInfo
import org.lilie.services.eliot.sso.LiaisonSSOService
import org.lilie.services.eliot.securite.impl.CompteUtilisateurEtat
+import org.lilie.services.eliot.url.EliotUrlService
+import org.lilie.services.eliot.applications.EliotApplicationEnum
/**
* Permet d'obtenir les informations de construction du menu pour la session
DroitsService droitsService
LiaisonSSOService liaisonSSOService
+ EliotUrlService eliotUrlService
private final static String MENU_ITEM = 'menuitem'
* @param securiteSession la session de sécurité Eliot de l'utilisateur
*/
public MenuInfo getMenuInfo(SecuriteSession securiteSession,
- Page pageCourante) {
+ Page pageCourante) {
HashSet fonctionnalitesAccessibles =
)
if (vieScolaire) {menuInfo.items << vieScolaire}
+ // Accès tdbase
+ MenuItemInfo tdbase = getMenuItemInfoAccesTdbase(
+ securiteSession,
+ pageCourante,
+ fonctionnalitesAccessibles
+ )
+ if (tdbase) {menuInfo.items << tdbase}
+
return menuInfo
}
+ private MenuItemInfo getMenuItemInfoAccesTdbase(SecuriteSession securiteSession,
+ Page pageCourante,
+ HashSet fonctionnalitesAccessibles) {
+
+ if (!fonctionnalitesAccessibles.contains(TextesFonctionnalite.ELIOT_TDBASE)) {
+ return null
+ }
+
+ return new MenuItemInfo(
+ codeLabel: 'textes.menu.tdbase.titrePrincipal',
+ menuType: MENU_ITEM,
+ selectionne: (Page.ELIOT_TDBASE == pageCourante),
+ url: eliotUrlService.getUrl(securiteSession, EliotApplicationEnum.TDBASE),
+ nouvelOnglet: false
+ )
+ }
+
private MenuItemInfo getMenuInfoCDT(Page pageCourante, HashSet fonctionnalitesAccessibles) {
boolean menuCDTVisible =