## Script (Python) "getCoursesInfo" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=student=None ##title= ## # $Id: getCoursesInfo.py 1988 2007-07-05 11:14:12Z joachim $ """ return Info about the Faculties """ def cmpsemester(a,b): if a.semester == b.semester: return 0 if a.semester > b.semester: return 1 return -1 request = context.REQUEST wf = context.portal_workflow path_info = request.get('PATH_INFO').split('/') mtool = context.portal_membership info = {} dep_id = path_info[-2] #dep_id = context.aq_parent.getId() info['action'] = "%s" % context.absolute_url() info['choosen_ids'] = request.get('ids',[]) info['doc'] = context.getContent() # res = context.portal_catalog(meta_type="Department",id = dep_id) # info['courses'] = [] # if not res: # return info # brain = res[-1] # cp = brain.getPath() cp = '/'.join(path_info[:-2]) info['container_path'] = cp info['dep_id'] = dep_id res = context.courses_catalog(department=dep_id) items = [ brain for brain in res] items.sort(cmpsemester) rows = [] for r in items: row = {} code = getattr(r,'code',None) if code is None: continue ro = getattr(context,code) row['id'] = code row['title'] = r['title'] row['semester'] = r['semester'] row['url'] = "%s/%s" % (context.absolute_url(),code) row['review_state'] = wf.getInfoFor(ro,'review_state','None') row['is_editable'] = mtool.checkPermission('Modify portal content', ro) rows.append(row) #from Products.zdb import set_trace;set_trace() ##res = context.portal_catalog(container_path="%s/courses" % cp) ##items = [] ##for sem in ('1','2'): ## for r in res: ## row = {} ## ro = r.getObject() ## rd = ro.getContent() ## if rd.semester != sem: ## continue ## row['id'] = r.getId ## row['title'] = rd.Title() ## row['semester'] = rd.semester ## row['url'] = ro.absolute_url() ## row['review_state'] = wf.getInfoFor(ro,'review_state','None') ## row['is_editable'] = mtool.checkPermission('Modify portal content', ro) ## items.append(row) info['courses'] = rows return info