Ignore:
Timestamp:
14 Feb 2007, 12:54:55 (18 years ago)
Author:
joachim
Message:

added new Function add_student

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/WAeUPTool.py

    r1411 r1415  
    7272            sid = "%c%d" % (letter,r.randint(99999,1000000))
    7373        return sid
     74
     75    def generatePassword(self,s=None): ###(
     76        import random
     77        r = random
     78        ##if letter not in ('ABCDEFGIHKLMNOPQRSTUVWXY'):
     79        if s is None:
     80            s = 'abcdefghklmnpqrstuvwxy23456789'
     81        pw = ''
     82        while len(pw) < 6:
     83            pw += r.choice(s)
     84        return pw
    7485    ###)
    7586
     
    133144            transaction.commit()
    134145        return sid,jamb_reg_no
     146    ###)
     147
     148    security.declareProtected(ModifyPortalContent,'createStudent') ###(
     149    def createStudent(self,dict):
     150        students_folder = self.portal_url.getPortalObject().campus.students
     151        sid = self.waeup_tool.generateStudentId('?')
     152        students_folder.invokeFactory('Student', sid)
     153        student_obj = getattr(students_folder,sid)
     154        password = self.generatePassword()
     155        self.makeStudentMember(sid,password)
     156        status,entry_mode = dict.get('entry_mode').split('_')
     157        wfaction = 'return'
     158        if status == "NEW":
     159            wfaction = 'admit'
     160        matric_no = dict.get('matric_no')
     161        email = dict.get('email')
     162        level = dict.get('level')
     163        study_course = dict.get('study_course')
     164        self.portal_workflow.doActionFor(student_obj,wfaction)
     165        student_obj.manage_setLocalRoles(sid, ['Owner',])
     166        student_obj.invokeFactory('StudentApplication','application')
     167        application = student_obj.application
     168        self.portal_workflow.doActionFor(application,'open',dest_container=application)
     169        da = {'Title': 'Application Data'}
     170        student_obj.invokeFactory('StudentPersonal','personal')
     171        da['entry_mode'] = entry_mode
     172        personal = student_obj.personal
     173        self.portal_workflow.doActionFor(personal,'open',dest_container=personal)
     174        dp = {'Title': 'Personal Data'}
     175        student_obj.invokeFactory('StudentClearance','clearance')
     176        clearance = student_obj.clearance
     177        self.portal_workflow.doActionFor(clearance,'open',dest_container=clearance)
     178        dc = {'Title': 'Clearance/Eligibility Record'}
     179        dc['matric_no'] = matric_no
     180        da['app_email'] = dp['email'] = email
     181        dp['firstname'] = dict.get('firstname')
     182        dp['middlename'] = dict.get('middlename')
     183        dp['lastname'] = dict.get('lastname')
     184        da['jamb_lastname'] = "%(firstname)s %(middlename)s %(lastname)s" % dict
     185        sex = dict.get('sex')
     186        if sex:
     187            da['jamb_sex'] = 'F'
     188        else:
     189            da['jamb_sex'] = 'M'
     190        dp['sex'] = sex
     191        application.getContent().edit(mapping=da)
     192        self.portal_workflow.doActionFor(application,'close',dest_container=application)
     193        personal.getContent().edit(mapping=dp)
     194        clearance.getContent().edit(mapping=dc)
     195        self.portal_workflow.doActionFor(clearance,'close',dest_container=clearance)
     196        catd = {}
     197        catd['id'] = sid
     198        catd['entry_mode']= entry_mode
     199        catd['email'] = email
     200        catd['matric_no'] = matric_no
     201        catd['name'] = "%(firstname)s %(middlename)s %(lastname)s" % dp
     202        catd['sex'] = dp['sex']
     203        catd['level'] = level
     204        certificate_brain = self.getCertificateBrain(study_course)
     205        if certificate_brain:
     206            cpath = certificate_brain.getPath().split('/')
     207            catd['faculty'] = cpath[-4]
     208            catd['department'] = cpath[-3]
     209            catd['course'] = study_course
     210        self.students_catalog.addRecord(**catd)
     211        #
     212        # Study Course
     213        #
     214        student_obj.invokeFactory('StudentStudyCourse','study_course')
     215        sc = student_obj.study_course
     216        self.portal_workflow.doActionFor(sc,'open',dest_container=sc)
     217        dsc = {}
     218        dsc['study_course'] = study_course
     219        dsc['current_level'] = level
     220        sc.getContent().edit(mapping=dsc)
     221
     222        return sid,password
    135223    ###)
    136224
     
    206294            em = 'Certificate %s org-code %s not found\n' % (certcode, certcode_org)
    207295            logger.info(em)
    208 ##        validlevel = False
    209 ##        try:
    210 ##            il = int(level) + 100
    211 ##            level = "%s" % il
    212 ##            validlevel = True
    213 ##        except:
    214 ##            em = '"%(matric_no)s","invalid Level","%(Level)s"' % student
    215 ##            logger.info(em)
    216 ##        if not validlevel:
    217 ##            erg = self.results_import(matric_no = student.matric_no)
    218 ##            level = 'xxx'
    219 ##            if erg:
    220 ##                level = erg[0].Level
    221 ##            try:
    222 ##                il = int(level) + 100
    223 ##                level = "%s" % il
    224 ##                em = '"%s","fixed Level from results_import","%s"' % (student.matric_no,erg[0].Level)
    225 ##                logger.info(em)
    226 ##                validlevel = True
    227 ##            except:
    228 ##                em = '"%s","invalid Level in results_import","%s"' % (student.matric_no,erg[0].Level)
    229 ##                logger.info(em)
    230296        matric_no = student.matric_no
    231297        sid = student_id
Note: See TracChangeset for help on using the changeset viewer.