Changeset 9209 for main/waeup.kofa/branches/uli-zc-async/tools
- Timestamp:
- 20 Sep 2012, 08:49:37 (13 years ago)
- Location:
- main/waeup.kofa/branches/uli-zc-async
- Files:
-
- 3 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/branches/uli-zc-async
- Property svn:mergeinfo changed
-
main/waeup.kofa/branches/uli-zc-async/tools/copy_media_files.py
r8523 r9209 78 78 return 79 79 80 def copy_file( src,dst):80 def copy_file(file_src, file_dst): 81 81 create_path(os.path.dirname(dst)) 82 82 print "COPY FILE: %s -> %s" % (file_src, file_dst) -
main/waeup.kofa/branches/uli-zc-async/tools/fix_import_file.py
r8785 r9209 65 65 'sex': 'gender', 66 66 'birthday': 'date', 67 'request_date': 'datetime',68 67 'marit_stat': 'marit_stat', 69 68 'session': 'session', … … 85 84 'lga': 'lga', 86 85 'order_id': 'no_int', 86 'uniben': 'former', 87 'nysc_year': 'year', 88 'alr_date': 'date', 89 'fst_sit_date': 'date', 90 'scd_sit_date': 'date', 91 'emp_start': 'date', 92 'emp_end': 'date', 93 'emp_start2': 'date', 94 'emp_end2': 'date', 95 'fst_sit_results': 'result', 96 'scd_sit_results': 'result', 97 'alr_results': 'result', 98 'email': 'email', 99 'fst_sit_type': 'sittype', 100 'scd_sit_type': 'sittype', 101 'resp_pay_reference': 'no_int', 102 'type': 'company', 103 'date': 'date', 104 'core_or_elective': 'bool', 105 'category': 'p_category', 106 'reg_transition': 'reg_state', # we completely change this column, 107 # since reg_state import is usually intended 108 'transition': 'reg_transition', 109 'payment_date': 'date', 110 'validation_date': 'date', 87 111 } 88 112 … … 90 114 COLNAME_MAPPING = { 91 115 # base data 116 'id': 'student_id', 92 117 'reg_state': 'state', 118 'reg_transition': 'state', 93 119 'jamb_reg_no': 'reg_number', 94 120 'matric_no': 'matric_number', 95 121 'birthday': 'date_of_birth', 96 122 'clr_ac_pin': 'clr_code', 123 # clearance 124 'hq_grade': 'hq_degree', 125 'uniben': 'former_matric', 126 'hq_type2': 'hq2_type', 127 'hq_grade2': 'hq2_degree', 128 'hq_school2': 'hq2_school', 129 'hq_matric_no2': 'hq2_matric_no', 130 'hq_session2': 'hq2_session', 131 'hq_disc2': 'hq2_disc', 132 'emp': 'employer', 133 'emp2': 'employer2', 134 'emp_position2': 'emp2_position', 135 'emp_start2': 'emp2_start', 136 'emp_end2': 'emp2_end', 137 'emp_reason2': 'emp2_reason', 97 138 # study course 98 139 'study_course': 'certificate', … … 117 158 'surcharge': 'surcharge_1', 118 159 'session_id': 'p_session', 160 'type': 'r_company', 119 161 } 120 162 … … 131 173 'courses_registered': 'courses registered', 132 174 'courses_validated': 'courses validated', 175 'admit': 'admitted', 176 'return': 'returning' 133 177 } 134 178 … … 143 187 """Replace input fieldnames by fieldnames of COLNAME_MAPPING. 144 188 """ 145 header = dict([(name, name) for name in fieldnames]) 189 # Remove whitespaces 190 header = dict([(name, name.strip()) for name in fieldnames]) 146 191 for in_name, out_name in COLNAME_MAPPING.items(): 147 if in_name not in header :192 if in_name not in header.values(): 148 193 continue 149 header[in_name] = out_name 194 # Inverse dictionary lookup 195 key = [key for key,value in header.items() if value==in_name][0] 196 header[key] = out_name 150 197 return header 151 198 … … 155 202 156 203 @classmethod 157 def student_id(self, value ):204 def student_id(self, value, row): 158 205 """ 'A123456' --> 'EA123456' 159 206 """ 160 207 if len(value) == 7: 161 return ' E' + value162 return value 163 164 @classmethod 165 def reg_state(self, value ):208 return 'K' + value 209 return value 210 211 @classmethod 212 def reg_state(self, value, row): 166 213 """ 'courses_validated' --> 'courses validated' 167 214 """ … … 169 216 170 217 @classmethod 171 def level(self, value): 218 def reg_transition(self, value, row): 219 if value == "admitted": 220 return "admit" 221 if value == "returning": 222 return "return" 223 return value 224 225 @classmethod 226 def level(self, value, row): 172 227 """ '000' --> '10' 228 '800' --> '999' if pg student 173 229 """ 174 230 try: … … 178 234 if number == 0: 179 235 return 10 236 if row.get('entry_mode') and row.get('entry_mode').startswith('pg'): 237 return 999 180 238 return number 181 239 182 240 @classmethod 183 def semester(self, value ):241 def semester(self, value, row): 184 242 """ '0' --> '9' 185 243 """ … … 193 251 194 252 @classmethod 195 def application_category(self, value ):253 def application_category(self, value, row): 196 254 """ '' --> 'no' 197 255 """ … … 201 259 202 260 @classmethod 203 def lga(self, value ):261 def lga(self, value, row): 204 262 """ Remove apostrophe 205 263 """ 206 264 if value == 'akwa_ibom_uru_offong_oruko': 207 265 return 'akwa_ibom_urue-offong-oruko' 266 if value == 'edo_ohionmwon': 267 return 'edo_orhionmwon' 268 269 if value == 'nassarawa_nassarawa': 270 return 'nassarawa_nassawara' 271 272 if value == 'kogi_mopa-muro-mopi': 273 return 'kogi_mopa-muro' 274 275 if value == 'delta_osimili-north': 276 return 'delta_oshielli-north' 277 278 if value == 'delta_osimili': 279 return 'delta_oshimili' 280 281 if value == 'delta_osimili-south': 282 return 'delta_oshimili-south' 208 283 try: 209 284 value = value.replace("'","") … … 220 295 221 296 @classmethod 222 def session(self, value ):297 def session(self, value, row): 223 298 """ '08' --> '2008' 224 299 '2008/2009' --> '2008' … … 244 319 245 320 @classmethod 246 def marit_stat(self, value): 321 def former(self, value, row): 322 """ True --> yes 323 '2008/2009' --> '2008' 324 """ 325 if value == 'True': 326 return 'yes' 327 return 328 329 @classmethod 330 def bool(self, value, row): 331 """ True --> 1 332 """ 333 if value in ('TRUE', 'True'): 334 return '1' 335 elif value in ('FALSE', 'False'): 336 return '0' 337 return 338 339 @classmethod 340 def year(self, value, row): 341 """ '0' --> '' 342 """ 343 if value == '0': 344 return 345 if value == 'None': 346 return 347 return value 348 349 350 @classmethod 351 def marit_stat(self, value, row): 247 352 """ 'True'/'False' --> 'married'/'unmarried' 248 353 """ … … 256 361 257 362 @classmethod 258 def gender(self, value ):363 def gender(self, value, row): 259 364 """ 'True'/'False' --> 'f'/'m' 260 365 """ … … 268 373 269 374 @classmethod 270 def date(self, value ):375 def date(self, value, row): 271 376 """ 'yyyy/mm/dd' --> 'yyyy-mm-dd' 272 377 """ … … 283 388 284 389 @classmethod 285 def no_int(self, value ):286 """ Add hash .390 def no_int(self, value, row): 391 """ Add hash and skip numbers starting with 999999 287 392 """ 288 393 # We add the hash symbol to avoid automatic number transformation 289 394 # in Excel and Calc for further processing 290 value += '#' 291 return value 292 293 294 @classmethod 295 def datetime(self, value): 296 """ 'yyyy/mm/dd' --> 'yyyy-mm-dd' 297 """ 298 #print "IN: ", value 299 if value == "None": 300 value = "" 301 elif value == "": 302 value = "" 303 else: 304 #value = datetime.datetime.strptime(value, '%Y/%m/%d') 305 #value = datetime.datetime.strftime(value, '%Y-%m-%d') 395 try: 396 intvalue = int(value) 397 value += '#' 398 except: 306 399 pass 307 #print "OUT: ", value 308 return value 309 310 @classmethod 311 def mode(self, value): 400 if value.startswith('999999'): 401 return 402 return value 403 404 @classmethod 405 def mode(self, value, row): 312 406 if value == "transfer_fulltime": 313 407 return "transfer_ft" … … 317 411 318 412 @classmethod 319 def password(self, value ):413 def password(self, value, row): 320 414 if value == "not set": 321 415 return "" … … 323 417 324 418 @classmethod 325 def nationality(self, value ):419 def nationality(self, value, row): 326 420 if value == "nigeria": 327 421 return "NG" 328 return value 329 330 @classmethod 331 def phone(self, value): 422 if value == "niger": 423 return "NE" 424 return value 425 426 @classmethod 427 def sittype(self, value, row): 428 if value == "nabtec": 429 return "nabteb" 430 return value 431 432 @classmethod 433 def company(self, value, row): 434 if value == "online": 435 return "interswitch" 436 return value 437 438 @classmethod 439 def p_category(self, value, row): 440 if value == "acceptance": 441 return "clearance" 442 return value 443 444 @classmethod 445 def email(self, value, row): 446 return value.strip() 447 448 @classmethod 449 def phone(self, value, row): 332 450 """ '<num-seq1>-<num-seq2> asd' -> '--<num-seq1><num-seq2>' 333 451 … … 335 453 of numbers. 336 454 """ 455 if not value: 456 return 457 value = value.strip('#') 337 458 value = value.replace('-', '') 338 459 value = value.replace('/', '') 339 460 match = RE_PHONE.match(value) 340 461 phone = match.groups()[0] 341 value = '-%s' % phone 342 return value 462 if value.startswith('234'): 463 value = '+' + value[:3] + '-' + value[3:] 464 else: 465 value = '-%s' % phone 466 return value + '#' 467 468 @classmethod 469 def result(self, value, row): 470 try: 471 liste = eval(value) 472 except: 473 return 474 if isinstance(liste,list): 475 return [(i[0].lower(),i[1]) for i in liste] 476 return 343 477 344 478 … … 357 491 header = convert_fieldnames(reader.fieldnames) 358 492 writer.writerow(header) 493 if row.get('reg_state') == 'student_created': 494 # We do not reimport student records which have never been accessed. 495 continue 496 if row.get('status') == 'started': 497 # We do not reimport started payments. 498 continue 359 499 for key, value in row.items(): 500 # Remove unwanted whitespaces. 501 row[key] = row[key].strip() 360 502 if not key in OPTIONS.keys(): 361 503 continue … … 365 507 print "WARNING: cannot find converter %s" % conv_name 366 508 continue 367 row[key] = converter(row[key] )509 row[key] = converter(row[key], row) 368 510 try: 369 511 writer.writerow(row)
Note: See TracChangeset for help on using the changeset viewer.