## ## browser.py ## Login : ## Started on Sun Jun 27 11:03:10 2010 Uli Fouquet ## $Id$ ## ## Copyright (C) 2010 Uli Fouquet ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## """UI components for JAMB tables. """ import grok from waeup.sirp.browser import ( WAeUPPage, WAeUPEditFormPage, WAeUPAddFormPage, WAeUPDisplayFormPage, NullValidator) from waeup.sirp.jambtables import JAMBDataTable from waeup.sirp.jambtables.interfaces import IApplicant, IApplicantContainer #from zope.formlib.objectwidget import ObjectWidget from zope.formlib.sequencewidget import ListSequenceWidget, SequenceDisplayWidget from zope.formlib.widget import CustomWidgetFactory from waeup.sirp.jambtables.applicants import ResultEntry from waeup.sirp.jambtables.objectwidget import ( WAeUPObjectWidget, WAeUPObjectDisplayWidget) from waeup.sirp.jambtables.multilistwidget import ( MultiListWidget, MultiListDisplayWidget) results_widget = CustomWidgetFactory( WAeUPObjectWidget, ResultEntry) results_display_widget = CustomWidgetFactory( WAeUPObjectDisplayWidget, ResultEntry) #list_results_widget = CustomWidgetFactory( # ListSequenceWidget, subwidget=results_widget) list_results_widget = CustomWidgetFactory( MultiListWidget, subwidget=results_widget) list_results_display_widget = CustomWidgetFactory( MultiListDisplayWidget, subwidget=results_display_widget) class ApplicationsPage(WAeUPPage): grok.context(IApplicantContainer) grok.name('index') title = 'Applications' pnav = 1 def getApplications(self): """Get a list of all stored applications. """ for key, val in self.context.items(): url = self.url(val) yield(dict(url=url, name=key)) class AddApplicant(WAeUPAddFormPage): grok.context(IApplicantContainer) grok.name('add') form_fields = grok.AutoFields(IApplicant) form_fields['fst_sit_results'].custom_widget = list_results_widget label = 'Add Applicant' title = 'Add Applicant' pnav = 1 @grok.action('Add applicant') def addApplicant(self, **data): from waeup.sirp.jambtables.applicants import Applicant applicant = Applicant() self.applyData(applicant, **data) self.context[applicant.reg_no] = applicant self.redirect(self.url(self.context)) class DisplayApplicant(WAeUPDisplayFormPage): grok.context(IApplicant) grok.name('index') form_fields = grok.AutoFields(IApplicant) form_fields['fst_sit_results'].custom_widget = list_results_display_widget label = 'Applicant' title = 'Applicant' pnav = 1 class EditApplicant(WAeUPEditFormPage): grok.context(IApplicant) grok.name('edit') form_fields = grok.AutoFields(IApplicant) form_fields['fst_sit_results'].custom_widget = list_results_widget label = 'Edit Application' title = 'Edit Application' pnav = 1 @grok.action('Save') def save(self, **data): print "DATA: ", data self.applyData(self.context, **data) print "ENTRY: ", self.context.fst_sit_results self.context._p_changed = True return @grok.action('Save and return') def saveAndReturn(self, **data): self.applyData(self.context, **data) self.redirect(self.url(self.context)) return @grok.action('Cancel', validator=NullValidator) def cancel(self, **data): self.redirect(self.url(self.context)) return