def tutorsJSON(should_reload=False): #Retrieved cached value data = memcache.get('tutors') if data is None or should_reload: #Load data if not cached query = Tutor.all() query.order('last') #Empty tutors list. tutors = [] #Iterate through all the database results. for tutor in query.run(batch_size=200): #Add the tutor list data to the tutors list. tutors.append(tutor.to_list()) #Create JSON string to store in memcache. data = json.dumps(tutors) #Add to cache memcache.add('tutors', data, 3600) #Return created or cached data return data
def get(self): if not users.is_current_user_admin(): return ### Database queries ### data_query = self.request.get('data') if 'data' in self.request.GET: if data_query == 'tutor': if self.request.get('type') == 'csv': data = json.loads( Request.sessionDataJSON('tutor', self.request.get('email'))) if not data: self.response.out.write("No data") return #CSV filetype / filename headers. self.response.headers['Content-Type'] = 'application/csv' self.response.headers['Content-Disposition'] = str( 'attachment; filename="' + data[0][0] + '_' + data[0][1] + '_' + data[0][2] + '.csv"') #Create the CSV writer writer = csv.writer(self.response.out) head = [ "Tutee Name", "Tutee Email", "Subject", "Date Tutored", "Minutes", "Satisfaction", "Comments", "ID" ] keys = [3, 4, 8, 6, 7, 9, 10, 11] writer.writerow(head) entries = len(data) for i in range(0, entries): row = [] for key in keys: row.append(data[i][key]) writer.writerow(row) elif self.request.get('type') == 'pdf': data = json.loads( Request.sessionDataJSON('tutor', self.request.get('email'))) self.response.headers['Content-Type'] = 'application/pdf' output = StringIO() pdf = pisa.CreatePDF(Request.tutorJSONtoPDF(data), output, encoding='utf-8') pdf_data = pdf.dest.getvalue() self.response.out.write(pdf_data) else: self.response.out.write( Request.sessionDataJSON('tutor', self.request.get('email'))) #OLD self.response.out.write(self.tutorDataJSON(self.request.get('email'))) elif data_query == 'tutee': if self.request.get('type') == 'csv': self.response.out.write("none") elif self.request.get('type') == 'pdf': self.response.out.write("none") else: self.response.out.write( Request.sessionDataJSON('tutee', self.request.get('email'))) if 'tutors' in self.request.GET: self.response.out.write(Request.tutorsJSON()) elif 'tutees' in self.request.GET: self.response.out.write(Request.tuteesJSON()) elif 'refreshtutors' in self.request.GET: q = db.GqlQuery("SELECT * FROM Tutor") for p in q.run(): p.delete() tutors_file = open("static/tutors.csv", "r") reader = csv.reader(tutors_file) for line in reader: print line tutor = Tutor(last=line[0], first=line[1], email=line[2]) tutor.put() elif 'summary' in self.request.GET: self.response.headers['Content-Type'] = 'application/pdf' output = StringIO() pdf = pisa.CreatePDF(Request.summaryPDF(), output, encoding='utf-8') pdf_data = pdf.dest.getvalue() self.response.out.write(pdf_data) elif 'statistics' in self.request.GET: self.response.out.write(Request.statisticsJSON())
def get(self): if not users.is_current_user_admin(): return ### Database queries ### data_query = self.request.get('data') if 'data' in self.request.GET: if data_query == 'tutor': if self.request.get('type') == 'csv': data = json.loads(Request.sessionDataJSON('tutor', self.request.get('email'))) if not data: self.response.out.write("No data") return #CSV filetype / filename headers. self.response.headers['Content-Type'] = 'application/csv' self.response.headers['Content-Disposition'] = str('attachment; filename="' + data[0][0] + '_' + data[0][1] + '_' + data[0][2] + '.csv"') #Create the CSV writer writer = csv.writer(self.response.out) head = ["Tutee Name", "Tutee Email", "Subject", "Date Tutored", "Minutes", "Satisfaction", "Comments", "ID"]; keys = [3, 4, 8, 6, 7, 9, 10, 11]; writer.writerow(head) entries = len(data) for i in range(0, entries): row = []; for key in keys: row.append(data[i][key]) writer.writerow(row) elif self.request.get('type') == 'pdf': data = json.loads(Request.sessionDataJSON('tutor', self.request.get('email'))) self.response.headers['Content-Type'] = 'application/pdf' output = StringIO() pdf = pisa.CreatePDF(Request.tutorJSONtoPDF(data), output, encoding='utf-8') pdf_data = pdf.dest.getvalue() self.response.out.write(pdf_data) else: self.response.out.write(Request.sessionDataJSON('tutor', self.request.get('email'))) #OLD self.response.out.write(self.tutorDataJSON(self.request.get('email'))) elif data_query == 'tutee': if self.request.get('type') == 'csv': self.response.out.write("none") elif self.request.get('type') == 'pdf': self.response.out.write("none") else: self.response.out.write(Request.sessionDataJSON('tutee', self.request.get('email'))) if 'tutors' in self.request.GET: self.response.out.write(Request.tutorsJSON()) elif 'tutees' in self.request.GET: self.response.out.write(Request.tuteesJSON()) elif 'refreshtutors' in self.request.GET: q = db.GqlQuery("SELECT * FROM Tutor") for p in q.run(): p.delete() tutors_file = open("static/tutors.csv", "r") reader = csv.reader(tutors_file) for line in reader: print line tutor = Tutor(last=line[0], first=line[1], email=line[2]) tutor.put() elif 'summary' in self.request.GET: self.response.headers['Content-Type'] = 'application/pdf' output = StringIO() pdf = pisa.CreatePDF(Request.summaryPDF(), output, encoding='utf-8') pdf_data = pdf.dest.getvalue() self.response.out.write(pdf_data) elif 'statistics' in self.request.GET: self.response.out.write(Request.statisticsJSON())