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
Line 
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
7##parameters=
8##title=
9##
10# $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $
11"""
12return Info about the current Student
13"""
14#from Products.ZCTextIndex.QueryParser import ParseError,QueryError
15request = context.REQUEST
16form = request.form
17fget = form.get
18info = {}
19wf = context.portal_workflow
20catalog = context.portal_catalog
21student_wf_states = wf.waeup_student_wf.states.keys()
22info['wf_states'] = student_wf_states
23info['wf_states'][0] = " ----- "
24lt = context.portal_layouts
25pr = context.portal_registration
26path_info = request.get('PATH_INFO').split('/')
27is_manager = context.isManager
28validate = request.has_key("cpsdocument_edit_button")
29items = []
30default = {'search_mode': 'name',
31        'review_state': 'created',
32        'search_string': ''
33        }
34
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')
53err = False
54with_review = state != "all"
55if not term and not with_review:
56    psm = "You must specify a search string when searching 'all states'."
57    err = True
58elif '*' in term:
59    psm = "you cannot use the '*' alone"
60    err = True
61if err:
62    return context.students_manager_view(rendered = rend,
63                             psm = psm,
64                             #psm = "%s, %s" % (psm,ds),
65                             students = items,
66                             is_manager = is_manager,
67                             )
68with_review = state != "all"
69items = []
70res = []
71portal_type_query = {'query':['Student','StudentApplication','StudentPersonal']}
72st_queries = ('jamb_reg_no','matric_no','name')
73onlyreview = with_review and not term
74if onlyreview:
75    res = catalog(portal_type=portal_type_query,
76                  review_state=state)
77elif what == "student_id":
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())
85elif what in st_queries:
86    if what == "jamb_reg_no":
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()
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,
101                                 psm = 'Search string "%s" not allowed.' % term,
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                                 )
116
117if res:
118    for r in res:
119        if r.portal_type in ("StudentApplication","StudentPersonal"):
120            student = r.getObject().aq_parent
121        else:
122            student = r.getObject()
123        if student not in items:
124            items.append(student)
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.