diff --git a/ZAbsences.py b/ZAbsences.py index 52a68c6a..a82208d6 100644 --- a/ZAbsences.py +++ b/ZAbsences.py @@ -1313,7 +1313,7 @@ class ZAbsences( if with_evals: a["exams"] = descr_exams(a) a["datedmy"] = a["jour"].strftime("%d/%m/%Y") - a["matin_o"] = int(a["matin"]) + a["ampm"] = int(a["matin"]) a["matin"] = matin(a["matin"]) index = a["description"].find(")") if index != -1: @@ -1328,7 +1328,7 @@ class ZAbsences( a["justlink"] = "justifier" a["_justlink_target"] = ( "doJustifAbsence?etudid=%s&datedebut=%s&datefin=%s&demijournee=%s" - % (etudid, a["datedmy"], a["datedmy"], a["matin_o"]) + % (etudid, a["datedmy"], a["datedmy"], a["ampm"]) ) # titles = { @@ -1340,6 +1340,8 @@ class ZAbsences( "motif": "Motif", } columns_ids = ["datedmy", "matin"] + if format in ("json", "xml"): + columns_ids += ["jour", "ampm"] if with_evals: columns_ids.append("exams") @@ -1433,7 +1435,7 @@ class ZAbsences( gr_tit = p + h title = "Etat des absences %s" % gr_tit - if format == "xls" or format == "xml": + if format == "xls" or format == "xml" or format == "json": columns_ids = ["etudid"] + columns_ids tab = GenTable( columns_ids=columns_ids, diff --git a/ZNotes.py b/ZNotes.py index 5efd9df9..b3068e83 100644 --- a/ZNotes.py +++ b/ZNotes.py @@ -191,15 +191,13 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl # Affecte aussi cache inscriptions self.get_formsemestre_inscription_cache().inval_cache( key=formsemestre_id - ) # > + ) else: self._getNotesCache().inval_cache( self, formsemestre_id=formsemestre_id, pdfonly=pdfonly - ) # > + ) # Affecte aussi cache inscriptions - self.get_formsemestre_inscription_cache().inval_cache( - key=formsemestre_id - ) # > + self.get_formsemestre_inscription_cache().inval_cache(key=formsemestre_id) security.declareProtected(ScoView, "clearcache") @@ -1816,18 +1814,19 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl security.declareProtected(ScoView, "do_formsemestre_inscription_listinscrits") - def do_formsemestre_inscription_listinscrits(self, formsemestre_id): + def do_formsemestre_inscription_listinscrits( + self, formsemestre_id, format=None, REQUEST=None + ): """Liste les inscrits (état I) à ce semestre et cache le résultat""" cache = self.get_formsemestre_inscription_cache() r = cache.get(formsemestre_id) - if r != None: - return r - # retreive list - r = self.do_formsemestre_inscription_list( - args={"formsemestre_id": formsemestre_id, "etat": "I"} - ) - cache.set(formsemestre_id, r) - return r + if r is None: + # retreive list + r = self.do_formsemestre_inscription_list( + args={"formsemestre_id": formsemestre_id, "etat": "I"} + ) + cache.set(formsemestre_id, r) + return scu.sendResult(REQUEST, r, format=format, name="inscrits") security.declareProtected(ScoImplement, "do_formsemestre_inscription_edit") @@ -1840,7 +1839,7 @@ class ZNotes(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Impl ) # > modif inscription semestre (demission ?) # Cache inscriptions semestres - def get_formsemestre_inscription_cache(self): + def get_formsemestre_inscription_cache(self, format=None): u = self.GetDBConnexionString() if CACHE_formsemestre_inscription.has_key(u): return CACHE_formsemestre_inscription[u] diff --git a/ZScoDoc.py b/ZScoDoc.py index b55f0b64..e25ec0a1 100644 --- a/ZScoDoc.py +++ b/ZScoDoc.py @@ -283,10 +283,26 @@ class ZScoDoc(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp security.declareProtected("View", "list_depts") - def list_depts(self, REQUEST=None): - """List departments folders - (returns a list of Zope folders containing a ZScolar instance) + def list_depts(self, viewable=True, format=None, REQUEST=None): + """List departments + If viewable, list only depts viewable the current user. """ + authuser = REQUEST.AUTHENTICATED_USER + viewable = int(viewable) + return scu.sendResult( + REQUEST, + [ + d.id + for d in self._list_depts() + if (not viewable) or authuser.has_permission(ScoView, d.Scolarite) + ], + name="depts", + format=format, + ) + + def _list_depts(self, REQUEST=None): # not published + # List departments folders + # (returns a list of Zope folders containing a ZScolar instance) folders = self.objectValues("Folder") # select folders with Scolarite object: r = [] @@ -337,7 +353,7 @@ class ZScoDoc(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp if e: return e - if not force and DeptId not in [x.id for x in self.list_depts()]: + if not force and DeptId not in [x.id for x in self._list_depts()]: raise ValueError("nom de departement invalide") self.manage_delObjects(ids=[DeptId]) @@ -401,7 +417,7 @@ class ZScoDoc(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp def index_html(self, REQUEST=None, message=None): """Top level page for ScoDoc""" authuser = REQUEST.AUTHENTICATED_USER - deptList = self.list_depts() + deptList = self._list_depts() self._fix_users_folder() # fix our exUserFolder isAdmin = not self._check_admin_perm(REQUEST) try: @@ -416,7 +432,7 @@ class ZScoDoc(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp # Si l'URL indique que l'on est dans un folder, affiche page login du departement try: deptfoldername = REQUEST.URL0.split("ScoDoc")[1].split("/")[1] - if deptfoldername in [x.id for x in self.list_depts()]: + if deptfoldername in [x.id for x in self._list_depts()]: return self.index_dept(deptfoldername=deptfoldername, REQUEST=REQUEST) except: pass @@ -463,7 +479,7 @@ class ZScoDoc(ObjectManager, PropertyManager, RoleManager, Item, Persistent, Imp dest_folder = "/Scolarite" else: dest_folder = "" - for deptFolder in self.list_depts(): + for deptFolder in self._list_depts(): if authuser.has_permission(ScoView, deptFolder.Scolarite): link_cls = "link_accessible" else: @@ -875,7 +891,7 @@ Agent: %(HTTP_USER_AGENT)s % self.absolute_url(), ] - deptList = [x.id for x in self.list_depts()] # definis dans Zope + deptList = [x.id for x in self._list_depts()] # definis dans Zope deptIds = set(self._list_depts_ids()) # definis sur le filesystem existingDepts = set(deptList) addableDepts = deptIds - existingDepts @@ -904,7 +920,7 @@ Agent: %(HTTP_USER_AGENT)s