source: WAeUP_SRP/trunk/skins/waeup_student/searchStudents.py @ 603

Last change on this file since 603 was 603, checked in by Henrik Bettermann, 18 years ago

batch of fixes to open the frontend for the first time

File size: 4.6 KB
RevLine 
[565]1## Script (Python) "cpsdocument_edit"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
[584]7##parameters=
[565]8##title=
9##
10# $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $
11"""
12return Info about the current Student
13"""
[589]14#from Products.ZCTextIndex.QueryParser import ParseError,QueryError
[565]15request = context.REQUEST
16form = request.form
17fget = form.get
[572]18info = {}
[565]19wf = context.portal_workflow
[572]20catalog = context.portal_catalog
21student_wf_states = wf.waeup_student_wf.states.keys()
22info['wf_states'] = student_wf_states
23info['wf_states'][0] = " ----- "
[584]24lt = context.portal_layouts
25pr = context.portal_registration
[565]26path_info = request.get('PATH_INFO').split('/')
[603]27is_manager = context.isManager
[584]28validate = request.has_key("cpsdocument_edit_button")
29items = []
[603]30default = {'search_mode': 'name',
31        'review_state': 'created',
[587]32        'search_string': ''
[584]33        }
[603]34
[584]35rend,psm,ds = lt.renderLayout(layout_id= 'student_search',
36                      schema_id= 'student_search',
37                      context=context,
38                      mapping=validate and request,
39                      ob=default,
40                      layout_mode='edit',
41                      formaction="searchStudents"
42                      )
43if psm == '':
44    return context.students_manager_view(rendered = rend,
45                             psm = psm,
46                             #psm = "%s, %s" % (psm,ds),
47                             students = items,
48                             is_manager = is_manager,
49                             )
50what = ds.get('search_mode')
51state = ds.get('review_state')
52term = ds.get('search_string')
[589]53err = False
[599]54with_review = state != "all"
55if not term and not with_review:
[603]56    psm = "You must specify a search string when searching 'all states'."
[589]57    err = True
58elif '*' in term:
[596]59    psm = "you cannot use the '*' alone"
[589]60    err = True
[603]61if err:
[587]62    return context.students_manager_view(rendered = rend,
[589]63                             psm = psm,
[587]64                             #psm = "%s, %s" % (psm,ds),
65                             students = items,
66                             is_manager = is_manager,
67                             )
[596]68with_review = state != "all"
[572]69items = []
70res = []
71portal_type_query = {'query':['Student','StudentApplication','StudentPersonal']}
[603]72st_queries = ('jamb_reg_no','matric_no','name')
[599]73onlyreview = with_review and not term
[572]74if onlyreview:
75    res = catalog(portal_type=portal_type_query,
76                  review_state=state)
[584]77elif what == "student_id":
[596]78    if with_review:
79        res = catalog(portal_type='Student',
80                      id = term.strip(),
81                      review_state=state)
82    else:
83        res = catalog(portal_type='Student',
84                      id = term.strip())
[603]85elif what in st_queries:
86    if what == "jamb_reg_no":
[589]87        pt = 'StudentApplication'
88        st = "%s*" % term.strip().lower()
89    elif what == "matric_no":
90        pt = 'StudentClearance'
91        st = "%s*" % term.strip().lower()
92    elif what == "name":
93        pt = portal_type_query
94        st = "%s*" % term.strip()
[596]95    if with_review:
96        try:
97            res = catalog(portal_type=pt,SearchableText=st,
98                          review_state=state)
99        except:
100            return context.students_manager_view(rendered = rend,
[603]101                                 psm = 'Search string "%s" not allowed.' % term,
[596]102                                 #psm = "%s, %s" % (psm,ds),
103                                 students = items,
104                                 is_manager = is_manager,
105                                 )
106    else:
107        try:
108            res = catalog(portal_type=pt,SearchableText=st,)
109        except:
110            return context.students_manager_view(rendered = rend,
111                                 psm = 'Searchstring "%s" not allowed' % term,
112                                 #psm = "%s, %s" % (psm,ds),
113                                 students = items,
114                                 is_manager = is_manager,
115                                 )
[603]116
[572]117if res:
118    for r in res:
119        if r.portal_type in ("StudentApplication","StudentPersonal"):
[589]120            student = r.getObject().aq_parent
[572]121        else:
[589]122            student = r.getObject()
123        if student not in items:
124            items.append(student)
[584]125students = []
126if items:
127    for item in items:
128        students.append(context.getStudentInfo(item))
129return context.students_manager_view(rendered = rend,
130                             psm = "%d matching Students found" % len(items),
131                             #psm = "%s, %s" % (psm,ds),
132                             students = students,
133                             is_manager = is_manager,
134                             )
Note: See TracBrowser for help on using the repository browser.