Changeset 9738
- Timestamp:
- 29 Nov 2012, 15:52:31 (12 years ago)
- Location:
- main/waeup.kofa/trunk/src/waeup/kofa/browser
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
r9707 r9738 56 56 ILocalRolesAssignable, DuplicationError, IConfigurationContainer, 57 57 ISessionConfiguration, ISessionConfigurationAdd, IJobManager, 58 IPasswordValidator, IContactForm, IKofaUtils, ICSVExporter,) 58 IPasswordValidator, IContactForm, IKofaUtils, ICSVExporter, 59 academic_sessions_vocab) 59 60 from waeup.kofa.permissions import ( 60 61 get_users_with_local_roles, get_all_roles, get_all_users, … … 1880 1881 yield(dict(url=url, name=key, container=val)) 1881 1882 1882 class ShowStudentsInDepartmentPage(KofaPage): 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 = 1 1891 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 return 1903 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 return 1910 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 + 90 1915 else: 1916 start_level = end_level = level 1917 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 hitlist 1927 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 = session 1935 self.level_default = level 1936 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 = None 1943 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 = None 1949 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 return 1954 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 + 90 1967 else: 1968 start_level = end_level = level 1969 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 hitlist 1979 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 + 90 1992 else: 1993 start_level = end_level = level 1994 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 hitlist.append(StudentQueryResultItem(ticket.student, view=self)) 2003 return hitlist 2004 2005 class ShowStudentsInDepartmentPage(FilterStudentsInDepartmentPage): 1883 2006 """Page that lists all students in the department. 1884 2007 """
Note: See TracChangeset for help on using the changeset viewer.