Ignore:
Timestamp:
30 Jul 2006, 06:12:00 (18 years ago)
Author:
joachim
Message:

student import startet

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/Students.py

    r200 r361  
    1313from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder
    1414from Products.CPSCore.CPSMembershipTool import CPSUnrestrictedUser
    15 ##class StudentsFolder(BaseBTreeFolder): ###(
    16 ##    """
    17 ##    WAeUP container for the various WAeUP containers data
    18 ##    """
    19 ##    meta_type = 'Students Folder'
    20 ##    portal_type = meta_type
    21 ##    security = ClassSecurityInfo()
    22 ##
    23 ##
    24 ##InitializeClass(StudentsFolder)
    25 
    26 ##def addStudentsFolder(container, id, REQUEST=None, **kw):
    27 ##    """Add a Student."""
    28 ##    ob = StudentsFolder(id, **kw)
    29 ##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
    30 #####)
     15from Products.WAeUP_SRP.Academics import makeCertificateCode
     16
     17class StudentsFolder(CPSDocument): ###(
     18    """
     19    WAeUP container for the various WAeUP containers data
     20    """
     21    meta_type = 'Students Folder'
     22    portal_type = meta_type
     23    security = ClassSecurityInfo()
     24
     25    security.declareProtected(ModifyPortalContent,"loadFullTimeStudentsFromCSV")###(
     26    def loadFullTimeStudentsFromCSV(self):
     27        """load Fulltime Studentdata from CSV values"""
     28        #return
     29        name = 'short_full_time'
     30        no_import = False
     31        logger = logging.getLogger('%s_import' % name)
     32        logger.info('Start loading from %s.csv' % name)
     33        students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
     34        try:
     35            students = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     36        except:
     37            logger.error('Error reading %s.csv' % name)
     38            return
     39        l = self.portal_catalog({'meta_type': "Student"})
     40        studs = {}
     41        for s in l:
     42            studs[s.id] = s.getObject()
     43        l = self.portal_catalog({'meta_type': "Certificate"})
     44        certs = {}
     45        for c in l:
     46            certs[s.id] = c.getObject()
     47        for student in students:
     48            logger.info('processing "%(MatricNo)s","%(EntryRegNo)s","%(CurrentSession)s","%(StudentLevel)s","%(fullname)s","%(FirstName)s","%(MiddleName)s","%(Lastname)s","%(FormerSurname)s","%(Sex)s","%(Nationality)s","%(State)s","%(LGA)s","%(PermanentAddress)s","%(PermanentAddressCity)s","%(CampusAddress)s","%(PhoneNumber)s","%(Emailaddress)s","%(Mode)s","%(CourseMajor)s","%(Faculty)s","%(Dept)s"' % student)
     49            sid = student.get('MatricNo')
     50            certcode = makeCertificateCode(student.get('CourseMajor'))
     51            s = studs.get(sid,None)
     52            if certcode not in certs.keys():
     53                em = 'Certificate with ID %s %s not found' % (certcode, student.get('CourseMajor'))
     54                if not no_import:
     55                    no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
     56                    no_import.write('"MatricNo","EntryRegNo","CurrentSession","StudentLevel","fullname","FirstName","MiddleName","Lastname","FormerSurname","Sex","Nationality","State","LGA","PermanentAddress","PermanentAddressCity","CampusAddress","PhoneNumber","Emailaddress","Mode","CourseMajor","Faculty","Dept"\n')
     57                logger.info(em)
     58                no_import.write('"%(MatricNo)s","%(EntryRegNo)s","%(CurrentSession)s","%(StudentLevel)s","%(fullname)s","%(FirstName)s","%(MiddleName)s","%(Lastname)s","%(FormerSurname)s","%(Sex)s","%(Nationality)s","%(State)s","%(LGA)s","%(PermanentAddress)s","%(PermanentAddressCity)s","%(CampusAddress)s","%(PhoneNumber)s","%(Emailaddress)s","%(Mode)s","%(CourseMajor)s","%(Faculty)s","%(Dept)s"' % student)
     59                continue
     60            if s is None:
     61                #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
     62                logger.info('Creating Student with ID %(MatricNo)s %(fullname)s' % faculty)
     63                students_folder.invokeFactory('Student', sid)
     64                s = getattr(self,sid)
     65                s.invokeFactory('StudentPersonal','personal')
     66                sp = getattr(self,sid)
     67                d = {'Title': 'Personal Data'}
     68                d['fullname'] = student.get('fullname')
     69                d['firstname'] = student.get('FirstName')
     70                d['middlename'] = student.get('MiddleName')
     71                d['lastname'] = student.get('LastName')
     72                d['former_surname'] = student.get('FormerSurname')
     73                d['sex'] = student.get('Sex') == 'M'
     74                d['nationality'] = student.get('Nationality')
     75                d['state'] = student.get('State')
     76                d['lga'] = student.get('LGA')
     77                d['street'] = student.get('PermanentAddress')
     78                d['city'] = student.get('PermanentAddressCity')
     79                d['campus_address'] = student.get('CampusAddress')
     80                d['phone'] = student.get('PhoneNumber')
     81                d['email'] = student.get('EmailAddress')
     82                f.getContent().edit(mapping=d)
     83            else:
     84                em = 'Faculty with ID %(MatricNo)s %(fullname)s already exists' % student
     85                if not no_import:
     86                    no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
     87                    no_import.write('"MatricNo","EntryRegNo","CurrentSession","StudentLevel","fullname","FirstName","MiddleName","Lastname","FormerSurname","Sex","Nationality","State","LGA","PermanentAddress","PermanentAddressCity","CampusAddress","PhoneNumber","Emailaddress","Mode","CourseMajor","Faculty","Dept"\n')
     88                logger.info(em)
     89                no_import.write('"%(MatricNo)s","%(EntryRegNo)s","%(CurrentSession)s","%(StudentLevel)s","%(fullname)s","%(FirstName)s","%(MiddleName)s","%(Lastname)s","%(FormerSurname)s","%(Sex)s","%(Nationality)s","%(State)s","%(LGA)s","%(PermanentAddress)s","%(PermanentAddressCity)s","%(CampusAddress)s","%(PhoneNumber)s","%(Emailaddress)s","%(Mode)s","%(CourseMajor)s","%(Faculty)s","%(Dept)s"' % student)
     90        return self.students.folder_contents()
     91    ###)
     92
     93InitializeClass(StudentsFolder)
     94
     95def addStudentsFolder(container, id, REQUEST=None, **kw):
     96    """Add a Student."""
     97    ob = StudentsFolder(id, **kw)
     98    return CPSBase_adder(container, ob, REQUEST=REQUEST)
     99###)
    31100
    32101class Student(CPSDocument): ###(
Note: See TracChangeset for help on using the changeset viewer.