Ignore:
Timestamp:
17 Dec 2012, 08:06:52 (12 years ago)
Author:
Henrik Bettermann
Message:

Move filter students pages to students package.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py

    r9743 r9806  
    6262    get_users_with_role)
    6363
    64 from waeup.kofa.students.catalog import search as searchstudents
    65 from waeup.kofa.students.catalog import StudentQueryResultItem
    6664from waeup.kofa.university.catalog import search
    6765from waeup.kofa.university.vocabularies import course_levels
     
    18811879            yield(dict(url=url, name=key, container=val))
    18821880
    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             # XXX: If students have registered the same courses twice
    2003             # they will be listed twice.
    2004             hitlist.append(StudentQueryResultItem(ticket.student, view=self))
    2005         return hitlist
    2006 
    20071881class DepartmentManageFormPage(KofaEditFormPage):
    20081882    """Manage the basic properties of a `Department` instance.
Note: See TracChangeset for help on using the changeset viewer.