diff --git a/serveur/ServeurFonctions.py b/serveur/ServeurFonctions.py index 08c06e1b3ad467323e89915264daa3b201d59d25..bd7bbd132b9bada6898054699bef7e6fd6bc0704 100644 --- a/serveur/ServeurFonctions.py +++ b/serveur/ServeurFonctions.py @@ -2869,7 +2869,6 @@ def get_activites(self, data): * ``m`` : renvoie seulement les activités soumises par l'utilisateur courant (donne du coup accès aux non validées). * ``A`` : administration (affiche aussi les activités non validées) (``A`` écrase ``m``) * ``o`` : renvoie aussi les activités passées de l'année en cours. (par défaut, donne seulement les activités ``debut>now()``) (``o`` écrase ``A``) - * ``i```: renvoie seulement les activités ayant une liste d'invités Les flags A et o nécessitent les droits activites_admin @@ -2888,13 +2887,15 @@ def get_activites(self, data): else: _badparam(self, u"get_activites") return - ask_old, mine, ask_admin, invites = "o" in flags, "m" in flags, "A" in flags, "i" in flags + ask_old, mine, ask_admin = "o" in flags, "m" in flags, "A" in flags isadmin = ask_admin and self._has_acl("activites_admin") - isold = ask_old and self._has_acl("activites_admin") + isold = ask_old and self._has_acl("activites_admin") if isold: - time_clause = "debut>date_trunc('year', now())" + time_clause = "fin < now()" + sens = "DESC;" else: time_clause = "fin > now()" + sens = " ASC;" if isadmin: # l'administration des activités demande plus de droits condition_clause = "true" elif mine and (self.userid != "special") and self._myself(): @@ -2903,15 +2904,13 @@ def get_activites(self, data): condition_clause = "responsable = %(userid)s" else: condition_clause = "validepar IS NOT NULL" # par défaut, validepar est à NULL - if invites: - condition_clause += " AND liste" if (term == ""): search_clause = "extract(year FROM debut)>=extract(year FROM now())" else: search_clause = "(titre ILIKE '%%%(term)s%%' OR description ILIKE '%%%(term)s%%')" if self._has_acl("activites"): req = """SELECT activites.* - FROM activites WHERE """ + search_clause + " AND " + time_clause + " AND " + condition_clause + " ORDER BY debut;" + FROM activites WHERE """ + search_clause + " AND " + time_clause + " AND " + condition_clause + " ORDER BY debut " + sens con, cur = BaseFonctions.getcursor() cur.execute(req, {"userid": self.userid, "term": term}) l = [dict(i) for i in cur.fetchall()] @@ -2952,10 +2951,10 @@ def get_activite(self, data): return # On peut voir une activité si : # on est admin - # OU (elle n'est pas finie et est validée) + # OU (elle n'a pas commencée ET est validée) # OU (c'est la mienne ET j'ai accès à mon compte) can_see = (isadmin - or ((activite["fin"].timetuple() > time.localtime()) and (activite["validepar"] is not None)) + or ((activite["debut"].timetuple() > time.localtime()) and (activite["validepar"] is not None)) or self._myself(activite["responsable"]) ) if can_see: self._send(dict(activite))