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

File:
1 edited

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    ###)
Note: See TracChangeset for help on using the changeset viewer.