- Timestamp:
- 17 Dec 2012, 08:06:52 (12 years ago)
- Location:
- main/waeup.kofa/trunk/src/waeup/kofa
- Files:
-
- 1 added
- 1 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
r9743 r9806 62 62 get_users_with_role) 63 63 64 from waeup.kofa.students.catalog import search as searchstudents65 from waeup.kofa.students.catalog import StudentQueryResultItem66 64 from waeup.kofa.university.catalog import search 67 65 from waeup.kofa.university.vocabularies import course_levels … … 1881 1879 yield(dict(url=url, name=key, container=val)) 1882 1880 1883 class FilterStudentsInDepartmentPage(KofaPage):1884 """Page that filters and lists students.1885 """1886 grok.context(IDepartment)1887 grok.require('waeup.showStudents')1888 grok.name('students')1889 grok.template('filterstudentspage')1890 pnav = 11891 session_label = _('in session')1892 level_label = _('at level')1893 1894 def label(self):1895 return 'Students in %s ...' % self.context.longtitle()1896 1897 def _set_session_values(self):1898 vocab_terms = academic_sessions_vocab.by_value.values()1899 self.sessions = sorted(1900 [(x.title, x.token) for x in vocab_terms], reverse=True)1901 self.sessions += [('All Sessions', 'all')]1902 return1903 1904 def _set_level_values(self):1905 vocab_terms = course_levels.by_value.values()1906 self.levels = sorted(1907 [(x.title, x.token) for x in vocab_terms])1908 self.levels += [('All Levels', 'all')]1909 return1910 1911 def _searchCatalog(self, session, level):1912 if level not in (10, 999, None):1913 start_level = 100 * (level // 100)1914 end_level = start_level + 901915 else:1916 start_level = end_level = level1917 cat = queryUtility(ICatalog, name='students_catalog')1918 students = cat.searchResults(1919 current_session=(session, session),1920 current_level=(start_level, end_level),1921 depcode=(self.context.code, self.context.code)1922 )1923 hitlist = []1924 for student in students:1925 hitlist.append(StudentQueryResultItem(student, view=self))1926 return hitlist1927 1928 def update(self, SHOW=None, session=None, level=None):1929 datatable.need()1930 self.parent_url = self.url(self.context.__parent__)1931 self._set_session_values()1932 self._set_level_values()1933 self.hitlist = []1934 self.session_default = session1935 self.level_default = level1936 if SHOW is not None:1937 if session != 'all':1938 self.session = int(session)1939 self.session_string = '%s %s/%s' % (1940 self.session_label, self.session, self.session+1)1941 else:1942 self.session = None1943 self.session_string = _('in any session')1944 if level != 'all':1945 self.level = int(level)1946 self.level_string = '%s %s' % (self.level_label, self.level)1947 else:1948 self.level = None1949 self.level_string = _('at any level')1950 self.hitlist = self._searchCatalog(self.session, self.level)1951 if not self.hitlist:1952 self.flash(_('No student found.'))1953 return1954 1955 class FilterStudentsInCertificatePage(FilterStudentsInDepartmentPage):1956 """Page that filters and lists students.1957 """1958 grok.context(ICertificate)1959 1960 def label(self):1961 return 'Students studying %s ...' % self.context.longtitle()1962 1963 def _searchCatalog(self, session, level):1964 if level not in (10, 999, None):1965 start_level = 100 * (level // 100)1966 end_level = start_level + 901967 else:1968 start_level = end_level = level1969 cat = queryUtility(ICatalog, name='students_catalog')1970 students = cat.searchResults(1971 current_session=(session, session),1972 current_level=(start_level, end_level),1973 certcode=(self.context.code, self.context.code)1974 )1975 hitlist = []1976 for student in students:1977 hitlist.append(StudentQueryResultItem(student, view=self))1978 return hitlist1979 1980 class FilterStudentsInCoursePage(FilterStudentsInDepartmentPage):1981 """Page that filters and lists students.1982 """1983 grok.context(ICourse)1984 1985 def label(self):1986 return 'Students registered for %s ...' % self.context.longtitle()1987 1988 def _searchCatalog(self, session, level):1989 if level not in (10, 999, None):1990 start_level = 100 * (level // 100)1991 end_level = start_level + 901992 else:1993 start_level = end_level = level1994 cat = queryUtility(ICatalog, name='coursetickets_catalog')1995 coursetickets = cat.searchResults(1996 session=(session, session),1997 level=(start_level, end_level),1998 code=(self.context.code, self.context.code)1999 )2000 hitlist = []2001 for ticket in coursetickets:2002 # XXX: If students have registered the same courses twice2003 # they will be listed twice.2004 hitlist.append(StudentQueryResultItem(ticket.student, view=self))2005 return hitlist2006 2007 1881 class DepartmentManageFormPage(KofaEditFormPage): 2008 1882 """Manage the basic properties of a `Department` instance. -
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.