Changeset 3022 for WAeUP_SRP


Ignore:
Timestamp:
14 Jan 2008, 17:58:33 (17 years ago)
Author:
joachim
Message:

new improved version of search students

Location:
WAeUP_SRP
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/base/skins/waeup_student/search_students.py

    r3013 r3022  
    4141except:
    4242    aq_portal = context.portal_catalog_real.evalAdvancedQuery
     43students_catalog = context.students_catalog
    4344aq_students = context.students_catalog.evalAdvancedQuery
    4445
     
    189190review_set = []
    190191search_set = []
     192query = None
    191193if len(term) > 0:
    192194    if what == "student_id":
     
    201203                             )
    202204    elif what == "department":
    203         res = context.students_catalog(department=term.strip())
     205        query = Eq('department', term.strip())
    204206        logger.info('%s searches for student in department %s' % (member,term))
    205         search_set = [r.id for r in res]
     207        # res = context.students_catalog(department=term.strip())
     208        # logger.info('%s searches for student in department %s' % (member,term))
     209        # search_set = [r.id for r in res]
    206210    elif what == "matric_no":
    207         res = context.students_catalog(matric_no=term.strip())
     211        query = Eq('matric_no', term.strip())
    208212        logger.info('%s searches for student with matric_no %s' % (member,term))
    209         search_set = [r.id for r in res]
     213        # res = context.students_catalog(matric_no=term.strip())
     214        # logger.info('%s searches for student with matric_no %s' % (member,term))
     215        # search_set = [r.id for r in res]
    210216    elif what == "jamb_reg_no":
    211217        st_l = "%s" % term.strip().lower()
    212218        st_u = "%s" % term.strip().upper()
    213         res = aq_students(In('jamb_reg_no',(st_l,st_u)))
     219        query = In('jamb_reg_no',(st_l,st_u))
    214220        logger.info('%s searches for student with jamb_reg_no %s' % (member,term))
    215         search_set = [r.id for r in res]
     221        # res = aq_students(In('jamb_reg_no',(st_l,st_u)))
     222        # logger.info('%s searches for student with jamb_reg_no %s' % (member,term))
     223        # search_set = [r.id for r in res]
    216224    elif what == "name":
    217225        if len(term) < 4:
     
    221229                                                allowed = allowed,
    222230                                               )
    223         pt = ('StudentPersonal')
    224         query = In('portal_type',pt) & Eq('SearchableText',"%s*" % term.strip())
     231        # pt = ('StudentPersonal')
     232        # query = In('portal_type',pt) & Eq('SearchableText',"%s*" % term.strip())
     233        # logger.info('%s searches for student with name %s' % (member,term))
     234        # res = aq_portal(query)
     235        # if res:
     236        #     for r in res:
     237        #         pl = r.getPath().split('/')
     238        #         search_set.append(pl[pl.index('students') + 1])
     239        query = Eq('name',"%s*" % term.strip())
    225240        logger.info('%s searches for student with name %s' % (member,term))
    226         res = aq_portal(query)
    227         if res:
    228             for r in res:
    229                 pl = r.getPath().split('/')
    230                 search_set.append(pl[pl.index('students') + 1])
     241        # res = aq_students(query)
     242        # if res:
     243        #     for r in res:
     244        #         search_set += r.id,
    231245
    232246if only_review or with_review or co_view:
     
    234248    #review_res = aq_portal(query)
    235249    #review_res = context.portal_catalog(review_state = state)
    236 
    237     query = Eq('review_state',state)
    238     review_res = aq_students(query)
     250    if query is not None:
     251        query = Eq('review_state',state) & query
     252    else:
     253        query = Eq('review_state',state)
     254    #review_res = aq_students(query)
    239255    logger.info('%s searches for students in review_state %s' % (member,state))
    240256
     
    242258    only_review = False
    243259    with_review = True
    244     query = In('faculty',faculties) | In('department',departments)
    245     res = aq_students(query)
    246     search_set = [r.id for r in res]
     260    if query is not None:
     261        query = query & In('faculty',faculties) | In('department',departments)
     262    else:
     263        query = In('faculty',faculties) | In('department',departments)
     264    # res = aq_students(query)
     265    # search_set.extend([r.id for r in res])
    247266elif ca_view:
    248267    only_review = False
     
    250269    courses = [cl.split('/')[0] for cl in certificate_levels]
    251270    levels = [cl.split('/')[1] for cl in certificate_levels]
    252     query = In('course',courses) & In('level',levels)
    253     res = aq_students(query)
    254     search_set = [r.id for r in res]
    255 if review_res:
    256     review_set = [r.id for r in review_res]
    257 
    258 #from Products.zdb import set_trace;set_trace()
    259 
    260 if only_review:
    261     all = review_set
    262 elif with_review:
    263     all = []
    264     for i in search_set:
    265         if i in review_set:
    266             all.append(i)
    267 else:
    268     all = search_set
    269 
    270 items = all[:500]
     271    if query is not None:
     272        query = query & In('course',courses) & In('level',levels)
     273    # res = aq_students(query)
     274    # search_set.extend([r.id for r in res])
     275
     276# if review_res:
     277    # review_set = [r.id for r in review_res]
     278
     279# if only_review:
     280    # all = review_set
     281# elif with_review:
     282    # all = []
     283    # for i in search_set:
     284    #     if i in review_set:
     285    #         all.append(i)
     286# else:
     287    # all = search_set
     288   
     289# res = aq_students(query)
     290# all = [r.id for r in res]
     291
     292# items = all[:500]
     293# students = []
     294# if items:
     295#     for item in items:
     296#         students_catalog = context.students_catalog
     297#         record = students_catalog(id = item)
     298#         if record:
     299#             record = record[0]
     300#         else:
     301#             return item+' not found in students_catalog'
     302#         info = {}
     303#         for field in students_catalog.schema() + students_catalog.indexes():
     304#             info[field] = getattr(record, field)
     305#         else:
     306#             students.append(info)
     307#     return context.search_students_form(rendered = rend,
     308#                              psm = "",
     309#                              info = user_info,
     310#                              students = students,
     311#                              allowed = allowed,
     312#                              co_view = co_view,
     313#                              ca_view = ca_view
     314#                              )
     315student_records = aq_students(query)
    271316students = []
    272 if items:
    273     for item in items:
    274         stcat = context.students_catalog
    275         record = stcat(id = item)
    276         if record:
    277             record = record[0]
    278         else:
    279             return item+' not found in students_catalog'
     317if student_records:
     318    for student_record in student_records:
    280319        info = {}
    281         for field in stcat.schema() + stcat.indexes():
    282             info[field] = getattr(record, field)
     320        for field in students_catalog.schema() + students_catalog.indexes():
     321            info[field] = getattr(student_record, field)
    283322        else:
    284323            students.append(info)
  • WAeUP_SRP/uniben/waeup_custom/search_students_form.pt

    r2847 r3022  
    11<metal:body use-macro="here/main_template/macros/master">
    2     <metal:main fill-slot="main"
    3             tal:define="rendered options/rendered;
    4             portal_status_message options/psm;
    5             students options/students;
    6             info options/info|nothing;
    7             is_so context/isSectionOfficer;
    8             allowed options/allowed|nothing;"
    9             >
    10       <span tal:condition="not: allowed">
    11         <span tal:content="here/illegal_view" />
    12       </span>
    13       <span tal:condition="allowed" tal:omit-tag="">
    14      
     2  <metal:main fill-slot="main"
     3              tal:define="rendered options/rendered;
     4              portal_status_message options/psm;
     5              students options/students;
     6              info options/info|nothing;
     7              is_so context/isSectionOfficer;
     8              allowed options/allowed|nothing;"
     9              >
     10    <span tal:condition="not: allowed">
     11      <span tal:content="here/illegal_view" />
     12    </span>
     13    <span tal:condition="allowed" tal:omit-tag="">
    1514      <strong>
    16       <nobr><a href="statistics_new_view">New Student Statistics</a>
    17       &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
    18       <nobr><a href="statistics_ret_view">Returning Student Statistics</a>
    19       &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
    20       <nobr><a href="statistics_simple_view">Basic Student Statistics</a>
    21       &nbsp;&nbsp;&nbsp;&nbsp;</nobr>     
    22  
    23       <span tal:condition="is_so">
     15        <nobr><a href="statistics_new_view">New Student Statistics</a>
     16        &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
     17        <nobr><a href="statistics_ret_view">Returning Student Statistics</a>
     18        &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
     19        <nobr><a href="statistics_simple_view">Basic Student Statistics</a>
     20        &nbsp;&nbsp;&nbsp;&nbsp;</nobr>     
     21        <span tal:condition="is_so">
    2422          <nobr><a href="apply_admission_manage">Application Process</a>
    2523          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>     
     
    2826          <nobr><a href="add_student">Add Student Record</a>       
    2927          &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
    30           <nobr><a href="deactivate_students">Deactivate Student Record(s)</a>           
     28          <nobr><a href="deactivate_students">Deactivate Student Record(s)</a></nobr>
     29        </span>
     30      </strong>
     31      <h3> Search Student Section</h3><br />
     32      You are logged in as member <span tal:replace="info/member|nothing" />
     33      <span tal:condition="info/faculties|nothing" tal:omit-tag="">
     34        who is ClearanceOfficer for Faculty
     35        <span tal:repeat="faculty info/faculties" tal:content="faculty" />
    3136      </span>
    32       </strong>
    33    
    34              
    35         <h3> Search Student Section</h3><br />
    36           You are logged in as member <span tal:replace="info/member|nothing" />
    37           <span tal:condition="info/faculties|nothing" tal:omit-tag="">
    38             who is ClearanceOfficer for Faculty
    39             <span tal:repeat="faculty info/faculties" tal:content="faculty" />
    40           </span>
    41           <span tal:condition="info/departments|nothing" tal:omit-tag="">
    42             and <span tal:repeat="department info/departments|nothing" tal:content="department"/></span>.
    43           <br /><br />
    44         <span tal:replace="structure rendered" />
    45         <span tal:condition="students">
    46           <span
    47               tal:define="items students;
    48               columns python:3;
    49               items_per_page python:40;
    50               max_items python:300;
    51               zoom python:0;
    52               batches_all python:here.getBatchList(items,columns, items_per_page,zoom,max_items=400);
    53               batches python:batches_all[0];
    54               batch_info python:batches_all[1];
    55               zoomed python:batches_all[2];
    56               mq nocall:modules/ZTUtils/make_query;"
    57               tal:omit-tag=""
     37      <span tal:condition="info/departments|nothing" tal:omit-tag="">
     38        and <span tal:repeat="department info/departments|nothing" tal:content="department"/></span>.
     39      <br /><br />
     40      <span tal:replace="structure rendered" />
     41      <metal:block use-macro="here/generic_lib_portal_message/macros/portal_message" />
     42      <span tal:condition="students">
     43        <span tal:define="items students;
     44        columns python:3;
     45        items_per_page python:40;
     46        max_items python:300;
     47        zoom python:0;
     48        batches_all python:here.getBatchList(items,columns, items_per_page,zoom,max_items=400);
     49        batches python:batches_all[0];
     50        batch_info python:batches_all[1];
     51        zoomed python:batches_all[2];
     52        mq nocall:modules/ZTUtils/make_query;"
     53        tal:omit-tag="">
     54          <tal:block tal:condition="python: items and batch_info and batch_info['nb_pages'] > 1">
     55            <div class="batchLayout" i18n:translate="">
     56              Objects:<strong><tal:block replace="batch_info/start"
     57                                         i18n:name="batch_start" /> - <tal:block replace="batch_info/limit"
     58                                                                                 i18n:name="batch_limit" />
     59              </strong> of <tal:block replace="batch_info/length" i18n:name="batch_length" />
     60            </div>
     61            <br />
     62          </tal:block>
     63          <table class="contentListing" width="100%">
     64            <span tal:repeat="rows batches" tal:omit-tag="">
     65              <span tal:repeat="student rows">
     66                <tr tal:condition="student"
     67                    tal:attributes="class python:test(repeat['student'].even(), 'even ajaxtd', 'odd ajaxtd')">
     68                  <td><a href="id" tal:attributes="href string:${context/portal_url}/campus/students/${student/id}"
     69                         tal:content="student/id"></a></td>   
     70                  <td>
     71                    <span tal:replace="student/name" />
     72                  </td>   
     73                  <td><span tal:replace="student/matric_no" /></td>   
     74                  <td><span tal:replace="student/jamb_reg_no" /></td>
     75                  <td tal:condition="options/co_view|nothing">
     76                    <a href="id"
     77                       tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/clearance/external_clearance_edit_form"
     78                       target="edit"
     79                       onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
     80                       >[view and change state]</a></td>
     81                  <td tal:condition="options/ca_view|nothing">
     82                    <a href="id"
     83                       tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/study_course/study_course/${student/level}/external_study_level_view"
     84                       target="edit"
     85                       onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
     86                       >[view and validate course list]</a></td>
     87                </tr>
     88              </span>
     89            </span>
     90          </table>
     91          <tal:block condition="python:batch_info and batch_info['nb_pages'] > 1">
     92            <div class="pageNavigationLayout">
     93              <a tal:define="previous batch_info/previous"
     94                 tal:condition="python:previous is not None"
     95                 tal:attributes="href python:'%s?%s'%(request['URL'],
     96                 mq(request.form, b_start=0))"
     97                 >
     98              (&lt;&lt;)</a>
     99              <a tal:define="previous batch_info/previous"
     100                 tal:condition="python:previous is not None"
     101                 tal:attributes="href python:'%s?%s'%(request['URL'],
     102                 mq(request.form, b_start=previous))"
     103                 i18n:translate="batch_previous">Previous</a>
     104              <tal:block repeat="page batch_info/pages">
     105                <tal:block condition="python:page != batch_info['start'] - 1">
     106                  <a tal:attributes="href python:'%s?%s'%(request['URL'],
     107                  mq(request.form, b_start=page))"
     108                  tal:content="repeat/page/number">1</a>&nbsp;
     109                </tal:block>
     110                <tal:block condition="python:page == batch_info['start'] - 1">
     111                  <span tal:content="string:${repeat/page/number}" />&nbsp;
     112                </tal:block>
     113              </tal:block>
     114              <a tal:define="next batch_info/next"
     115                 tal:condition="python:next is not None"
     116                 tal:attributes="href python:'%s?%s'%(request['URL'],
     117                 mq(request.form, b_start=next))"
     118                 i18n:translate="batch_next">Next</a>
     119              <a tal:define="next batch_info/next;
     120              last_page python:batch_info['pages'][-1]"
     121              tal:condition="python:next is not None"
     122              tal:attributes="href python:'%s?%s'%(request['URL'],
     123              mq(request.form, b_start=last_page))"
    58124              >
    59             <tal:block tal:condition="python: items and batch_info and batch_info['nb_pages'] > 1">
    60               <div class="batchLayout">
    61                 <span i18n:translate="">
    62                   Objects:
    63                   <strong>
    64                     <tal:block replace="batch_info/start"
    65                                i18n:name="batch_start" /> - <tal:block replace="batch_info/limit"
    66                                                                        i18n:name="batch_limit" />
    67                   </strong>
    68                   of <tal:block replace="batch_info/length"
    69                                 i18n:name="batch_length" />
    70                 </span>
    71               </div>
    72               <br />
    73             </tal:block>
    74             <table class="contentListing" width="100%">
    75               <span tal:repeat="rows batches" tal:omit-tag="">
    76                 <span tal:repeat="student rows">
    77                   <tr tal:condition="student"
    78                       tal:attributes="class python:test(repeat['student'].even(), 'even ajaxtd', 'odd ajaxtd')">
    79                     <td><a href="id" tal:attributes="href string:${context/portal_url}/campus/students/${student/id}"
    80                            tal:content="student/id"></a></td>   
    81                     <td>
    82                       <span tal:replace="student/name" />
    83                     </td>   
    84                     <td><span tal:replace="student/matric_no" /></td>   
    85                     <td><span tal:replace="student/jamb_reg_no" /></td>
    86                     <td tal:condition="options/co_view|nothing">
    87                       <a href="id"
    88                          tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/clearance/external_clearance_edit_form"
    89                          target="edit"
    90                          onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
    91                          >[view and change state]</a></td>
    92                     <td tal:condition="options/ca_view|nothing">
    93                       <a href="id"
    94                          tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/study_course/study_course/${student/level}/external_study_level_view"
    95                          target="edit"
    96                          onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
    97                          >[view and validate course list]</a></td>
    98                   </tr>
    99                 </span>
    100               </span>
    101             </table>
    102             <tal:block condition="python:batch_info and batch_info['nb_pages'] > 1">
    103               <div class="pageNavigationLayout">
    104                 <a tal:define="previous batch_info/previous"
    105                    tal:condition="python:previous is not None"
    106                    tal:attributes="href python:'%s?%s'%(request['URL'],
    107                    mq(request.form, b_start=0))"
    108                    >
    109                 (&lt;&lt;)</a>
    110                 <a tal:define="previous batch_info/previous"
    111                    tal:condition="python:previous is not None"
    112                    tal:attributes="href python:'%s?%s'%(request['URL'],
    113                    mq(request.form, b_start=previous))"
    114                    i18n:translate="batch_previous">Previous</a>
    115                 <tal:block repeat="page batch_info/pages">
    116                   <tal:block condition="python:page != batch_info['start'] - 1">
    117                     <a tal:attributes="href python:'%s?%s'%(request['URL'],
    118                     mq(request.form, b_start=page))"
    119                     tal:content="repeat/page/number">1</a>&nbsp;
    120                   </tal:block>
    121                   <tal:block condition="python:page == batch_info['start'] - 1">
    122                     <span tal:content="string:${repeat/page/number}" />&nbsp;
    123                   </tal:block>
    124                 </tal:block>
    125                 <a tal:define="next batch_info/next"
    126                    tal:condition="python:next is not None"
    127                    tal:attributes="href python:'%s?%s'%(request['URL'],
    128                    mq(request.form, b_start=next))"
    129                    i18n:translate="batch_next">Next</a>
    130                 <a tal:define="next batch_info/next;
    131                 last_page python:batch_info['pages'][-1]"
    132                 tal:condition="python:next is not None"
    133                 tal:attributes="href python:'%s?%s'%(request['URL'],
    134                 mq(request.form, b_start=last_page))"
    135                 >
    136                 (&gt;&gt;)</a>
    137               </div>
    138             </tal:block>
    139           </span>
     125              (&gt;&gt;)</a>
     126            </div>
     127          </tal:block>
    140128        </span>
    141129      </span>
    142     </metal:main>
     130    </span>
     131  </metal:main>
    143132</metal:body>
    144  
Note: See TracChangeset for help on using the changeset viewer.