~replaceafill/schooltool/schooltool_grokking_contacts

« back to all changes in this revision

Viewing changes to src/schooltool/export/export.py

  • Committer: Ignas Mikalajūnas
  • Date: 2009-02-07 21:58:37 UTC
  • Revision ID: ignas@pov.lt-20090207215837-mk9plau0wf6njuac
Add extra demographics to xls export/import.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
import datetime
25
25
from operator import attrgetter
26
26
 
27
 
from zope.interface import implements
28
 
from zope.interface import Interface
29
27
from zope.security.proxy import removeSecurityProxy
30
28
from zope.publisher.browser import BrowserView
31
29
 
 
30
from schooltool.basicperson.demographics import DateFieldDescription
 
31
from schooltool.basicperson.interfaces import IDemographics
 
32
from schooltool.basicperson.interfaces import IDemographicsFields
32
33
from schooltool.group.interfaces import IGroupContainer
 
34
from schooltool.app.interfaces import ISchoolToolApplication
33
35
from schooltool.app.interfaces import ISchoolToolCalendar
34
36
from schooltool.app.interfaces import IAsset
35
37
from schooltool.schoolyear.interfaces import ISchoolYear
390
392
                  ('Email', Text, attrgetter('email')),
391
393
                  ('Phone', Text, attrgetter('phone')),
392
394
                  ('Birth Date', Date, attrgetter('birth_date')),
393
 
                  ('Gender', Text, attrgetter('gender'))]
 
395
                  ('Gender', Text, attrgetter('gender')),
 
396
                  ('Password', Text, lambda p: None)]
 
397
 
 
398
        def demographics_getter(attribute):
 
399
            def getter(person):
 
400
                demographics = IDemographics(person)
 
401
                return demographics[attribute]
 
402
            return getter
 
403
 
 
404
        app = ISchoolToolApplication(None)
 
405
        demographics_fields = IDemographicsFields(app)
 
406
        for field in demographics_fields.values():
 
407
            title = field.title
 
408
            format = Text
 
409
            if isinstance(field, DateFieldDescription):
 
410
                format = Date
 
411
            getter = demographics_getter(field.name)
 
412
            fields.append((title, format, getter))
 
413
 
394
414
        items = self.context['persons'].values()
395
415
        return self.format_table(fields, items)
396
416