Changeset 1939
- Timestamp:
- 20 Jun 2007, 08:43:33 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WAeUP_SRP/trunk/Students.py
r1902 r1939 41 41 ###) 42 42 43 def response_write(response,s): 43 def response_write(response,s): ###( 44 44 response.setHeader('Content-type','text/html; charset=ISO-8859-15') 45 45 while s.find('<') > -1: … … 49 49 s = s.replace('>','>') 50 50 response.write("%s<br>\n" % s) 51 52 ###) 51 53 52 54 def getInt(s): ###( … … 81 83 ###) 82 84 83 def checkJambNo(jnr): 85 def checkJambNo(jnr): ###( 84 86 try: 85 87 if len(jnr) != 10: … … 92 94 except: 93 95 return False 96 97 ###) 98 99 def formatLGA(lga): 100 if lga.find('_') > -1: 101 return "%s / %s" % (lga.split('_')[0].upper(),lga.split('_')[1].upper()) 102 return lga 94 103 95 104 class StudentsFolder(CPSDocument): ###( … … 885 894 ###) 886 895 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 887 979 security.declareProtected(ModifyPortalContent,"importResults")###( 888 980 def importResults(self):
Note: See TracChangeset for help on using the changeset viewer.