def show_stats(self,**data): self.g_user = cherrypy.session.get('g_user') roles = ['admin', 'ta', 'final'] self.page_for(roles) header = 'Statistical Graph' ipath = Markup('Admin/TA <a href="../statistics">Assignment Statistics</a> > <b>Statistics by Assignment</b>') self.s_data = {} errors = {} s_data = {} if (self.g_term == ""): self.g_term = cherrypy.session.get('g_term') s = "" if data['split2'] == 'year': s = ", s.year" st = " order by g.finalGrade" if data['assignment_all'] == 'all': sql = "Select g.s_no s_no, g.finalGrade finalGrade, count(distinct g.student_id) number, s.year Year, \ 5*count(distinct g.student_id) ncount FROM Student s, Grade g where \ g.student_id=s.user_id group by g.finalGrade" else: sql = "SELECT g.s_no s_no, g.finalGrade finalGrade,\ count(distinct g.student_id) number, s.year Year, \ 5*count(distinct g.student_id) ncount FROM Grade g, \ Student s, Assignment a WHERE g.student_id=s.user_id and \ g.s_no=a.s_no and a.name='%s' group by g.s_no, \ g.finalGrade" % (data['assignment_all']) sql = sql + s + st db = mysql.DB() results = db.do_query(sql) for row in results: tmp_row = {'s_no':row['s_no'], 'finalGrade':row['finalGrade'], 'number':row['number']} stat = Stat(**tmp_row) if data['split2'] == 'year': stat.set_year(row['Year']) else: stat.set_year('') stat.set_ncount(row['ncount']) s_data[stat.s_no, stat.finalGrade, stat.Year]= stat db.close() self.s_data = s_data stats = self.s_data.values() return template.render(ipath=ipath, header=header, stats=stats)
def show_stats_answers(self,**data): self.g_user = cherrypy.session.get('g_user') roles = ['admin', 'ta', 'final'] self.page_for(roles) header = 'Statistics Graph:' ipath = Markup('TA/Admin: <a href="../statistics">Assignment Statistics</a> > <b>Statistics by Answers</b>') self.s_data = {} s_data = {} sql = """ SELECT a.q_no q_no, s.score score, q.name question, count(distinct a.student_id) number FROM Score_and_comment s, Answers a, Assignment asg, Questions q, Associated_with aw WHERE asg.name=%s and asg.s_no=aw.s_no and aw.q_no=a.q_no and q.q_no = a.q_no and a.a_no=s.a_no group by s.score, a.q_no order by s.score, a.q_no """ db = mysql.DB() results = db.do_query(sql, (data['assignment'],)) for row in results: tmp_row = {'s_no':row['q_no'], 'finalGrade':row['score'], 'number':row['number']} stat = Stat(**tmp_row) stat.set_year('') stat.question = row['question'] s_data[stat.s_no, stat.finalGrade, stat.Year]= stat self.s_data = s_data def compareStat(s1,s2): if s1.question != s2.question: return cmp(s1.question, s2.question) if s1.finalGrade != s2.finalGrade: return cmp(s1.finalGrade, s2.finalGrade) return 0 stats = sorted(self.s_data.values(),cmp=compareStat) return template.render(ipath = ipath, header=header, stats=stats)