Changeset 1146
- Timestamp:
- 29 Dec 2006, 07:00:35 (18 years ago)
- Location:
- WAeUP_SRP/trunk
- Files:
-
- 10 added
- 14 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
WAeUP_SRP/trunk/Academics.py
r1082 r1146 187 187 """install Universityspecific Courses from CSV values""" 188 188 #return 189 not_allowed =re.compile('[^A-Z0-9]') 189 190 wf = self.portal_workflow 190 191 name = 'Courses' … … 208 209 logger.error('Error reading %s.csv' % name) 209 210 return 210 no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w") 211 imported = [] 212 not_imported = [] 211 213 heading = ','.join(['"%s"' % fn for fn in fields]) 212 no_import.write('%s\n' % heading) 214 imported.append(heading) 215 not_imported.append(heading) 216 #no_import.write('%s\n' % heading) 213 217 l = self.portal_catalog({'meta_type': "Faculty"}) 214 218 facs = {} … … 222 226 course_list = [ c.id for c in cl] 223 227 for course in courses: 224 processing = "processing %s" % format 225 logger.info(processing % course) 228 #processing = "processing %s" % format 229 #logger.info(processing % course) 230 course_id = course.get('code') 231 if not_allowed.search(course_id): 232 msg = ',"Invalid Course Code"' 233 #logger.info(msg) 234 #not_imported.append('"%s",' % msg) 235 not_imported.append(format % course + msg) 236 continue 226 237 depid = course.get('department_code').upper() 227 238 if depid in deps.keys(): 228 239 dept= deps.get(depid) 229 240 else: 230 msg = "Department %(department_code)s for Course %(code)s not found" % course231 logger.info(msg)232 no_import.write('"%s",' % msg)233 no _import.write(format % course + "\n")241 msg = ',"Department not found"' 242 #logger.info(msg) 243 #not_imported.append('"%s",' % msg) 244 not_imported.append(format % course + msg) 234 245 continue 235 course_id = course.get('code')236 246 if course_id in course_list: 237 msg = "Multiple Course Code"238 logger.info(msg)239 no_import.write('"%s",' % msg)240 no _import.write(format % course + "\n")247 msg = ',"Multiple Course Code"' 248 #logger.info(msg) 249 #not_imported.append('"%s",' % msg) 250 not_imported.append(format % course + msg) 241 251 continue 252 level = "%c00" % course_id[-3] 253 course['level'] = level 242 254 cf = dept.courses 243 255 c = getattr(cf,course_id,None) 256 cd_fields = (('code','code'), 257 ('faculty','faculty_code'), 258 ('department','department_code'), 259 ('title','title'), 260 ('credits','credits'), 261 ('level','level'), 262 ('semester','semester'), 263 ) 264 cd = {} 265 for t,f in cd_fields: 266 cd[t] = course[f] 267 #import pdb;pdb.set_trace() 244 268 if c is None: 245 269 logger.info('Creating Course %(code)s %(title)s in Department %(department_code)s' % course) 246 270 cf.invokeFactory('Course', course_id) 247 271 course_list.append(course_id) 272 imported.append(format % course) 248 273 c = getattr(cf,course_id) 274 self.courses_catalog.addRecord(**cd) 275 else: 276 self.courses_catalog.modifyRecord(**cd) 249 277 c.getContent().edit(mapping=course) 250 278 review_state = course.get('review_state') 251 279 if review_state == "checked" and wf.getInfoFor(c,'review_state',None) != 'checked': 252 280 self.portal_workflow.doActionFor(c,'approve') 281 current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S") 282 if len(not_imported) > 1: 283 open("%s/import/%s_%s_not_imported.csv" % (i_home,name,current),"w")\ 284 .write('\n'.join(not_imported)) 285 open("%s/import/%s_%s_imported.csv" % (i_home,name,current),"w")\ 286 .write('\n'.join(imported)) 253 287 return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1')) 254 288 ###) -
WAeUP_SRP/trunk/Students.py
r1143 r1146 809 809 ###) 810 810 811 security.declareProtected(ModifyPortalContent,"importRegisteredStudents")###( 812 def importRegisteredStudents(self): 813 """load Registered Studentdata from CSV values""" 814 import transaction 815 import random 816 #from pdb import set_trace 817 wftool = self.portal_workflow 818 current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S") 819 students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject() 820 tr_count = 1 821 total = 0 822 #name = 'pume_results' 823 name = 'Registered' 824 table = self.registered_import 825 no_import = [] 826 imported = [] 827 logger = logging.getLogger('Import.%s' % name) 828 try: 829 registered = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb")) 830 except: 831 logger.error('Error reading %s.csv' % name) 832 return 833 l = self.portal_catalog({'meta_type': "Certificate"}) 834 certs = {} 835 cert_docs = {} 836 for f in l: 837 certs[f.getId] = f.getObject().getContent() 838 start = True 839 res = table() 840 regs = [] 841 if len(res) > 0: 842 regs = [s.matric_no for s in res] 843 for student in registered: 844 if start: 845 start = False 846 logger.info('start loading from %s.csv' % name) 847 s = ','.join(['"(%s)"' % fn for fn in student.keys()]) 848 imported.append(s) 849 no_import.append('%s,"Error"' % s) 850 format = ','.join(['"%%(%s)s"' % fn for fn in student.keys()]) 851 format_error = format + ',"%(Error)s"' 852 no_certificate = "no certificate %s" % format 853 if student.get('matric_no') == '': 854 student['Error'] = "Empty matric_no" 855 no_import.append( format_error % student) 856 continue 857 if student.get('matric_no') in regs: 858 student['Error'] = "Duplicate" 859 no_import.append( format_error % student) 860 continue 861 cert_id = makeCertificateCode(student.get('Coursemajorcode')) 862 if cert_id not in certs.keys(): 863 student['Error'] = "No Certificate %s" % cert_id 864 no_import.append( format_error % student) 865 continue 866 try: 867 table.addRecord(**student) 868 except ValueError: 869 import pdb;pdb.set_trace() 870 student['Error'] = "Duplicate" 871 no_import.append( format_error % student) 872 continue 873 regs.append(student.get('matric_no')) 874 imported.append(format % student) 875 tr_count += 1 876 if tr_count > 1000: 877 if len(no_import) > 0: 878 open("%s/import/%s_not_imported%s.csv" % (i_home,name,current),"a").write( 879 '\n'.join(no_import)) 880 no_import = [] 881 imported = [] 882 open("%s/import/%simported%s.csv" % (i_home,name,current),"a").write( 883 '\n'.join(no_import)) 884 em = '%d transactions commited total %s\n' % (tr_count,total) 885 transaction.commit() 886 logger.info(em) 887 total += tr_count 888 tr_count = 0 889 open("%s/import/%simported%s.csv" % (i_home,name,current),"a").write( 890 '\n'.join(no_import)) 891 open("%s/import/%s_not_imported%s.csv" % (i_home,name,current),"a").write( 892 '\n'.join(no_import)) 893 return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1')) 894 ###) 895 896 security.declareProtected(ModifyPortalContent,"importResults")###( 897 def importResults(self): 898 """load Registered Studentdata from CSV values""" 899 import transaction 900 import random 901 #from pdb import set_trace 902 wftool = self.portal_workflow 903 current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S") 904 students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject() 905 tr_count = 1 906 total = 0 907 #name = 'pume_results' 908 name = 'Results' 909 table = self.results_import 910 no_import = [] 911 imported = [] 912 logger = logging.getLogger('Import.%s' % name) 913 try: 914 results = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb")) 915 except: 916 logger.error('Error reading %s.csv' % name) 917 return 918 l = self.portal_catalog({'meta_type': "Course"}) 919 courses = [f.getId for f in l] 920 start = True 921 res = table() 922 regs = [] 923 if len(res) > 0: 924 regs = [s.key for s in res] 925 no_course = [] 926 no_course_list = [] 927 course_count = 0 928 for result in results: 929 if start: 930 start = False 931 logger.info('start loading from %s.csv' % name) 932 s = ','.join(['"(%s)"' % fn for fn in result.keys()]) 933 imported.append(s) 934 no_import.append('%s,"Error"' % s) 935 format = ','.join(['"%%(%s)s"' % fn for fn in result.keys()]) 936 format_error = format + ',"%(Error)s"' 937 no_certificate = "no certificate %s" % format 938 course_id = result.get('CosCode') 939 key = result.get('matric_no')+course_id 940 if key == '': 941 result['Error'] = "Empty matric_no" 942 no_import.append( format_error % result) 943 continue 944 if key in regs: 945 result['Error'] = "Duplicate" 946 no_import.append( format_error % result) 947 continue 948 if course_id not in courses: 949 if course_id not in no_course: 950 course_count +=1 951 no_course.append(course_id) 952 no_course_list.append('"%s"' % course_id) 953 #result['Error'] = "No Course" 954 #logger.info(format_error % result) 955 result['key'] = key 956 try: 957 table.addRecord(**result) 958 except ValueError: 959 import pdb;pdb.set_trace() 960 result['Error'] = "Duplicate" 961 no_import.append( format_error % result) 962 continue 963 regs.append(key) 964 imported.append(format % result) 965 tr_count += 1 966 if tr_count > 1000: 967 if len(no_import) > 0: 968 open("%s/import/%s_not_imported%s.csv" % (i_home,name,current),"a").write( 969 '\n'.join(no_import)) 970 no_import = [] 971 open("%s/import/%simported%s.csv" % (i_home,name,current),"a").write( 972 '\n'.join(imported)) 973 imported = [] 974 if no_course_list: 975 open("%s/import/%sno_courses%s.csv" % (i_home,name,current),"a").write( 976 '\n'.join(no_course_list)) 977 no_course_list = [] 978 em = '%d transactions commited total %s\n courses not found %s' % (tr_count,total,course_count) 979 transaction.commit() 980 logger.info(em) 981 total += tr_count 982 tr_count = 0 983 open("%s/import/%simported%s.csv" % (i_home,name,current),"a").write( 984 '\n'.join(imported)) 985 open("%s/import/%s_not_imported%s.csv" % (i_home,name,current),"a").write( 986 '\n'.join(no_import)) 987 if no_course_list: 988 open("%s/import/%sno_courses%s.csv" % (i_home,name,current),"a").write( 989 '\n'.join(no_course_list)) 990 return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1')) 991 ###) 992 811 993 security.declareProtected(ModifyPortalContent,"updateStudyCourse")###( 812 994 def updateStudyCourse(self): … … 1085 1267 no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w") 1086 1268 no_import.write('"Matnumber","CosCode","Ansbook","CosStuatus","Session","Mat_Cos","Score","CarryLevel","Grade","Weight","Semster","Verdict","Level","id","GPA"\n') 1087 logger = logging.getLogger(' Ímport.%s' % name)1269 logger = logging.getLogger('import.%s' % name) 1088 1270 logger.info('Start loading from %s.csv' % name) 1089 1271 students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject() -
WAeUP_SRP/trunk/WAeUPTables.py
r1140 r1146 44 44 45 45 46 class WAeUPTable(ZCatalog): 46 class WAeUPTable(ZCatalog): ###( 47 47 48 48 implements(IWAeUPTable) … … 121 121 open("%s/import/%s-%s.csv" % (i_home,self.getId(),current),"w+").write('\n'.join(csv)) 122 122 123 124 class AccommodationTable(WAeUPTable): 123 ###) 124 125 class AccommodationTable(WAeUPTable): ###( 125 126 126 127 meta_type = 'WAeUP Accommodation Tool' … … 148 149 InitializeClass(AccommodationTable) 149 150 150 class PinTable(WAeUPTable): 151 ###) 152 153 class PinTable(WAeUPTable): ###( 151 154 from ZODB.POSException import ConflictError 152 155 meta_type = 'WAeUP Pin Tool' … … 191 194 InitializeClass(PinTable) 192 195 193 class PumeResultsTable(WAeUPTable): 196 ###) 197 198 class PumeResultsTable(WAeUPTable): ###( 194 199 195 200 meta_type = 'WAeUP PumeResults Tool' … … 202 207 InitializeClass(PumeResultsTable) 203 208 204 class StudentsCatalog(WAeUPTable): 209 ###) 210 211 class StudentsCatalog(WAeUPTable): ###( 205 212 206 213 meta_type = 'WAeUP Students Catalog' … … 213 220 InitializeClass(StudentsCatalog) 214 221 222 ###) 223 224 class CoursesCatalog(WAeUPTable): ###( 225 226 meta_type = 'WAeUP Courses Catalog' 227 name = "students_catalog" 228 key = "code" 229 def __init__(self): 230 WAeUPTable.__init__(self, 'courses_catalog') 231 232 233 InitializeClass(CoursesCatalog) 234 235 class RegisteredImport(WAeUPTable): ###( 236 237 meta_type = 'Registered Import Table' 238 name = "registered_import" 239 key = "matric_no" 240 def __init__(self): 241 WAeUPTable.__init__(self, 'registered_import') 242 243 244 InitializeClass(RegisteredImport) 245 246 class ResultsImport(WAeUPTable): ###( 247 248 meta_type = 'Results Import Table' 249 name = "results_import" 250 key = "key" 251 def __init__(self): 252 WAeUPTable.__init__(self, 'results_import') 253 254 255 InitializeClass(ResultsImport) 256 257 ###) 258 259 class PaymentsCatalog(WAeUPTable): ###( 260 261 meta_type = 'WAeUP Payments Catalog' 262 name = "students_catalog" 263 key = "id" 264 def __init__(self): 265 WAeUPTable.__init__(self, 'payments_catalog') 266 267 268 InitializeClass(PaymentsCatalog) 269 270 ###) 271 215 272 # BBB: 216 273 AccomodationTable = AccommodationTable -
WAeUP_SRP/trunk/Widgets.py
r1082 r1146 354 354 ###) 355 355 356 class MatricNoWidget(CPSStringWidget): ###( 357 """ MatricNo Widget""" 358 meta_type = "MatricNo Widget" 359 def validate(self, datastructure, **kw): 360 """Validate datastructure and update datamodel.""" 361 valid = CPSStringWidget.validate(self, datastructure, **kw) 362 #import pdb;pdb.set_trace() 363 registered = self.registered_import 364 results = self.results_import 365 err = 0 366 if not valid: 367 err = 'Invalid MatricNo %s.' % (value) 368 else: 369 widget_id = self.getWidgetId() 370 value = datastructure[widget_id].upper() 371 #s = getStudentByRegNo(self,value) 372 while not err: 373 res = registered(matric_no = value) 374 if len(res) < 1: 375 err = 'No Student with MatricNo %s.' % (value) 376 continue 377 datastructure['student'] = res[0] 378 res = results(matric_no = value) 379 if len(res) < 1: 380 err = 'No Results with MatricNo %s.' % (value) 381 continue 382 datastructure['results'] = res 383 break 384 if err: 385 datastructure.setError(widget_id, err) 386 else: 387 datamodel = datastructure.getDataModel() 388 datamodel[self.fields[0]] = value 389 return not err 390 391 InitializeClass(MatricNoWidget) 392 393 widgetRegistry.register(MatricNoWidget) 394 ###) 395 396 class WAeUPMultilineResultsWidget(CPSStringWidget): ###( 397 """ WAeUPMultilineResults Widget""" 398 meta_type = "WAeUp Multiline Results Widget" 399 _properties = CPSWidget._properties + ( 400 {'id': 'nr_of_lines', 'type': 'int', 'mode': 'w', 401 'label': 'Nr of Lines'}, 402 ) 403 nr_of_lines = 5 404 def prepare(self, datastructure, **kw): ###( 405 """Prepare datastructure from datamodel.""" 406 datamodel = datastructure.getDataModel() 407 #import pdb;pdb.set_trace() 408 widget_id = self.getWidgetId() 409 v = datamodel[self.fields[0]] 410 if type(v) is ListType and v: 411 nr_results = len(v) 412 else: 413 v = [] 414 nr_results = 0 415 count = 1 416 for s,g in v: 417 wid = "%s%02d"% (widget_id,count) 418 datastructure[wid+'_s'] = s 419 datastructure[wid+'_g'] = g 420 count += 1 421 if nr_results < self.nr_of_lines: 422 for line in range(nr_results,self.nr_of_lines): 423 v.append(('','')) 424 wid = "%s%02d"% (widget_id,line) 425 datastructure[wid+'_s'] = '' 426 datastructure[wid+'_g'] = '' 427 datastructure[widget_id] = v 428 datastructure[widget_id+'_s'] = '' 429 datastructure[widget_id+'_g'] = '' 430 ###) 431 432 def validate(self, datastructure, **kw): ###( 433 """Validate datastructure and update datamodel.""" 434 #import pdb;pdb.set_trace() 435 widget_id = self.getWidgetId() 436 err = 0 437 lines = [] 438 for line in range(1,30): 439 wid = "%s%02d"% (widget_id,line) 440 if not datastructure.has_key(wid+'_s'): 441 break 442 lines.append((datastructure[wid+'_s'].strip(), 443 datastructure[wid+'_g'].strip())) 444 445 s = datastructure[widget_id+'_s'].strip() 446 g = datastructure[widget_id+'_g'].strip() 447 if s and g: 448 lines.append((s,g)) 449 active = [] 450 for s,g in lines: 451 if g != "": 452 active.append((s,g)) 453 if err: 454 datastructure.setError(widget_id, err) 455 else: 456 datamodel = datastructure.getDataModel() 457 datamodel[self.fields[0]] = active 458 return not err 459 ###) 460 461 def render(self, mode, datastructure, **kw): ###( 462 """Render in mode from datastructure.""" 463 render_method = 'widget_waeup_multiline_result_render' 464 meth = getattr(self, render_method, None) 465 if meth is None: 466 raise RuntimeError("Unknown Render Method %s for widget type %s" 467 % (render_method, self.getId())) 468 #import pdb;pdb.set_trace() 469 datamodel = datastructure.getDataModel() 470 widget_id = self.getWidgetId() 471 lines = datamodel[self.fields[0]] 472 if len(lines) < self.nr_of_lines: 473 for line in range(len(lines),self.nr_of_lines + 1): 474 lines.append(('','')) 475 datastructure[widget_id] = lines 476 datastructure[widget_id+'_s'] = '' 477 datastructure[widget_id+'_g'] = '' 478 ## count = 1 479 ## for s,g in v: 480 ## wid = "%s%02d"% (widget_id,count) 481 ## count += 1 482 return meth(mode=mode, 483 datastructure=datastructure, 484 ) 485 ###) 486 487 488 InitializeClass(WAeUPMultilineResultsWidget) 489 widgetRegistry.register(WAeUPMultilineResultsWidget) 490 ###) 491 356 492 class WAeUPResultsWidget(CPSStringWidget): ###( 357 493 """ WAeUPResults Widget""" … … 417 553 datamodel = datastructure.getDataModel() 418 554 widget_id = self.getWidgetId() 419 v = datamodel[self.fields[0]]420 datastructure[widget_id] = v421 555 datastructure[widget_id+'_s'] = '' 422 556 datastructure[widget_id+'_g'] = '' … … 446 580 def __str__(self): 447 581 return "%s-%s-%s" % (self.p,self.b,self.n) 582 583 def __repr__(self): 584 return "%s%s%s" % (self.p,self.b,self.n) 448 585 ###) 449 586 -
WAeUP_SRP/trunk/exportimport.py
r971 r1146 98 98 ## ],'SectionReader') 99 99 importWAeUPTable(site.portal_accommodation, '', context,'accommodation') 100 importWAeUPTable(site.courses_catalog, '', context,'courses_catalog') 101 importWAeUPTable(site.payments_catalog, '', context,'payments_catalog') 100 102 importWAeUPTable(site.portal_pins, '', context,'pins') 101 103 importWAeUPTable(site.portal_pumeresults, '', context,'pumeresults') 104 importWAeUPTable(site.registered_import, '', context,'registered_import') 105 importWAeUPTable(site.results_import, '', context,'results_import') 102 106 importWAeUPTable(site.students_catalog, '', context,'students_catalog') 103 107 -
WAeUP_SRP/trunk/profiles/default/layouts.xml
r1002 r1146 20 20 <object name="student_application_fe" meta_type="CPS Layout"/> 21 21 <object name="student_application_search" meta_type="CPS Layout"/> 22 <object name="student_session_results_search" meta_type="CPS Layout"/> 22 23 <object name="student_clearance" meta_type="CPS Layout"/> 23 24 <object name="student_clearance_fe" meta_type="CPS Layout"/> -
WAeUP_SRP/trunk/profiles/default/layouts/student_accommodation.xml
r1139 r1146 169 169 </table> 170 170 </object> 171 -
WAeUP_SRP/trunk/profiles/default/layouts/student_accommodation_fe.xml
r1139 r1146 121 121 </row> 122 122 <row> 123 <cell name="student_status"/>124 </row>125 <row>126 123 <cell name="acco_res_sc_pin"/> 127 124 </row> -
WAeUP_SRP/trunk/profiles/default/schemas.xml
r910 r1146 9 9 <object name="course" meta_type="CPS Schema"/> 10 10 <object name="department" meta_type="CPS Schema"/> 11 <object name="epayment" meta_type="CPS Schema"/> 11 12 <object name="faculty" meta_type="CPS Schema"/> 12 13 <object name="members" meta_type="CPS Schema"/> -
WAeUP_SRP/trunk/profiles/default/schemas/course.xml
r752 r1146 12 12 </field> 13 13 <field name="semester" meta_type="CPS Int Field"/> 14 <field name="level" meta_type="CPS String Field"/> 14 15 <field name="session" meta_type="CPS String Field"/> 15 16 </object> -
WAeUP_SRP/trunk/profiles/default/skins.xml
r916 r1146 9 9 <object name="waeup_directory" meta_type="Filesystem Directory View" 10 10 directory="WAeUP_SRP/skins/waeup_directory"/> 11 <object name="waeup_epayment" meta_type="Filesystem Directory View" 12 directory="WAeUP_SRP/skins/waeup_epayment"/> 11 13 <object name="waeup_academics" meta_type="Filesystem Directory View" 12 14 directory="WAeUP_SRP/skins/waeup_academics"/> … … 21 23 <layer name="waeup_default" insert-after="waeup_custom"/> 22 24 <layer name="waeup_directory" insert-after="waeup_custom"/> 25 <layer name="waeup_epayment" insert-after="waeup_custom"/> 23 26 <layer name="waeup_pins" insert-after="waeup_custom"/> 24 27 <layer name="waeup_student" insert-after="waeup_custom"/> … … 30 33 <layer name="waeup_default" insert-after="waeup_custom"/> 31 34 <layer name="waeup_directory" insert-after="waeup_custom"/> 35 <layer name="waeup_epayment" insert-after="waeup_custom"/> 32 36 <layer name="waeup_pins" insert-after="waeup_custom"/> 33 37 <layer name="waeup_student" insert-after="waeup_custom"/> -
WAeUP_SRP/trunk/profiles/default/students_catalog.xml
r1062 r1146 10 10 <column value="email"/> 11 11 <column value="level"/> 12 <column value="entry_mode"/> 12 13 <index name="id" meta_type="FieldIndex"> 13 14 <indexed_attr value="id"/> -
WAeUP_SRP/trunk/profiles/default/toolset.xml
r971 r1146 3 3 <required tool_id="portal_accommodation" 4 4 class="Products.WAeUP_SRP.WAeUPTables.AccommodationTable"/> 5 <required tool_id="courses_catalog" 6 class="Products.WAeUP_SRP.WAeUPTables.CoursesCatalog"/> 7 <required tool_id="payments_catalog" 8 class="Products.WAeUP_SRP.WAeUPTables.PaymentsCatalog"/> 5 9 <required tool_id="portal_pins" 6 10 class="Products.WAeUP_SRP.WAeUPTables.PinTable"/> 7 11 <required tool_id="portal_pumeresults" 8 12 class="Products.WAeUP_SRP.WAeUPTables.PumeResultsTable"/> 13 <required tool_id="registered_import" 14 class="Products.WAeUP_SRP.WAeUPTables.RegisteredImport"/> 15 <required tool_id="results_import" 16 class="Products.WAeUP_SRP.WAeUPTables.ResultsImport"/> 9 17 <required tool_id="students_catalog" 10 18 class="Products.WAeUP_SRP.WAeUPTables.StudentsCatalog"/> -
WAeUP_SRP/trunk/profiles/default/types/StudentStudyLevel.xml
r731 r1146 16 16 <property name="allow_discussion">False</property> 17 17 <property name="cps_is_searchable">False</property> 18 <property name="cps_proxy_type"> folder</property>18 <property name="cps_proxy_type">btreefolder</property> 19 19 <property name="cps_display_as_document_in_listing">True</property> 20 20 <property name="schemas"> -
WAeUP_SRP/trunk/skins/waeup_epayment/online_payment.pt
r1137 r1146 43 43 <td>Bill To</td> 44 44 <td> 45 Address of the payer. Required for e-commerce application. Student name can be here for school payment 45 Address of the payer. Required for e-commerce application. 46 Student name can be here for school payment 46 47 purposes 47 48 </td>
Note: See TracChangeset for help on using the changeset viewer.