Commit d0649a9e2368447e6f3dbbf7d573dceca7c9bc35
1 parent
d9dcc2ef
Gestion des non étudiants
Showing
4 changed files
with
41 additions
and
22 deletions
Show diff stats
app/routes/ApiRtes.js
@@ -136,11 +136,9 @@ sessionData = function (session, cb) { | @@ -136,11 +136,9 @@ sessionData = function (session, cb) { | ||
136 | if (err) { | 136 | if (err) { |
137 | cb(err); | 137 | cb(err); |
138 | } else { | 138 | } else { |
139 | - session.nom = res[0].nom; | ||
140 | - session.section = res[0].section; | 139 | + for (var attrname in res[0]) { session[attrname] = res[0][attrname]; } |
141 | session.membre = res[1]; | 140 | session.membre = res[1]; |
142 | session.bureau = res[2]; | 141 | session.bureau = res[2]; |
143 | - // TODO session.personnel | ||
144 | cb(null, session); | 142 | cb(null, session); |
145 | } | 143 | } |
146 | }); | 144 | }); |
@@ -258,26 +256,21 @@ api.get('/ninfo', reqAuth, function(req, res) { | @@ -258,26 +256,21 @@ api.get('/ninfo', reqAuth, function(req, res) { | ||
258 | NinfoServ.list(function (err, participants) { | 256 | NinfoServ.list(function (err, participants) { |
259 | async.reduce(NinfoServ.equipes, {}, function(memo, nomEquipe, cb) { | 257 | async.reduce(NinfoServ.equipes, {}, function(memo, nomEquipe, cb) { |
260 | async.filter(participants, function concerne(participant, cbf) { | 258 | async.filter(participants, function concerne(participant, cbf) { |
261 | - console.log(270); | ||
262 | cbf(participant.equipe == nomEquipe); | 259 | cbf(participant.equipe == nomEquipe); |
263 | }, function addInfos(membres) { | 260 | }, function addInfos(membres) { |
264 | - console.log(272, membres); | ||
265 | async.map(membres, function (membre, cba) { | 261 | async.map(membres, function (membre, cba) { |
266 | - console.log(274, membre); | ||
267 | async.parallel([function(cbp) { | 262 | async.parallel([function(cbp) { |
268 | - PolyUserServ.grabInfos(membre.login, cbp); | 263 | + PolyUserServ.get(membre.login, cbp); |
269 | }, function(cbp) { | 264 | }, function(cbp) { |
270 | NinfoServ.simpleData(membre, cbp); | 265 | NinfoServ.simpleData(membre, cbp); |
271 | }], function(err, results) { | 266 | }], function(err, results) { |
272 | var membreFinal = results[0]; | 267 | var membreFinal = results[0]; |
273 | membreFinal.equipe = results[1].equipe; | 268 | membreFinal.equipe = results[1].equipe; |
274 | membreFinal.comment = results[1].comment; | 269 | membreFinal.comment = results[1].comment; |
275 | - console.log(276, membreFinal); | ||
276 | cba(null, membreFinal); | 270 | cba(null, membreFinal); |
277 | }); | 271 | }); |
278 | }, function (err, membres) { | 272 | }, function (err, membres) { |
279 | memo[nomEquipe] = membres; | 273 | memo[nomEquipe] = membres; |
280 | - console.log(278, memo); | ||
281 | cb(null, memo); | 274 | cb(null, memo); |
282 | }); | 275 | }); |
283 | }); | 276 | }); |
app/services/PolyUserServ.js
@@ -85,9 +85,22 @@ var PolyUserServ = module.exports = { | @@ -85,9 +85,22 @@ var PolyUserServ = module.exports = { | ||
85 | if (err) { | 85 | if (err) { |
86 | cb(err); | 86 | cb(err); |
87 | } else { | 87 | } else { |
88 | + var nom = (passwd && passwd.GECOS) ? passwd.GECOS : login.toUpperCase(); | ||
89 | + var section = (group && group.name) ? group.name.toUpperCase() : ((passwd && passwd.GID) ? passwd.GID : 'Inconnu'); | ||
90 | + var ancien = !!section.match("[0-9]{4}"); | ||
91 | + var enseignant = !!section.match("ENS$"); | ||
92 | + var personnel = enseignant; | ||
93 | + var etudiant = !personnel; | ||
94 | + var enCours = etudiant && !ancien; | ||
88 | cb(null, { | 95 | cb(null, { |
89 | - nom: (passwd && passwd.GECOS) ? passwd.GECOS : login.toUpperCase(), | ||
90 | - section: (group && group.name) ? group.name.toUpperCase() : ((passwd && passwd.GID) ? passwd.GID : 'Inconnu') | 96 | + nom: nom, |
97 | + prenom: nom.split(' ')[0], | ||
98 | + section: section, | ||
99 | + ancien: ancien, | ||
100 | + enseignant: enseignant, | ||
101 | + personnel: personnel, | ||
102 | + etudiant: etudiant, | ||
103 | + enCours: enCours | ||
91 | }); | 104 | }); |
92 | } | 105 | } |
93 | }); | 106 | }); |
public/js/controllers/NinfoCtrl.js
@@ -6,25 +6,31 @@ angular.module('NinfoCtrl', ['SessionsServ', 'ApiServ', 'NotifyServ']) | @@ -6,25 +6,31 @@ angular.module('NinfoCtrl', ['SessionsServ', 'ApiServ', 'NotifyServ']) | ||
6 | $scope.session = SessionServ.cur; | 6 | $scope.session = SessionServ.cur; |
7 | SessionServ.onChange(function () { | 7 | SessionServ.onChange(function () { |
8 | $scope.session = SessionServ.cur; | 8 | $scope.session = SessionServ.cur; |
9 | + actualiser(); | ||
9 | }); | 10 | }); |
11 | + actualiser(); | ||
10 | 12 | ||
11 | - if ($scope.session) { | ||
12 | - ApiServ("récupération des préférence Nuit de l'Info", 'get', 'profile/ninfo', null, function (err, ninfo) { | ||
13 | - if (!err) | ||
14 | - $scope.ninfo = ninfo; | ||
15 | - }); | ||
16 | - ApiServ("récupération de la liste des participants à Nuit de l'Info", 'get', 'ninfo', null, function (err, equipes) { | ||
17 | - if (!err) | ||
18 | - $scope.equipes = equipes; | ||
19 | - }); | 13 | + function actualiser() { |
14 | + if ($scope.session) { | ||
15 | + ApiServ("récupération des préférence Nuit de l'Info", 'get', 'profile/ninfo', null, function (err, ninfo) { | ||
16 | + if (!err) | ||
17 | + $scope.ninfo = ninfo; | ||
18 | + }); | ||
19 | + ApiServ("récupération de la liste des participants à Nuit de l'Info", 'get', 'ninfo', null, function (err, equipes) { | ||
20 | + if (!err) | ||
21 | + $scope.equipes = equipes; | ||
22 | + }); | ||
23 | + } | ||
20 | } | 24 | } |
21 | 25 | ||
22 | $scope.save = function () { | 26 | $scope.save = function () { |
23 | var not = NotifyServ.promise("Sauvegarde..."); | 27 | var not = NotifyServ.promise("Sauvegarde..."); |
24 | $scope.saving = true; | 28 | $scope.saving = true; |
25 | ApiServ("sauvegarde des préférences Nuit de l'Info", 'put', 'profile/ninfo', $scope.ninfo, function (err, membre) { | 29 | ApiServ("sauvegarde des préférences Nuit de l'Info", 'put', 'profile/ninfo', $scope.ninfo, function (err, membre) { |
26 | - if (!err) | 30 | + if (!err) { |
31 | + actualiser(); | ||
27 | not.success("Sauvegardé !"); | 32 | not.success("Sauvegardé !"); |
33 | + } | ||
28 | $scope.saving = false; | 34 | $scope.saving = false; |
29 | }); | 35 | }); |
30 | }; | 36 | }; |
public/views/ninfo.html
@@ -31,7 +31,7 @@ | @@ -31,7 +31,7 @@ | ||
31 | 31 | ||
32 | <div ng-show="session"> | 32 | <div ng-show="session"> |
33 | <h2>Je souhaite participer à la Nuit de l'Info</h2> | 33 | <h2>Je souhaite participer à la Nuit de l'Info</h2> |
34 | - <form ng-hide="ninfo.equipe == 'ima5'"> | 34 | + <form ng-show="session.enCours && ninfo.equipe != 'ima5'"> |
35 | <p>Ça c'est cool ! On a juste deux petites questions à te poser.</p> | 35 | <p>Ça c'est cool ! On a juste deux petites questions à te poser.</p> |
36 | <div class="form-group"> | 36 | <div class="form-group"> |
37 | <label for="equipe">Dans quelle équipe souhaites-tu participer ?</label><br/> | 37 | <label for="equipe">Dans quelle équipe souhaites-tu participer ?</label><br/> |
@@ -47,9 +47,16 @@ | @@ -47,9 +47,16 @@ | ||
47 | </div> | 47 | </div> |
48 | <button type="submit" ladda="saving" class="btn btn-primary" ng-click="save()">Enregistrer les préférences</button> | 48 | <button type="submit" ladda="saving" class="btn btn-primary" ng-click="save()">Enregistrer les préférences</button> |
49 | </form> | 49 | </form> |
50 | + | ||
50 | <p ng-show="ninfo.equipe == 'ima5'"> | 51 | <p ng-show="ninfo.equipe == 'ima5'"> |
51 | Tu es déjà inscrit dans l'équipe des IMA5 (référent : <a href="mailto:jwasilew@polytech-lille.net">Jean Wasilewski</a>) ! Enjoy ;) | 52 | Tu es déjà inscrit dans l'équipe des IMA5 (référent : <a href="mailto:jwasilew@polytech-lille.net">Jean Wasilewski</a>) ! Enjoy ;) |
52 | </p> | 53 | </p> |
54 | + | ||
55 | + <p ng-hide="session.enCours"> | ||
56 | + Seuls les étudiants avec une année en cours peuvent participer. Vous ne pouvez donc pas vous inscrire.<br/> | ||
57 | + Si vous pensez que c'est une erreur, merci d'envoyer <a href="mailto:cinforma@polytech-lille.net">un mail au Club Info</a>. | ||
58 | + </p> | ||
59 | + | ||
53 | <h2>Participants à la Nuit de l'Info</h2> | 60 | <h2>Participants à la Nuit de l'Info</h2> |
54 | <h3>Équipe Informatiquement Vôtre <span class="badge">{{ equipes.ci.length }}</span></h3> | 61 | <h3>Équipe Informatiquement Vôtre <span class="badge">{{ equipes.ci.length }}</span></h3> |
55 | <div class="panel panel-default" ng-repeat="membre in equipes.ci"> | 62 | <div class="panel panel-default" ng-repeat="membre in equipes.ci"> |