[Checkins]
SVN: Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/
Small changes to formdemo
Darryl Cousins
darryl at darrylcousins.net.nz
Mon Jul 9 16:32:15 EDT 2007
Log message for revision 77668:
Small changes to formdemo
Changed:
U Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/questionnaire/questionnaire.py
U Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/spreadsheet/spreadsheet.py
U Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/tests.py
-=-
Modified: Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/questionnaire/questionnaire.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/questionnaire/questionnaire.py 2007-07-09 18:10:04 UTC (rev 77667)
+++ Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/questionnaire/questionnaire.py 2007-07-09 20:32:11 UTC (rev 77668)
@@ -9,6 +9,12 @@
from z3c.form import button, field, form, group, widget
from z3c.form.interfaces import IAddForm
from z3c.formdemo.questionnaire.interfaces import IQuestionnaire
+from z3c.formdemo.questionnaire.browser import (IQuestionnaireGroup,
+ IQuestionnairePage,
+ DevelopmentExperienceGroup,
+ ContributorExperienceGroup,
+ DataColumn,
+ QuestionnaireRow)
from z3c.formdemo.browser import formatter
from z3c.formui import layout
@@ -44,27 +50,7 @@
for name, value in kw.items():
setattr(self, name, value)
-# Groups
-class IQuestionnaireGroup(zope.interface.Interface):
- """Questionnaire Group"""
-class IQuestionnairePage(zope.interface.Interface):
- """Questionnaire Page"""
-
-class DevelopmentExperienceGroup(group.Group):
- zope.interface.implements(IQuestionnaireGroup)
- label = u'Development Experience'
- fields = field.Fields(IQuestionnaire).select(
- 'zope2', 'plone', 'zope3', 'five')
-
-
-class ContributorExperienceGroup(group.Group):
- zope.interface.implements(IQuestionnaireGroup)
- label = u'Contributor Experience'
- fields = field.Fields(IQuestionnaire).select(
- 'contributor', 'years', 'zopeId')
-
-
class QuestionnaireAddForm(mars.view.FormView, layout.AddFormLayoutSupport,
group.GroupForm, form.AddForm):
"""Questionnaire add form"""
@@ -92,23 +78,6 @@
return url + '/questionnaireResults'
-class DataColumn(column.SortingColumn):
- """Data column for Questionnaire results view"""
-
- def __init__(self, field):
- super(DataColumn, self).__init__(field.title, field.__name__)
-
- def renderCell(self, item, formatter):
- return item.widgets[self.name].render()
-
- def getSortKey(self, item, formatter):
- return item.widgets[self.name].value
-
-
-class QuestionnaireRow(form.DisplayForm):
- fields = field.Fields(IQuestionnaire)
-
-
class QuestionnaireResults(mars.view.PageletView):
"""Questionnaire results tabular view"""
grok.name('questionnaireResults')
Modified: Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/spreadsheet/spreadsheet.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/spreadsheet/spreadsheet.py 2007-07-09 18:10:04 UTC (rev 77667)
+++ Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/spreadsheet/spreadsheet.py 2007-07-09 20:32:11 UTC (rev 77668)
@@ -7,109 +7,12 @@
from z3c.formdemo.browser import formatter
from z3c.formdemo.spreadsheet import content
+from z3c.formdemo.spreadsheet import spreadsheet
-class SpreadsheetDataColumn(column.SortingColumn):
-
- def __init__(self, field):
- super(SpreadsheetDataColumn, self).__init__(field.title, field.__name__)
-
- def renderCell(self, item, formatter):
- return item.widgets[self.name].render()
-
- def getSortKey(self, item, formatter):
- return item.widgets[self.name].value
-
-
-class SpreadsheetActionsColumn(column.Column):
-
- def __init__(self):
- super(SpreadsheetActionsColumn, self).__init__(
- u'Actions', 'actions')
-
- def renderCell(self, item, formatter):
- return '\n'.join(
- [action.render() for action in item.actions.values()] )
-
-
-class AddRow(form.AddForm):
- form.extends(form.AddForm)
- prefix = 'add.'
-
- def __init__(self, spreadsheet):
- super(AddRow, self).__init__(spreadsheet.context, spreadsheet.request)
- self.fields = spreadsheet.rowFields
- self.sessionKey = spreadsheet.sessionKey
-
- def create(self, data):
- return Candidate(**data)
-
- def add(self, object):
- count = 0
- while 'candidate-%i' %count in self.context:
- count += 1;
- self._name = 'candidate-%i' %count
- self.context[self._name] = object
- return object
-
- def update(self):
- super(AddRow, self).update()
- if self._finishedAdd:
- # Purposefully do not deactivate add-mode, so that multiple
- # candidates can be added at once.
- self.request.response.redirect(self.request.getURL())
-
- @button.buttonAndHandler(u'Cancel')
- def handleCancel(self, action):
- ISession(self.request)[self.sessionKey]['add'] = False
- self.request.response.redirect(self.request.getURL())
-
-
-class EditRow(form.EditForm):
-
- def __init__(self, spreadsheet, content):
- super(EditRow, self).__init__(spreadsheet.context, spreadsheet.request)
- self.fields = spreadsheet.rowFields
- self.content = content
- self.prefix = str(content.__name__) + '.'
- self.sessionKey = spreadsheet.sessionKey
-
- @property
- def edit(self):
- name = ISession(self.request)[self.sessionKey].get('edit')
- return self.content.__name__ == name
-
- def getContent(self):
- return self.content
-
- def updateWidgets(self):
- self.widgets = zope.component.getMultiAdapter(
- (self, self.request, self.getContent()), interfaces.IWidgets)
- if not self.edit:
- self.widgets.mode = interfaces.DISPLAY_MODE
- self.widgets.update()
-
- @button.buttonAndHandler(u'Edit', condition=lambda form: not form.edit)
- def handleEdit(self, action):
- ISession(self.request)[self.sessionKey]['edit'] = self.content.__name__
- self.request.response.redirect(self.request.getURL())
-
- @button.buttonAndHandler(u'Save', condition=lambda form: form.edit)
- def handleSave(self, action):
- self.handleApply(self, action)
- if not self.widgets.errors:
- ISession(self.request)[self.sessionKey]['edit'] = None
- self.request.response.redirect(self.request.getURL())
-
- @button.buttonAndHandler(u'Cancel', condition=lambda form: form.edit)
- def handleCancel(self, action):
- ISession(self.request)[self.sessionKey]['edit'] = None
- self.request.response.redirect(self.request.getURL())
-
-
class Spreadsheet(layout.FormLayoutSupport, form.Form):
- sessionKey = 'z3c.formdemo.spreadsheet'
+ sessionKey = 'mars.formdemo.spreadsheet'
rowFields = None
columnWidths = None
@@ -127,18 +30,18 @@
rows = []
for candidate in self.getContent():
- row = EditRow(self, candidate)
+ row = spreadsheet.EditRow(self, candidate)
row.update()
rows.append(row)
if self.add:
- row = AddRow(self)
+ row = spreadsheet.AddRow(self)
row.update()
rows.append(row)
- columns = [SpreadsheetDataColumn(field.field)
+ columns = [spreadsheet.SpreadsheetDataColumn(field.field)
for field in self.rowFields.values()]
- columns.append(SpreadsheetActionsColumn())
+ columns.append(spreadsheet.SpreadsheetActionsColumn())
self.table = formatter.SelectedItemFormatter(
self.context, self.request, rows,
Modified: Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/tests.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/tests.py 2007-07-09 18:10:04 UTC (rev 77667)
+++ Sandbox/darrylcousins/mars.formdemo/src/mars/formdemo/tests.py 2007-07-09 20:32:11 UTC (rev 77668)
@@ -10,10 +10,10 @@
def test_suite():
suites = []
for docpath in (
- #('message', 'message.txt'),
- #('questionnaire', 'questionnaire.txt'),
- #('widgets', 'widgets.txt'),
- #('spreadsheet', 'spreadsheet.txt'),
+ ('message', 'message.txt'),
+ ('questionnaire', 'questionnaire.txt'),
+ ('widgets', 'widgets.txt'),
+ ('spreadsheet', 'spreadsheet.txt'),
('wizard', 'wizard.txt'),
):
suite = functional.FunctionalDocFileSuite(
More information about the Checkins
mailing list