## ## 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 zope.formlib.widgets import FileWidget from waeup.sirp.browser import ( WAeUPPage, WAeUPEditFormPage, WAeUPAddFormPage, WAeUPDisplayFormPage, NullValidator) from waeup.sirp.browser.pages import LoginPage from waeup.sirp.interfaces import IWAeUPObject from waeup.sirp.applicants import get_applicant_data, ResultEntry from waeup.sirp.applicants.interfaces import ( IApplicant, IApplicantPrincipal, IApplicantPDEEditData) from waeup.sirp.widgets.passportwidget import ( PassportWidget, PassportDisplayWidget ) #from zope.formlib.objectwidget import ObjectWidget from zope.formlib.sequencewidget import ListSequenceWidget, SequenceDisplayWidget from zope.formlib.widget import CustomWidgetFactory from waeup.sirp.widgets.objectwidget import ( WAeUPObjectWidget, WAeUPObjectDisplayWidget) from waeup.sirp.widgets.multilistwidget import ( MultiListWidget, MultiListDisplayWidget) from waeup.sirp.image.browser.widget import ( ThumbnailWidget, EncodingImageFileWidget, ) 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 # form_fields['passport'].custom_widget = EncodingImageFileWidget # 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) # # XXX: temporarily disabled. # #self.context[applicant.reg_no] = applicant # try: # self.context[applicant.access_code] = applicant # except KeyError: # self.flash('The given access code is already in use!') # return # 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 #form_fields['passport'].custom_widget = PassportDisplayWidget form_fields['passport'].custom_widget = ThumbnailWidget label = 'Applicant' title = 'Applicant' pnav = 1 class EditApplicant(WAeUPEditFormPage): grok.context(IApplicant) grok.name('edit') form_fields = grok.AutoFields(IApplicantPDEEditData) #form_fields['passport'].custom_widget = FileWidget #form_fields['passport'].custom_widget = PassportWidget form_fields['passport'].custom_widget = EncodingImageFileWidget grok.template('form_edit_pde') def update(self): super(EditApplicant, self).update() print self.request.form return @property def label(self): # XXX: Use current/upcoming session return 'Apply for Post UDE Screening Test (2009/2010)' title = 'Edit Application' pnav = 1 @grok.action('Save') def save(self, **data): self.applyData(self.context, **data) self.context._p_changed = True return @grok.action('Final Submit') def finalsubmit(self, **data): self.applyData(self.context, **data) self.context._p_changed = True # XXX: Lock the form for editing... return