Changeset 9806 for main/waeup.kofa/trunk/src/waeup/kofa/students
- Timestamp:
- 17 Dec 2012, 08:06:52 (12 years ago)
- Location:
- main/waeup.kofa/trunk/src/waeup/kofa/students
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
r9804 r9806 52 52 FriendlyDatetimeDisplayWidget) 53 53 from waeup.kofa.mandates.mandate import PasswordMandate 54 from waeup.kofa.university.interfaces import ( 55 IDepartment, ICertificate, ICourse) 54 56 from waeup.kofa.university.department import ( 55 57 VirtualDepartmentExportJobContainer,) … … 67 69 IBedTicket, IStudentsUtils, IStudentRequestPW 68 70 ) 69 from waeup.kofa.students.catalog import search, Student sQuery71 from waeup.kofa.students.catalog import search, StudentQueryResultItem 70 72 from waeup.kofa.students.export import EXPORTER_NAMES 71 73 from waeup.kofa.students.studylevel import StudentStudyLevel, CourseTicket … … 2503 2505 return 2504 2506 2507 class FilterStudentsInDepartmentPage(KofaPage): 2508 """Page that filters and lists students. 2509 """ 2510 grok.context(IDepartment) 2511 grok.require('waeup.showStudents') 2512 grok.name('students') 2513 grok.template('filterstudentspage') 2514 pnav = 1 2515 session_label = _('in session') 2516 level_label = _('at level') 2517 2518 def label(self): 2519 return 'Students in %s ...' % self.context.longtitle() 2520 2521 def _set_session_values(self): 2522 vocab_terms = academic_sessions_vocab.by_value.values() 2523 self.sessions = sorted( 2524 [(x.title, x.token) for x in vocab_terms], reverse=True) 2525 self.sessions += [('All Sessions', 'all')] 2526 return 2527 2528 def _set_level_values(self): 2529 vocab_terms = course_levels.by_value.values() 2530 self.levels = sorted( 2531 [(x.title, x.token) for x in vocab_terms]) 2532 self.levels += [('All Levels', 'all')] 2533 return 2534 2535 def _searchCatalog(self, session, level): 2536 if level not in (10, 999, None): 2537 start_level = 100 * (level // 100) 2538 end_level = start_level + 90 2539 else: 2540 start_level = end_level = level 2541 cat = queryUtility(ICatalog, name='students_catalog') 2542 students = cat.searchResults( 2543 current_session=(session, session), 2544 current_level=(start_level, end_level), 2545 depcode=(self.context.code, self.context.code) 2546 ) 2547 hitlist = [] 2548 for student in students: 2549 hitlist.append(StudentQueryResultItem(student, view=self)) 2550 return hitlist 2551 2552 def update(self, SHOW=None, session=None, level=None): 2553 datatable.need() 2554 self.parent_url = self.url(self.context.__parent__) 2555 self._set_session_values() 2556 self._set_level_values() 2557 self.hitlist = [] 2558 self.session_default = session 2559 self.level_default = level 2560 if SHOW is not None: 2561 if session != 'all': 2562 self.session = int(session) 2563 self.session_string = '%s %s/%s' % ( 2564 self.session_label, self.session, self.session+1) 2565 else: 2566 self.session = None 2567 self.session_string = _('in any session') 2568 if level != 'all': 2569 self.level = int(level) 2570 self.level_string = '%s %s' % (self.level_label, self.level) 2571 else: 2572 self.level = None 2573 self.level_string = _('at any level') 2574 self.hitlist = self._searchCatalog(self.session, self.level) 2575 if not self.hitlist: 2576 self.flash(_('No student found.')) 2577 return 2578 2579 class FilterStudentsInCertificatePage(FilterStudentsInDepartmentPage): 2580 """Page that filters and lists students. 2581 """ 2582 grok.context(ICertificate) 2583 2584 def label(self): 2585 return 'Students studying %s ...' % self.context.longtitle() 2586 2587 def _searchCatalog(self, session, level): 2588 if level not in (10, 999, None): 2589 start_level = 100 * (level // 100) 2590 end_level = start_level + 90 2591 else: 2592 start_level = end_level = level 2593 cat = queryUtility(ICatalog, name='students_catalog') 2594 students = cat.searchResults( 2595 current_session=(session, session), 2596 current_level=(start_level, end_level), 2597 certcode=(self.context.code, self.context.code) 2598 ) 2599 hitlist = [] 2600 for student in students: 2601 hitlist.append(StudentQueryResultItem(student, view=self)) 2602 return hitlist 2603 2604 class FilterStudentsInCoursePage(FilterStudentsInDepartmentPage): 2605 """Page that filters and lists students. 2606 """ 2607 grok.context(ICourse) 2608 2609 def label(self): 2610 return 'Students registered for %s ...' % self.context.longtitle() 2611 2612 def _searchCatalog(self, session, level): 2613 if level not in (10, 999, None): 2614 start_level = 100 * (level // 100) 2615 end_level = start_level + 90 2616 else: 2617 start_level = end_level = level 2618 cat = queryUtility(ICatalog, name='coursetickets_catalog') 2619 coursetickets = cat.searchResults( 2620 session=(session, session), 2621 level=(start_level, end_level), 2622 code=(self.context.code, self.context.code) 2623 ) 2624 hitlist = [] 2625 for ticket in coursetickets: 2626 # XXX: If students have registered the same courses twice 2627 # they will be listed twice. 2628 hitlist.append(StudentQueryResultItem(ticket.student, view=self)) 2629 return hitlist 2630 2505 2631 class DepartmentExportJobContainerOverview(KofaPage): 2506 2632 """Page that filters and lists students.
Note: See TracChangeset for help on using the changeset viewer.