Changeset 1146


Ignore:
Timestamp:
29 Dec 2006, 07:00:35 (18 years ago)
Author:
joachim
Message:

added import for registered and results,
the csv-files must contain a modified heading
results can be viewed with session_results_anon_view
modified Courses import to use courses catalog

Location:
WAeUP_SRP/trunk
Files:
10 added
14 edited
2 moved

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/Academics.py

    r1082 r1146  
    187187        """install Universityspecific Courses from CSV values"""
    188188        #return
     189        not_allowed =re.compile('[^A-Z0-9]')
    189190        wf = self.portal_workflow
    190191        name = 'Courses'
     
    208209            logger.error('Error reading %s.csv' % name)
    209210            return
    210         no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
     211        imported = []
     212        not_imported = []
    211213        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)
    213217        l = self.portal_catalog({'meta_type': "Faculty"})
    214218        facs = {}
     
    222226        course_list = [ c.id for c in cl]
    223227        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
    226237            depid = course.get('department_code').upper()
    227238            if depid in deps.keys():
    228239                dept= deps.get(depid)
    229240            else:
    230                 msg = "Department %(department_code)s for Course %(code)s not found" % course
    231                 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)
    234245                continue
    235             course_id = course.get('code')
    236246            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)
    241251                continue
     252            level = "%c00" % course_id[-3]
     253            course['level'] = level
    242254            cf = dept.courses
    243255            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()
    244268            if c is None:
    245269                logger.info('Creating Course %(code)s  %(title)s in Department %(department_code)s' % course)
    246270                cf.invokeFactory('Course', course_id)
    247271                course_list.append(course_id)
     272                imported.append(format % course)
    248273                c = getattr(cf,course_id)
     274                self.courses_catalog.addRecord(**cd)
     275            else:
     276                self.courses_catalog.modifyRecord(**cd)
    249277            c.getContent().edit(mapping=course)
    250278            review_state = course.get('review_state')
    251279            if review_state == "checked" and wf.getInfoFor(c,'review_state',None) != 'checked':
    252280                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))
    253287        return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    254288    ###)
  • WAeUP_SRP/trunk/Students.py

    r1143 r1146  
    809809    ###)
    810810
     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
    811993    security.declareProtected(ModifyPortalContent,"updateStudyCourse")###(
    812994    def updateStudyCourse(self):
     
    10851267            no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
    10861268            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)
    10881270        logger.info('Start loading from %s.csv' % name)
    10891271        students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
  • WAeUP_SRP/trunk/WAeUPTables.py

    r1140 r1146  
    4444
    4545
    46 class WAeUPTable(ZCatalog):
     46class WAeUPTable(ZCatalog): ###(
    4747
    4848    implements(IWAeUPTable)
     
    121121        open("%s/import/%s-%s.csv" % (i_home,self.getId(),current),"w+").write('\n'.join(csv))
    122122
    123 
    124 class AccommodationTable(WAeUPTable):
     123###)
     124
     125class AccommodationTable(WAeUPTable): ###(
    125126
    126127    meta_type = 'WAeUP Accommodation Tool'
     
    148149InitializeClass(AccommodationTable)
    149150
    150 class PinTable(WAeUPTable):
     151###)
     152
     153class PinTable(WAeUPTable): ###(
    151154    from ZODB.POSException import ConflictError
    152155    meta_type = 'WAeUP Pin Tool'
     
    191194InitializeClass(PinTable)
    192195
    193 class PumeResultsTable(WAeUPTable):
     196###)
     197
     198class PumeResultsTable(WAeUPTable): ###(
    194199
    195200    meta_type = 'WAeUP PumeResults Tool'
     
    202207InitializeClass(PumeResultsTable)
    203208
    204 class StudentsCatalog(WAeUPTable):
     209###)
     210
     211class StudentsCatalog(WAeUPTable): ###(
    205212
    206213    meta_type = 'WAeUP Students Catalog'
     
    213220InitializeClass(StudentsCatalog)
    214221
     222###)
     223
     224class 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
     233InitializeClass(CoursesCatalog)
     234
     235class 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
     244InitializeClass(RegisteredImport)
     245
     246class 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
     255InitializeClass(ResultsImport)
     256
     257###)
     258
     259class 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
     268InitializeClass(PaymentsCatalog)
     269
     270###)
     271
    215272# BBB:
    216273AccomodationTable = AccommodationTable
  • WAeUP_SRP/trunk/Widgets.py

    r1082 r1146  
    354354###)
    355355
     356class 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
     391InitializeClass(MatricNoWidget)
     392
     393widgetRegistry.register(MatricNoWidget)
     394###)
     395
     396class 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
     488InitializeClass(WAeUPMultilineResultsWidget)
     489widgetRegistry.register(WAeUPMultilineResultsWidget)
     490###)
     491
    356492class WAeUPResultsWidget(CPSStringWidget): ###(
    357493    """ WAeUPResults Widget"""
     
    417553        datamodel = datastructure.getDataModel()
    418554        widget_id = self.getWidgetId()
    419         v = datamodel[self.fields[0]]
    420         datastructure[widget_id] = v
    421555        datastructure[widget_id+'_s'] = ''
    422556        datastructure[widget_id+'_g'] = ''
     
    446580    def __str__(self):
    447581        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)
    448585###)
    449586
  • WAeUP_SRP/trunk/exportimport.py

    r971 r1146  
    9898##                                           ],'SectionReader')
    9999    importWAeUPTable(site.portal_accommodation, '', context,'accommodation')
     100    importWAeUPTable(site.courses_catalog, '', context,'courses_catalog')
     101    importWAeUPTable(site.payments_catalog, '', context,'payments_catalog')
    100102    importWAeUPTable(site.portal_pins, '', context,'pins')
    101103    importWAeUPTable(site.portal_pumeresults, '', context,'pumeresults')
     104    importWAeUPTable(site.registered_import, '', context,'registered_import')
     105    importWAeUPTable(site.results_import, '', context,'results_import')
    102106    importWAeUPTable(site.students_catalog, '', context,'students_catalog')
    103107
  • WAeUP_SRP/trunk/profiles/default/layouts.xml

    r1002 r1146  
    2020 <object name="student_application_fe" meta_type="CPS Layout"/>
    2121 <object name="student_application_search" meta_type="CPS Layout"/>
     22 <object name="student_session_results_search" meta_type="CPS Layout"/>
    2223 <object name="student_clearance" meta_type="CPS Layout"/>
    2324 <object name="student_clearance_fe" meta_type="CPS Layout"/>
  • WAeUP_SRP/trunk/profiles/default/layouts/student_accommodation.xml

    r1139 r1146  
    169169 </table>
    170170</object>
    171 
  • WAeUP_SRP/trunk/profiles/default/layouts/student_accommodation_fe.xml

    r1139 r1146  
    121121  </row>
    122122  <row>
    123    <cell name="student_status"/>
    124   </row>
    125   <row>
    126123   <cell name="acco_res_sc_pin"/>
    127124  </row>
  • WAeUP_SRP/trunk/profiles/default/schemas.xml

    r910 r1146  
    99 <object name="course" meta_type="CPS Schema"/>
    1010 <object name="department" meta_type="CPS Schema"/>
     11 <object name="epayment" meta_type="CPS Schema"/>
    1112 <object name="faculty" meta_type="CPS Schema"/>
    1213 <object name="members" meta_type="CPS Schema"/>
  • WAeUP_SRP/trunk/profiles/default/schemas/course.xml

    r752 r1146  
    1212 </field>
    1313 <field name="semester" meta_type="CPS Int Field"/>
     14 <field name="level" meta_type="CPS String Field"/>
    1415 <field name="session" meta_type="CPS String Field"/>
    1516</object>
  • WAeUP_SRP/trunk/profiles/default/skins.xml

    r916 r1146  
    99 <object name="waeup_directory" meta_type="Filesystem Directory View"
    1010    directory="WAeUP_SRP/skins/waeup_directory"/>
     11 <object name="waeup_epayment" meta_type="Filesystem Directory View"
     12    directory="WAeUP_SRP/skins/waeup_epayment"/>
    1113 <object name="waeup_academics" meta_type="Filesystem Directory View"
    1214    directory="WAeUP_SRP/skins/waeup_academics"/>
     
    2123  <layer name="waeup_default" insert-after="waeup_custom"/>
    2224  <layer name="waeup_directory" insert-after="waeup_custom"/>
     25  <layer name="waeup_epayment" insert-after="waeup_custom"/>
    2326  <layer name="waeup_pins" insert-after="waeup_custom"/>
    2427  <layer name="waeup_student" insert-after="waeup_custom"/>
     
    3033  <layer name="waeup_default" insert-after="waeup_custom"/>
    3134  <layer name="waeup_directory" insert-after="waeup_custom"/>
     35  <layer name="waeup_epayment" insert-after="waeup_custom"/>
    3236  <layer name="waeup_pins" insert-after="waeup_custom"/>
    3337  <layer name="waeup_student" insert-after="waeup_custom"/>
  • WAeUP_SRP/trunk/profiles/default/students_catalog.xml

    r1062 r1146  
    1010 <column value="email"/>
    1111 <column value="level"/>
     12 <column value="entry_mode"/>
    1213 <index name="id" meta_type="FieldIndex">
    1314  <indexed_attr value="id"/>
  • WAeUP_SRP/trunk/profiles/default/toolset.xml

    r971 r1146  
    33 <required tool_id="portal_accommodation"
    44           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"/>
    59 <required tool_id="portal_pins"
    610           class="Products.WAeUP_SRP.WAeUPTables.PinTable"/>
    711 <required tool_id="portal_pumeresults"
    812           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"/>
    917 <required tool_id="students_catalog"
    1018           class="Products.WAeUP_SRP.WAeUPTables.StudentsCatalog"/>
  • WAeUP_SRP/trunk/profiles/default/types/StudentStudyLevel.xml

    r731 r1146  
    1616 <property name="allow_discussion">False</property>
    1717 <property name="cps_is_searchable">False</property>
    18  <property name="cps_proxy_type">folder</property>
     18 <property name="cps_proxy_type">btreefolder</property>
    1919 <property name="cps_display_as_document_in_listing">True</property>
    2020 <property name="schemas">
  • WAeUP_SRP/trunk/skins/waeup_epayment/online_payment.pt

    r1137 r1146  
    4343            <td>Bill To</td>
    4444            <td>
    45               &nbsp;Address of the payer.&nbsp; Required for e-commerce application. Student name can be here for school payment
     45              &nbsp;Address of the payer.&nbsp; Required for e-commerce application.
     46              Student name can be here for school payment
    4647            purposes
    4748            </td>
Note: See TracChangeset for help on using the changeset viewer.