[IMP]:survey:improved the survey analysis and browse report.(Ref:YSA).

bzr revid: apa@tinyerp.com-20100121131107-zj38q1kjvzpvq6y0
This commit is contained in:
apa-tiny 2010-01-21 18:41:07 +05:30
parent 3c820d77a4
commit fd6e04ba7e
4 changed files with 112 additions and 43 deletions

View File

@ -58,6 +58,22 @@ class survey_analysis(report_rml):
<blockValign value="TOP"/> <blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#8f8f8f" start="0,-1" stop="1,-1"/> <lineStyle kind="LINEBELOW" colorName="#8f8f8f" start="0,-1" stop="1,-1"/>
</blockTableStyle> </blockTableStyle>
<blockTableStyle id="Table_heading">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_head_2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<initialize> <initialize>
<paraStyle name="all" alignment="justify"/> <paraStyle name="all" alignment="justify"/>
</initialize> </initialize>
@ -71,31 +87,49 @@ class survey_analysis(report_rml):
<paraStyle name="answer_bold" fontName="Helvetica-Bold" fontSize="09.0" leftIndent="2.0"/> <paraStyle name="answer_bold" fontName="Helvetica-Bold" fontSize="09.0" leftIndent="2.0"/>
<paraStyle name="answer" fontName="helvetica" fontSize="09.0" leftIndent="2.0"/> <paraStyle name="answer" fontName="helvetica" fontSize="09.0" leftIndent="2.0"/>
<paraStyle name="Title" fontName="helvetica" fontSize="20.0" leading="15" spaceBefore="6.0" spaceAfter="6.0" alignment="CENTER"/> <paraStyle name="Title" fontName="helvetica" fontSize="20.0" leading="15" spaceBefore="6.0" spaceAfter="6.0" alignment="CENTER"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="9.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P2" fontName="Helvetica" fontSize="14.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para style="Title"><u>Response Summary</u></para> <para style="Title"><u>Response Summary</u></para>
<para style="Standard"><font></font></para>""" <para style="Standard"><font></font></para>
<para style="P2">
<font color="white"> </font>
</para>"""
surv_obj = pooler.get_pool(cr.dbname).get('survey') surv_obj = pooler.get_pool(cr.dbname).get('survey')
for survey in surv_obj.browse(cr, uid, ids): for survey in surv_obj.browse(cr, uid, ids):
if survey.question_prefix: if survey.question_prefix:
prefix = survey.question_prefix + " : " prefix = survey.question_prefix + " : "
else: else:
prefix = '' prefix = ''
rml += """<blockTable colWidths="95,215,150,40" style="Table2"> rml += """<blockTable colWidths="280.0,100.0,120.0" style="Table_heading">
<tr> <tr>
<td><para style="Standard">Survey Title :-</para></td> <td>
<td><para style="header1">""" + to_xml(survey.title) + """</para></td> <para style="terp_tblheader_General_Centre">Survey Title </para>
<td><para style="Standard">Total Started Survey :- </para></td> </td>
<td><para style="header1">""" + tools.ustr(survey.tot_start_survey) + """</para></td> <td>
</tr> <para style="terp_tblheader_General_Centre">Total Started Survey </para>
<tr> </td>
<td><para style="Standard"></para></td> <td>
<td><para style="header1"></para></td> <para style="terp_tblheader_General_Centre">Total Completed Survey </para>
<td><para style="Standard">Total Completed Survey :-</para></td> </td>
<td><para style="header1">""" + tools.ustr(survey.tot_comp_survey) + """</para></td> </tr>
</tr> </blockTable>
</blockTable> """ <blockTable colWidths="280.0,100.0,120.0" style="Table_head_2">
<tr>
<td>
<para style="terp_default_Centre_8">""" + to_xml(survey.title) + """</para>
</td>
<td>
<para style="terp_default_Centre_8">""" + str(survey.tot_start_survey) + """</para>
</td>
<td>
<para style="terp_default_Centre_8">""" + str(survey.tot_comp_survey) + """</para>
</td>
</tr>
</blockTable>"""
for page in survey.page_ids: for page in survey.page_ids:
rml += """ <blockTable colWidths="500" style="Table4"> rml += """ <blockTable colWidths="500" style="Table4">
# <tr> # <tr>
@ -137,7 +171,7 @@ class survey_analysis(report_rml):
if cal['answer'] == matrix_ans[mat_col]: if cal['answer'] == matrix_ans[mat_col]:
cal_count = cal['count'] cal_count = cal['count']
if tot_res: if tot_res:
percantage = float(cal_count)*100 / tot_res percantage = float(cal_count)*100 / tot_res
if percantage: if percantage:
rml += """<td color="#FFF435"><para style="answer_bold">""" + tools.ustr(percantage) +"% (" + tools.ustr(cal_count) + """)</para></td>""" rml += """<td color="#FFF435"><para style="answer_bold">""" + tools.ustr(percantage) +"% (" + tools.ustr(cal_count) + """)</para></td>"""
else: else:
@ -150,13 +184,13 @@ class survey_analysis(report_rml):
tot_res = cr.fetchone()[0] tot_res = cr.fetchone()[0]
rml+="""<blockTable colWidths=" """+ str(500 - last_col) +"," + str(last_col) + """ " style="Table1"><tr><td><para style="answer_right">""" + to_xml(que.comment_label) + """</para></td> rml+="""<blockTable colWidths=" """+ str(500 - last_col) +"," + str(last_col) + """ " style="Table1"><tr><td><para style="answer_right">""" + to_xml(que.comment_label) + """</para></td>
<td><para style="answer">""" + tools.ustr(tot_res) + """</para></td></tr></blockTable>""" <td><para style="answer">""" + tools.ustr(tot_res) + """</para></td></tr></blockTable>"""
elif que.type in['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans', 'multiple_textboxes','date_and_time','date']: elif que.type in['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans', 'multiple_textboxes','date_and_time','date']:
rml +="""<blockTable colWidths="280.0,120,100.0" style="Table1">""" rml +="""<blockTable colWidths="280.0,120,100.0" style="Table1">"""
rml += """ <tr> rml += """ <tr>
<td> <para style="Standard"> </para></td> <td> <para style="Standard"> </para></td>
<td> <para style="response">Response Percentage </para></td> <td> <para style="response">Response Percentage </para></td>
<td> <para style="response">Response Count</para></td> <td> <para style="response">Response Count</para></td>
</tr>""" </tr>"""
for ans in que.answer_choice_ids: for ans in que.answer_choice_ids:
rml+="""<tr><td><para style="answer">""" + to_xml(ans.answer) + """</para></td> rml+="""<tr><td><para style="answer">""" + to_xml(ans.answer) + """</para></td>
@ -178,13 +212,13 @@ class survey_analysis(report_rml):
tot_res = cr.fetchone()[0] tot_res = cr.fetchone()[0]
rml+="""<blockTable colWidths="400.0,100.0" style="Table1"><tr><td><para style="answer_right">""" + to_xml(que.comment_label) + """</para></td> rml+="""<blockTable colWidths="400.0,100.0" style="Table1"><tr><td><para style="answer_right">""" + to_xml(que.comment_label) + """</para></td>
<td><para style="answer">""" + tools.ustr(tot_res) + """</para></td></tr></blockTable>""" <td><para style="answer">""" + tools.ustr(tot_res) + """</para></td></tr></blockTable>"""
elif que.type in['single_textbox']: elif que.type in['single_textbox']:
cr.execute("select count(id) from survey_response_line where question_id = %d and single_text!=''" % que.id) cr.execute("select count(id) from survey_response_line where question_id = %d and single_text!=''" % que.id)
rml +="""<blockTable colWidths="400.0,100.0" style="Table1"> rml +="""<blockTable colWidths="400.0,100.0" style="Table1">
<tr> <tr>
<td> <para style="Standard"> </para></td> <td> <para style="Standard"> </para></td>
<td> <para style="response">Response Count</para></td> <td> <para style="response">Response Count</para></td>
</tr> </tr>
<tr><td><para style="answer"></para></td> <tr><td><para style="answer"></para></td>
<td><para style="answer">""" + tools.ustr(cr.fetchone()[0]) + """ </para></td></tr> <td><para style="answer">""" + tools.ustr(cr.fetchone()[0]) + """ </para></td></tr>
@ -192,9 +226,9 @@ class survey_analysis(report_rml):
elif que.type in['comment']: elif que.type in['comment']:
cr.execute("select count(id) from survey_response_line where question_id = %d and comment !=''" % que.id) cr.execute("select count(id) from survey_response_line where question_id = %d and comment !=''" % que.id)
rml +="""<blockTable colWidths="400.0,100.0" style="Table1"> rml +="""<blockTable colWidths="400.0,100.0" style="Table1">
<tr> <tr>
<td> <para style="Standard"> </para></td> <td> <para style="Standard"> </para></td>
<td> <para style="response">Response Count</para></td> <td> <para style="response">Response Count</para></td>
</tr> </tr>
<tr><td><para style="answer"></para></td> <tr><td><para style="answer"></para></td>
<td><para style="answer">""" + tools.ustr(cr.fetchone()[0]) + """ </para></td></tr> <td><para style="answer">""" + tools.ustr(cr.fetchone()[0]) + """ </para></td></tr>
@ -249,7 +283,7 @@ class survey_analysis(report_rml):
rml += """<blockTable colWidths="500" style="Table1"><tr> rml += """<blockTable colWidths="500" style="Table1"><tr>
<td><para style="answer">""" + to_xml(column.title) + """</para></td></tr></blockTable>""" <td><para style="answer">""" + to_xml(column.title) + """</para></td></tr></blockTable>"""
menu_choices = column.menu_choice.split('\n') menu_choices = column.menu_choice.split('\n')
cols_widhts = [] cols_widhts = []
cols_widhts.append(200) cols_widhts.append(200)
for col in range(0, len(menu_choices) + 1): for col in range(0, len(menu_choices) + 1):
cols_widhts.append(float(300 / (len(menu_choices) + 1))) cols_widhts.append(float(300 / (len(menu_choices) + 1)))
@ -289,12 +323,12 @@ class survey_analysis(report_rml):
rml += """</blockTable>""" rml += """</blockTable>"""
elif que.type in['numerical_textboxes']: elif que.type in['numerical_textboxes']:
rml +="""<blockTable colWidths="240.0,20,100.0,70,70.0" style="Table1"> rml +="""<blockTable colWidths="240.0,20,100.0,70,70.0" style="Table1">
<tr> <tr>
<td> <para style="Standard"> </para></td> <td> <para style="Standard"> </para></td>
<td> <para style="Standard"> </para></td> <td> <para style="Standard"> </para></td>
<td> <para style="response">Response Average</para></td> <td> <para style="response">Response Average</para></td>
<td> <para style="response">Response Total</para></td> <td> <para style="response">Response Total</para></td>
<td> <para style="response">Response Count</para></td> <td> <para style="response">Response Count</para></td>
</tr>""" </tr>"""
for ans in que.answer_choice_ids: for ans in que.answer_choice_ids:
cr.execute("select answer from survey_response_answer where answer_id=%d group by answer" % ans.id) cr.execute("select answer from survey_response_answer where answer_id=%d group by answer" % ans.id)

View File

@ -83,6 +83,22 @@ class survey_browse_response(report_rml):
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/> <lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/> <lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
</blockTableStyle> </blockTableStyle>
<blockTableStyle id="Table_heading">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_head_2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<initialize> <initialize>
<paraStyle name="all" alignment="justify"/> <paraStyle name="all" alignment="justify"/>
</initialize> </initialize>
@ -102,11 +118,17 @@ class survey_browse_response(report_rml):
<paraStyle name="P1" fontName="Helvetica" fontSize="9.0" leading="12" spaceBefore="0.0" spaceAfter="1.0"/> <paraStyle name="P1" fontName="Helvetica" fontSize="9.0" leading="12" spaceBefore="0.0" spaceAfter="1.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="9.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
</stylesheet> </stylesheet>
<images/> <images/>
<story> <story>
<para style="Title"><u>Browse Responses </u></para> <para style="Title"><u>Browse Responses </u></para>
<para style="Standard"><font></font></para>""" <para style="Standard"><font></font></para>
<para style="P2">
<font color="white"> </font>
</para>
"""
surv_resp_obj = pooler.get_pool(cr.dbname).get('survey.response') surv_resp_obj = pooler.get_pool(cr.dbname).get('survey.response')
surv_resp_line_obj = pooler.get_pool(cr.dbname).get('survey.response.line') surv_resp_line_obj = pooler.get_pool(cr.dbname).get('survey.response.line')
surv_obj = pooler.get_pool(cr.dbname).get('survey') surv_obj = pooler.get_pool(cr.dbname).get('survey')
@ -116,18 +138,30 @@ class survey_browse_response(report_rml):
prefix = survey.question_prefix + " : " prefix = survey.question_prefix + " : "
else: else:
prefix = '' prefix = ''
rml += """<blockTable colWidths="150,350" style="Table2"> rml += """<blockTable colWidths="230.0,150.0,120.0" style="Table_heading">
<tr> <tr>
<td><para style="Standard">Survey Title :-</para></td> <td>
<td><para style="header1">""" + to_xml(survey.title) + """</para></td> <para style="terp_tblheader_General_Centre">Survey Title </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Response Create Date </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Respose By </para>
</td>
</tr> </tr>
</blockTable>
<blockTable colWidths="230.0,150.0,120.0" style="Table_head_2">
<tr> <tr>
<td><para style="Standard">Response Create Date :-</para></td> <td>
<td><para style="header1">""" + to_xml(response.date_create) + """</para></td> <para style="terp_default_Centre_8">""" + to_xml(survey.title) + """</para>
</tr> </td>
<tr> <td>
<td><para style="Standard">User Name :-</para></td> <para style="terp_default_Centre_8">""" + to_xml(response.date_create) + """</para>
<td><para style="header1">""" + to_xml(response.user_id.name) + """</para></td> </td>
<td>
<para style="terp_default_Centre_8">""" + to_xml(response.user_id.name) + """</para>
</td>
</tr> </tr>
</blockTable>""" </blockTable>"""
for page in survey.page_ids: for page in survey.page_ids:

View File

@ -648,7 +648,7 @@ class survey_question_wiz(osv.osv_memory):
que_rec = que_obj.read(cr, uid, que) que_rec = que_obj.read(cr, uid, que)
descriptive_text = "" descriptive_text = ""
separator_string = tools.ustr(qu_no) + "." + tools.ustr(que_rec['question']) separator_string = tools.ustr(qu_no) + "." + tools.ustr(que_rec['question'])
if que_rec['is_require_answer'] or que_rec['required_type'] != '': if not context.has_key('active') and (que_rec['is_require_answer'] or que_rec['required_type'] != ''):
star='*' star='*'
else: else:
star='' star=''

View File

@ -31,6 +31,7 @@ import tools
import os import os
import datetime import datetime
import netsvc import netsvc
import socket
_survey_form = '''<?xml version="1.0"?> _survey_form = '''<?xml version="1.0"?>
<form string="Send Invitation"> <form string="Send Invitation">
@ -91,7 +92,7 @@ def check_survey(self, cr, uid, data, context):
raise wizard.except_wizard(_('Attention!'), _('%sSurvey is not in open state') % msg) raise wizard.except_wizard(_('Attention!'), _('%sSurvey is not in open state') % msg)
data['form']['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \ data['form']['mail'] = '''Hello %(name)s, \n\n We are inviting you for following survey. \
\n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s \n ''' + name + '''\n Your login ID: %(login)s, Your password: %(passwd)s
\n link :- http://localhost:8080 \n\n Thanks,''' \n link :- http://'''+ str(socket.gethostname()) + ''':8080 \n\n Thanks,'''
return data['form'] return data['form']
def send_mail(self, cr, uid, data, context): def send_mail(self, cr, uid, data, context):