Changeset 1939


Ignore:
Timestamp:
20 Jun 2007, 08:43:33 (17 years ago)
Author:
joachim
Message:

add exportStudents

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/Students.py

    r1902 r1939  
    4141###)
    4242
    43 def response_write(response,s):
     43def response_write(response,s): ###(
    4444    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    4545    while s.find('<') > -1:
     
    4949        s = s.replace('>','&gt;')
    5050    response.write("%s<br>\n" % s)
     51
     52###)
    5153
    5254def getInt(s): ###(
     
    8183###)
    8284
    83 def checkJambNo(jnr):
     85def checkJambNo(jnr): ###(
    8486    try:
    8587        if len(jnr) != 10:
     
    9294    except:
    9395        return False
     96
     97###)
     98
     99def formatLGA(lga):
     100    if lga.find('_') > -1:
     101        return "%s / %s" % (lga.split('_')[0].upper(),lga.split('_')[1].upper())
     102    return lga
    94103
    95104class StudentsFolder(CPSDocument): ###(
     
    885894    ###)
    886895
     896    security.declareProtected(ModifyPortalContent,"exportStudents")###(
     897    def exportStudents(self):
     898        """export Studentsdata to a file"""
     899        logger = logging.getLogger('Students.exportStudents')
     900        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
     901        students_folder = self.portal_url.getPortalObject().campus.students
     902        export_file = "%s/export/students_%s.csv" % (i_home,current)
     903        from Products.AdvancedQuery import Eq, Between, Le,In,MatchRegexp
     904        aq_students = self.students_catalog.evalAdvancedQuery
     905        toexport = {'students_catalog': ("id",
     906                                         "matric_no",
     907                                         "jamb_reg_no",
     908                                         "review_state",
     909                                         "sex",
     910                                         "email",
     911                                         "faculty",
     912                                         "department",
     913                                         "course",
     914                                         "level",
     915                                        ),
     916                    'personal': ('firstname',
     917                                 'middlename',
     918                                 'lastname',
     919                                 'perm_address',
     920                                ),
     921                    'clearance': ('state',
     922                                  'lga',
     923                                 )
     924                  }
     925        res_list = []
     926        lines = []
     927        fields = []
     928        with_lga = False
     929        for k in toexport.keys():
     930            for f in toexport[k]:
     931                if f == 'lga' :
     932                    with_lga = True
     933                fields.append(f)
     934        headline = ','.join(fields)
     935        open(export_file,"a").write(headline +'\n')
     936        format = '"%(' + ')s","%('.join(fields) + ')s"'
     937        query = In('review_state',('cleared_and_validated',
     938                                'school_fee_paid',
     939                                'courses_registered',
     940                                'courses_validated'))
     941        students = aq_students(query)
     942        chunk = 100
     943        total = 0
     944        for student in students:
     945            not_all = False
     946            d = self.getFormattedStudentEntry(student)
     947            for k in toexport.keys()[1:]:
     948                try:
     949                    object = getattr(getattr(students_folder,student.id),k)
     950                    object_doc = object.getContent()
     951                except:
     952                    logger.info('%s %s record not found' % (student.id,k))
     953                    not_all = True
     954                    continue
     955                for f in toexport[k]:
     956                    d[f] = getattr(object_doc,f,'')
     957            if not_all:
     958                continue
     959            if with_lga:
     960                d['lga'] = formatLGA(d['lga'])
     961            lines.append(format % d)
     962            total += 1
     963            if total and not total % chunk or total == len(students):
     964                open(export_file,"a").write('\n'.join(lines) +'\n')
     965                anz = len(lines)
     966                logger.info("wrote %(anz)d to %(export_file)s" % vars())
     967                lines = []
     968        filename, extension = os.path.splitext(export_file)
     969        os.system('zip %s %s' % (filename,export_file))
     970        os.system('rm %s' % (export_file))
     971        msg = "finished wrote %(total)d records to %(filename)s.zip" % vars()
     972        logger.info(msg)
     973        args = {'portal_status_message': msg}
     974        #url = self.REQUEST.get('URL1') + '?' + urlencode(args)
     975        url = self.REQUEST.get('URL1')
     976        return self.REQUEST.RESPONSE.redirect(url)
     977    ###)           
     978
    887979    security.declareProtected(ModifyPortalContent,"importResults")###(
    888980    def importResults(self):
Note: See TracChangeset for help on using the changeset viewer.