diff --git a/ZAbsences.py b/ZAbsences.py
index 52a68c6a2..a82208d6f 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 5efd9df93..b3068e834 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 b55f0b648..e25ec0a14 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