Changeset 746
- Timestamp:
- 25 Oct 2006, 06:14:35 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WAeUP_SRP/trunk/Students.py
r742 r746 70 70 pwlist.append('"student_id","firstname","middlename","lastname","matric_no","jamb_reg_no","access_code"') 71 71 pwl_template = Template('"$student_id","$firstname","$middlename","$lastname","$matric_no","$jamb_reg_no","$access_code"') 72 students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject() 73 try: 74 students = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb")) 75 except: 76 logger.error('Error reading %s.csv' % name) 77 return 78 l = self.portal_catalog({'meta_type': "StudentClearance",}) 79 matrics = [] 80 for s in l: 81 matrics.append(s.getObject().getContent().matric_no) 82 print matrics 83 l = self.portal_catalog({'meta_type': "Certificate"}) 84 certs = {} 85 for c in l: 86 ca,ac,fa,dep_id,co,certcode = c.relative_path.split('/') 87 cid = "%(dep_id)s_%(certcode)s" % vars() 88 certs[cid] = c.getObject() 89 for student in students: 90 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"\n' % student) 91 sid = student.get('MatricNo') 92 if sid == "": 93 em = 'Empty MatricNo\n' 94 logger.info(em) 95 no_import.write(em) 96 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"\n' % student) 97 continue 98 certcode = makeCertificateCode(student.get('CourseMajor')) 99 dep_id = student.get('Dept') 100 fac_id = student.get('Faculty') 101 cid = "%(dep_id)s_%(certcode)s" % vars() 102 if cid not in certs.keys(): 103 em = 'Certificate with ID %s %s not found\n' % (certcode, student.get('CourseMajor')) 104 logger.info(em) 105 no_import.write(em) 106 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"\n' % student) 107 continue 108 certificate_doc = certs[cid].getContent() 109 level = student.get('StudentLevel') 110 try: 111 int(level) 112 except: 113 em = 'Student with ID %(MatricNo)s StudentLevel is empty\n' % student 114 logger.info(em) 115 no_import.write(em) 116 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"\n' % student) 117 continue 118 matric_no = student.get('MatricNo') 119 if matric_no not in matrics: 120 matrics.append(matric_no) 121 sid = self.generateStudentId(student.get('Lastname')[0]) 122 #self.log('Creating Faculty %(id)s = %(Title)s' % faculty) 123 students_folder.invokeFactory('Student', sid) 124 logger.info('%(tr_count)s: Creating Student with ID %(sid)s Matric_no %(matric_no)s ' % vars()) 125 student_obj = getattr(self,sid) 126 access_code = "%d" % random.randint(1000000000,9999999999) 127 student_obj.getContent().makeStudentMember(sid,access_code,) 128 pwl_dict = {'student_id': sid,'access_code':access_code} 129 student_obj.invokeFactory('StudentApplication','application') 130 application = student_obj.application 131 da = {'Title': 'Application Data'} 132 student_obj.invokeFactory('StudentPersonal','personal') 133 da['jamb_reg_no'] = student.get('EntryRegNo') 134 personal = student_obj.personal 135 dp = {'Title': 'Personal Data'} 136 student_obj.invokeFactory('StudentClearance','clearance') 137 clearance = student_obj.clearance 138 dc = {'Title': 'Clearance Data'} 139 dc['matric_no'] = matric_no 140 state = student.get('State') 141 lga = student.get('LGA') 142 if state and lga: 143 lga = state + ' / ' + lga 144 else: 145 lga = "None" 146 dc['lga'] = lga 147 dc['nationality'] = student.get('Nationality') 148 dc['email'] = student.get('Emailaddress') 149 dp['firstname'] = student.get('FirstName') 150 dp['middlename'] = student.get('MiddleName') 151 dp['lastname'] = student.get('Lastname') 152 dp['former_surname'] = student.get('FormerSurname') 153 dp['sex'] = student.get('Sex') == 'F' 154 dp['perm_address'] = student.get('PermanentAddress') 155 dp['perm_city'] = student.get('PermanentAddressCity') 156 dp['campus_address'] = student.get('CampusAddress') 157 dp['phone'] = student.get('PhoneNumber') 158 application.getContent().edit(mapping=da) 159 personal.getContent().edit(mapping=dp) 160 clearance.getContent().edit(mapping=dc) 161 # 162 # Study Course 163 # 164 student_obj.invokeFactory('StudentStudyCourse','study_course') 165 studycourse = student_obj.study_course 166 dsc = {} 167 from_certificate = ['title', 168 'max_elect', 169 'max_pass', 170 'n_core', 171 'nr_years', 172 'probation_credits', 173 'promotion_credits', 174 'start_level', 175 ] 176 for f in from_certificate: 177 dsc[f] = getattr(certificate_doc,f) 178 dsc['faculty'] = fac_id 179 dsc['department'] = dep_id 180 dsc['study_course'] = certcode 181 css = student.get('CurrentSession') or '2004-2005' 182 cs = int(css.split('-')[0]) - 2000 183 cl = int(student.get('StudentLevel') or '100')/100 184 dsc['entry_session'] = "200%s" % (cs - cl) 185 dsc['clr_ac_pin'] = access_code 186 studycourse.getContent().edit(mapping=dsc) 187 # 188 # Level 189 # 190 ## l = getattr(studycourse,level,None) 191 ## if 0 and l is None: 192 ## #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep) 193 ## logger.info('Creating Level %(StudentLevel)s for %(fullname)s' % student) 194 ## studycourse.invokeFactory('StudentStudyLevel', level) 195 ## l = getattr(studycourse, level) 196 ## certificate = certs[certcode] 197 ## cert_level = getattr(certificate,level,None) 198 ## if cert_level is None: 199 ## logger.info('Level %(level)s not in %(certcode)s' % vars()) 200 ## l.getContent().edit(mapping={'Title': "Level %s" % level}) 201 else: 202 em = 'Student with ID %(MatricNo)s %(fullname)s already exists\n' % student 203 logger.info(em) 204 no_import.write(em) 205 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"\n' % student) 206 continue 207 if tr_count > MAX_TRANS: 208 transaction.commit() 209 em = 'Transaction commited\n' % student 210 logger.info(em) 211 tr_count = 0 212 tr_count += 1 213 pwl_dict.update(dc) 214 pwl_dict.update(da) 215 pwl_dict.update(dp) 216 wftool = self.portal_workflow 217 pwlist.append(pwl_template.substitute(pwl_dict)) 218 wftool.doActionFor(student_obj,'clear_and_validate') 219 student_obj.manage_setLocalRoles(sid, ['Owner',]) 220 wftool.doActionFor(application,'close') 221 application.manage_setLocalRoles(sid, ['Owner',]) 222 wftool.doActionFor(clearance,'close') 223 clearance.manage_setLocalRoles(sid, ['Owner',]) 224 wftool.doActionFor(personal,'close') 225 personal.manage_setLocalRoles(sid, ['Owner',]) 226 wftool.doActionFor(studycourse,'close_for_edit') 227 studycourse.manage_setLocalRoles(sid, ['Owner',]) 228 open("%s/import/pwlist-%s.csv" % (i_home,name),"w+").write('\n'.join(pwlist)) 229 return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1')) 230 ###) 231 232 security.declareProtected(ModifyPortalContent,"loadPumeResultsFromCSV")###( 233 def loadPumeResultsFromCSV(self): 234 """load Fulltime Studentdata from CSV values""" 235 import transaction 236 import random 237 tr_count = 0 238 name = 'pume_results' 239 no_import = False 240 if not no_import: 241 no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w") 242 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') 243 logger = logging.getLogger('%s_import' % name) 244 logger.info('Start loading from %s.csv' % name) 245 pwlist = [] 246 pwlist.append('"student_id","firstname","middlename","lastname","jamb_reg_no","access_code"') 247 pwl_template = Template('"$student_id","$firstname","$middlename","$lastname","$jamb_reg_no","$access_code"') 72 248 students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject() 73 249 try: … … 230 406 ###) 231 407 232 security.declareProtected(ModifyPortalContent,"loadPumeResultsFromCSV")###(233 def loadPumeResultsFromCSV(self):234 """load Fulltime Studentdata from CSV values"""235 import transaction236 import random237 tr_count = 0238 name = 'pume_results'239 no_import = False240 if not no_import:241 no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")242 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')243 logger = logging.getLogger('%s_import' % name)244 logger.info('Start loading from %s.csv' % name)245 pwlist = []246 pwlist.append('"student_id","firstname","middlename","lastname","jamb_reg_no","access_code"')247 pwl_template = Template('"$student_id","$firstname","$middlename","$lastname","$jamb_reg_no","$access_code"')248 students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()249 try:250 students = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))251 except:252 logger.error('Error reading %s.csv' % name)253 return254 l = self.portal_catalog({'meta_type': "StudentClearance",})255 matrics = []256 for s in l:257 matrics.append(s.getObject().getContent().matric_no)258 print matrics259 l = self.portal_catalog({'meta_type': "Certificate"})260 certs = {}261 for c in l:262 ca,ac,fa,dep_id,co,certcode = c.relative_path.split('/')263 cid = "%(dep_id)s_%(certcode)s" % vars()264 certs[cid] = c.getObject()265 for student in students:266 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"\n' % student)267 sid = student.get('MatricNo')268 if sid == "":269 em = 'Empty MatricNo\n'270 logger.info(em)271 no_import.write(em)272 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"\n' % student)273 continue274 certcode = makeCertificateCode(student.get('CourseMajor'))275 dep_id = student.get('Dept')276 fac_id = student.get('Faculty')277 cid = "%(dep_id)s_%(certcode)s" % vars()278 if cid not in certs.keys():279 em = 'Certificate with ID %s %s not found\n' % (certcode, student.get('CourseMajor'))280 logger.info(em)281 no_import.write(em)282 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"\n' % student)283 continue284 certificate_doc = certs[cid].getContent()285 level = student.get('StudentLevel')286 try:287 int(level)288 except:289 em = 'Student with ID %(MatricNo)s StudentLevel is empty\n' % student290 logger.info(em)291 no_import.write(em)292 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"\n' % student)293 continue294 matric_no = student.get('MatricNo')295 if matric_no not in matrics:296 matrics.append(matric_no)297 sid = self.generateStudentId(student.get('Lastname')[0])298 #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)299 students_folder.invokeFactory('Student', sid)300 logger.info('%(tr_count)s: Creating Student with ID %(sid)s Matric_no %(matric_no)s ' % vars())301 student_obj = getattr(self,sid)302 access_code = "%d" % random.randint(1000000000,9999999999)303 student_obj.getContent().addMember(sid,access_code ,)304 pwl_dict = {'student_id': sid,'access_code':access_code}305 student_obj.invokeFactory('StudentApplication','application')306 application = student_obj.application307 da = {'Title': 'Application Data'}308 student_obj.invokeFactory('StudentPersonal','personal')309 da['jamb_reg_no'] = student.get('EntryRegNo')310 personal = student_obj.personal311 dp = {'Title': 'Personal Data'}312 student_obj.invokeFactory('StudentClearance','clearance')313 clearance = student_obj.clearance314 dc = {'Title': 'Clearance Data'}315 dc['matric_no'] = matric_no316 state = student.get('State')317 lga = student.get('LGA')318 if state and lga:319 lga = state + ' / ' + lga320 else:321 lga = "None"322 dc['lga'] = lga323 dc['nationality'] = student.get('Nationality')324 dc['email'] = student.get('Emailaddress')325 dp['firstname'] = student.get('FirstName')326 dp['middlename'] = student.get('MiddleName')327 dp['lastname'] = student.get('Lastname')328 dp['former_surname'] = student.get('FormerSurname')329 dp['sex'] = student.get('Sex') == 'F'330 dp['perm_address'] = student.get('PermanentAddress')331 dp['perm_city'] = student.get('PermanentAddressCity')332 dp['campus_address'] = student.get('CampusAddress')333 dp['phone'] = student.get('PhoneNumber')334 application.getContent().edit(mapping=da)335 personal.getContent().edit(mapping=dp)336 clearance.getContent().edit(mapping=dc)337 #338 # Study Course339 #340 student_obj.invokeFactory('StudentStudyCourse','study_course')341 studycourse = student_obj.study_course342 dsc = {}343 from_certificate = ['title',344 'max_elect',345 'max_pass',346 'n_core',347 'nr_years',348 'probation_credits',349 'promotion_credits',350 'start_level',351 ]352 for f in from_certificate:353 dsc[f] = getattr(certificate_doc,f)354 dsc['faculty'] = fac_id355 dsc['department'] = dep_id356 dsc['study_course'] = certcode357 css = student.get('CurrentSession') or '2004-2005'358 cs = int(css.split('-')[0]) - 2000359 cl = int(student.get('StudentLevel') or '100')/100360 dsc['entry_session'] = "200%s" % (cs - cl)361 dsc['clr_ac_pin'] = access_code362 studycourse.getContent().edit(mapping=dsc)363 #364 # Level365 #366 ## l = getattr(studycourse,level,None)367 ## if 0 and l is None:368 ## #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)369 ## logger.info('Creating Level %(StudentLevel)s for %(fullname)s' % student)370 ## studycourse.invokeFactory('StudentStudyLevel', level)371 ## l = getattr(studycourse, level)372 ## certificate = certs[certcode]373 ## cert_level = getattr(certificate,level,None)374 ## if cert_level is None:375 ## logger.info('Level %(level)s not in %(certcode)s' % vars())376 ## l.getContent().edit(mapping={'Title': "Level %s" % level})377 else:378 em = 'Student with ID %(MatricNo)s %(fullname)s already exists\n' % student379 logger.info(em)380 no_import.write(em)381 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"\n' % student)382 continue383 if tr_count > MAX_TRANS:384 transaction.commit()385 em = 'Transaction commited\n' % student386 logger.info(em)387 tr_count = 0388 tr_count += 1389 pwl_dict.update(dc)390 pwl_dict.update(da)391 pwl_dict.update(dp)392 wftool = self.portal_workflow393 pwlist.append(pwl_template.substitute(pwl_dict))394 wftool.doActionFor(student_obj,'clear_and_validate')395 student_obj.manage_setLocalRoles(sid, ['Owner',])396 wftool.doActionFor(application,'close')397 application.manage_setLocalRoles(sid, ['Owner',])398 wftool.doActionFor(clearance,'close')399 clearance.manage_setLocalRoles(sid, ['Owner',])400 wftool.doActionFor(personal,'close')401 personal.manage_setLocalRoles(sid, ['Owner',])402 wftool.doActionFor(studycourse,'close_for_edit')403 studycourse.manage_setLocalRoles(sid, ['Owner',])404 open("%s/import/pwlist-%s.csv" % (i_home,name),"w+").write('\n'.join(pwlist))405 return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))406 ###)407 408 408 security.declareProtected(ModifyPortalContent,"loadFullTimeStudentsResultsFromCSV") ###( 409 409 def loadFullTimeStudentsResultsFromCSV(self):
Note: See TracChangeset for help on using the changeset viewer.