~replaceafill/schooltool/schooltool_grokking_contacts

« back to all changes in this revision

Viewing changes to src/schooltool/export/importer.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:
28
28
from zope.security.proxy import removeSecurityProxy
29
29
from zope.publisher.browser import BrowserView
30
30
 
 
31
from schooltool.basicperson.interfaces import IDemographicsFields
 
32
from schooltool.basicperson.interfaces import IDemographics
 
33
from schooltool.basicperson.demographics import DateFieldDescription
31
34
from schooltool.resource.resource import Resource
32
35
from schooltool.resource.resource import Location
33
36
from schooltool.group.group import Group
44
47
from schooltool.timetable.schema import TimetableSchemaDay
45
48
from schooltool.term.interfaces import ITerm
46
49
from schooltool.term.term import Term
 
50
from schooltool.app.interfaces import ISchoolToolApplication
47
51
from schooltool.app.interfaces import ISchoolToolCalendar
48
52
from schooltool.app.app import SimpleNameChooser
49
53
from schooltool.schoolyear.schoolyear import SchoolYear
361
365
 
362
366
    def createPerson(self, data):
363
367
        from schooltool.basicperson.person import BasicPerson
364
 
        person = BasicPerson(data['__name__'], data['first_name'], data['last_name'])
 
368
        person = BasicPerson(data['__name__'],
 
369
                             data['first_name'],
 
370
                             data['last_name'])
365
371
        person.email = data['email']
366
372
        person.phone = data['phone']
367
373
        person.birth_date = data['birth_date']
387
393
 
388
394
    def process(self):
389
395
        sh = self.sheet
 
396
        app = ISchoolToolApplication(None)
 
397
        fields = IDemographicsFields(app)
390
398
        for row in range(1, sh.nrows):
391
399
            if sh.cell_value(rowx=row, colx=0) == '':
392
400
                break
398
406
            data['phone'] = sh.cell_value(rowx=row, colx=4)
399
407
            data['birth_date'] = self.getDateFromCell(sh, row, 5, default=None)
400
408
            data['gender'] = sh.cell_value(rowx=row, colx=6)
 
409
            if data['gender'] == '':
 
410
                data['gender'] = None
401
411
            data['password'] = sh.cell_value(rowx=row, colx=7)
 
412
 
402
413
            person = self.createPerson(data)
 
414
 
 
415
            demographics = IDemographics(person)
 
416
            for n, field in enumerate(fields.values()):
 
417
                if isinstance(field, DateFieldDescription):
 
418
                    value = self.getDateFromCell(sh, row, n + 8, default=None)
 
419
                else:
 
420
                    value = sh.cell_value(rowx=row, colx=n + 8)
 
421
                if value == '':
 
422
                    value = None
 
423
                demographics[field.name] = value
 
424
 
403
425
            self.addPerson(person, data)
404
426
 
405
427