import grok from zope.interface import Interface from waeup.sirp.interfaces import IWAeUPObject grok.context(IWAeUPObject) # Make IWAeUPObject the default context grok.templatedir('browser_templates') class StudentManageSidebar(grok.ViewletManager): grok.name('left_studentmanage') class StudentManageLink(grok.Viewlet): """A link displayed in the student box which shows up for StudentNavigation objects. """ grok.baseclass() grok.viewletmanager(StudentManageSidebar) grok.context(IWAeUPObject) grok.view(Interface) grok.order(5) grok.require('waeup.viewStudent') link = 'index' text = u'Base Data' def render(self): url = self.view.url(self.context.getStudent(), self.link) return u'
%s
' % ( url, self.text) class StudentManageBaseLink(StudentManageLink): grok.order(1) link = 'index' text = u'Base Data' class StudentManageClearanceLink(StudentManageLink): grok.order(2) link = 'view_clearance' text = u'Clearance Data' class StudentManagePersonalLink(StudentManageLink): grok.order(2) link = 'view_personal' text = u'Personal Data' class StudentManageStudyCourseLink(StudentManageLink): grok.order(3) link = 'studycourse' text = u'Study Course' class StudentManagePaymentsLink(StudentManageLink): grok.order(4) link = 'payments' text = u'Payments' class StudentManageAccommodationLink(StudentManageLink): grok.order(5) link = 'accommodation' text = u'Accommodation Data' class StudentManageHistoryLink(StudentManageLink): grok.order(6) link = 'history' text = u'History' class StudentMenu(grok.ViewletManager): grok.name('top_student') class StudentLink(grok.Viewlet): """A link displayed in the student box which shows up for StudentNavigation objects. """ grok.baseclass() grok.viewletmanager(StudentMenu) grok.context(IWAeUPObject) grok.view(Interface) grok.order(5) grok.require('waeup.viewStudent') template = grok.PageTemplateFile('browser_templates/plainactionbutton.pt') link = 'index' text = u'Base Data' @property def alt(self): """Alternative text for icon. """ return self.text @property def target_url(self): """Get a URL to the target... """ return self.view.url(self.context.getStudent(), self.link) class StudentBaseLink(StudentLink): grok.order(1) link = 'index' text = u'Base Data' class StudentClearanceLink(StudentLink): grok.order(2) link = 'view_clearance' text = u'Clearance Data' class StudentPersonalLink(StudentLink): grok.order(2) link = 'view_personal' text = u'Personal Data' class StudentStudyCourseLink(StudentLink): grok.order(3) link = 'studycourse' text = u'Study Course' class StudentPaymentsLink(StudentLink): grok.order(4) link = 'payments' text = u'Payments' class StudentAccommodationLink(StudentLink): grok.order(5) link = 'accommodation' text = u'Accommodation' class StudentHistoryLink(StudentLink): grok.order(6) link = 'history' text = u'History' class PrimaryStudentNavManager(grok.ViewletManager): """Viewlet manager for the primary navigation tab. """ grok.name('primary_nav_student') class PrimaryStudentNavTab(grok.Viewlet): """Base for primary student nav tabs. """ grok.baseclass() grok.viewletmanager(PrimaryStudentNavManager) grok.template('primarynavtab') grok.order(1) grok.require('waeup.View') pnav = 0 tab_title = u'Some Text' @property def link_target(self): return self.view.application_url() @property def active(self): view_pnav = getattr(self.view, 'pnav', 0) if view_pnav == self.pnav: return 'active' return '' class HomeTab(PrimaryStudentNavTab): """Home-tab in primary navigation. """ grok.order(1) grok.require('waeup.Public') pnav = 0 tab_title = u'Home' class ProspectusTab(PrimaryStudentNavTab): """Faculties-tab in primary navigation. """ grok.order(2) grok.require('waeup.View') pnav = 1 tab_title = u'Prospectus' @property def link_target(self): return self.view.application_url('faculties') class MyDataTab(PrimaryStudentNavTab): """MyData-tab in primary navigation. """ grok.order(3) grok.require('waeup.Public') pnav = 4 tab_title = u'My Data' @property def link_target(self): rel_link = '/students/%s' % self.request.principal.id return self.view.application_url() + rel_link