[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