Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

Function inherited from survey wizard not working properly

By
omkar
on 2/5/14, 3:22 AM 4,144 views

Hi Guys.

I am working with survey module I tried to inherit the class "survey.question.wiz" to my own module and its fine. but I want to make my function work instead of the existing function. The function was "fields_view_get". I used super class but now I get a issue that the two functions are working and the fields are effected from the main function instead of my function.

Below is my code and the Xml view

--> Inherited view from survey/wizard/survey_view.xml XML : <record id="view_survey_question_message_inherit" model="ir.ui.view"> <field name="name">view.survey.question.message.form</field> <field name="model">survey.question.wiz</field> <field name="inherit_id" ref="survey.view_survey_question_message"/> <field name="arch" type="xml"> <form string="Your Messages" version="7.0"> <field name="name" nolabel="1" colspan="4"/> </form> </field> </record>

--> Code: I made some modifications in the code but that was not working with my own module. The code was inherited from survey/wizard/survey_Answer.py. I want to make my code work for the fields_view_get function instead of original code.

class survey_question_wiz(osv.osv): _inherit="survey.question.wiz"

def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
    """
    Fields View Get method :- generate the new view and display the survey pages of selected survey.
    """
    print "CONTEXT IN SURVEY ANSWER FIELDS VIEW GET OmKar before Super::", context
    values = super(survey_question_wiz,self).fields_view_get(cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
    print "Values Here from Survey Question Wiz ::", values
    print "CONTEXT IN SURVEY ANSWER FIELDS VIEW GET OmKar::", context
    if context is None:
        context = {}
    result = super(survey_question_wiz, self).fields_view_get(cr, uid, view_id, \
                                    view_type, context, toolbar,submenu)

    surv_name_wiz = self.pool.get('survey.name.wiz')
    survey_obj = self.pool.get('survey')
    page_obj = self.pool.get('survey.page')
    que_obj = self.pool.get('survey.question')
    ans_obj = self.pool.get('survey.answer')
    sur_response_obj = self.pool.get('survey.response')
    que_col_head = self.pool.get('survey.question.column.heading')
    user_obj = self.pool.get('res.users')
    mail_message = self.pool.get('mail.message')

    if view_type in ['form']:
        wiz_id = 0
        sur_name_rec = None
        if 'sur_name_id' in context:
            sur_name_rec = surv_name_wiz.browse(cr, uid, context['sur_name_id'], context=context)
        elif 'survey_id' in context:
            res_data = {
                'survey_id': context.get('survey_id', False),
                'page_no': -1,
                'page': 'next',
                'transfer': 1,
                'response': 0
            }
            wiz_id = surv_name_wiz.create(cr, uid, res_data)
            sur_name_rec = surv_name_wiz.browse(cr, uid, wiz_id, context=context)
            context.update({'sur_name_id' :wiz_id})

        if context.has_key('active_id'):
            context.pop('active_id')

        survey_id = context.get('survey_id', False)
        if not survey_id:
            # Try one more time to find it
            if sur_name_rec and sur_name_rec.survey_id:
                survey_id = sur_name_rec.survey_id.id
            else:
                # raise osv.except_osv(_('Error!'), _("Cannot locate survey for the question wizard!"))
                # If this function is called without a survey_id in
                # its context, it makes no sense to return any view.
                # Just return the default, empty view for this object,
                # in order to please random calls to this fn().
                return super(survey_question_wiz, self).\
                            fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context,
                                    toolbar=toolbar, submenu=submenu)
        sur_rec = survey_obj.browse(cr, uid, survey_id, context=context)
        p_id = map(lambda x:x.id, sur_rec.page_ids)
        total_pages = len(p_id)
        pre_button = False
        readonly = 0

        if context.get('response_id', False) \
                        and int(context['response_id'][0]) > 0:
            readonly = 1

        if not sur_name_rec.page_no + 1 :
            surv_name_wiz.write(cr, uid, [context['sur_name_id'],], {'store_ans':{}})

        sur_name_read = surv_name_wiz.browse(cr, uid, context['sur_name_id'], context=context)
        page_number = int(sur_name_rec.page_no)
        if sur_name_read.transfer or not sur_name_rec.page_no + 1:
            surv_name_wiz.write(cr, uid, [context['sur_name_id']], {'transfer':False})
            flag = False
            fields = {}
            if sur_name_read.page == "next" or sur_name_rec.page_no == -1:
                if total_pages > sur_name_rec.page_no + 1:
                    if ((context.has_key('active') and not context.get('active', False)) \
                                or not context.has_key('active')) and not sur_name_rec.page_no + 1:
                        if sur_rec.state != "open" :
                            raise osv.except_osv(_('Warning!'),_("You cannot answer because the survey is not open."))
                        cr.execute('select count(id) from survey_history where user_id=%s\
                                                and survey_id=%s', (uid,survey_id))
                        res = cr.fetchone()[0]
                        user_limit = survey_obj.browse(cr, uid, survey_id)
                        user_limit = user_limit.response_user
                        if user_limit and res >= user_limit:
                            raise osv.except_osv(_('Warning!'),_("You cannot answer this survey more than %s times.") % (user_limit))

                    if sur_rec.max_response_limit and sur_rec.max_response_limit <= sur_rec.tot_start_survey and not sur_name_rec.page_no + 1:
                        survey_obj.write(cr, uid, survey_id, {'state':'close', 'date_close':strftime("%Y-%m-%d %H:%M:%S")})

                    p_id = p_id[sur_name_rec.page_no + 1]
                    surv_name_wiz.write(cr, uid, [context['sur_name_id'],], {'page_no' : sur_name_rec.page_no + 1})
                    flag = True
                    page_number += 1
                if sur_name_rec.page_no > - 1:
                    pre_button = True
                else:
                    flag = True
            else:
                if sur_name_rec.page_no != 0:
                    p_id = p_id[sur_name_rec.page_no - 1]
                    surv_name_wiz.write(cr, uid, [context['sur_name_id'],],\
                                         {'page_no' : sur_name_rec.page_no - 1})
                    flag = True
                    page_number -= 1

                if sur_name_rec.page_no > 1:
                    pre_button = True
            if flag:
                pag_rec = page_obj.browse(cr, uid, p_id, context=context)
                note = False
                question_ids = []
                if pag_rec:
                    title = pag_rec.title
                    note = pag_rec.note
                    question_ids = pag_rec.question_ids
                else:
                    title = sur_rec.title
                xml_form = etree.Element('form', {'string': tools.ustr(title)})
                if context.has_key('active') and context.get('active',False) and context.has_key('edit'):
                    context.update({'page_id' : tools.ustr(p_id),'page_number' : sur_name_rec.page_no , 'transfer' : sur_name_read.transfer})
                    xml_group3 = etree.SubElement(xml_form, 'group', {'col': '4', 'colspan': '4'})
                    etree.SubElement(xml_group3, 'button', {'string' :'Add Page','icon': "gtk-new", 'type' :'object','name':"action_new_page", 'context' : tools.ustr(context)})
                    etree.SubElement(xml_group3, 'button', {'string' :'Edit Page','icon': "gtk-edit", 'type' :'object','name':"action_edit_page", 'context' : tools.ustr(context)})
                    etree.SubElement(xml_group3, 'button', {'string' :'Delete Page','icon': "gtk-delete", 'type' :'object','name':"action_delete_page", 'context' : tools.ustr(context)})
                    etree.SubElement(xml_group3, 'button', {'string' :'Add Question','icon': "gtk-new", 'type' :'object','name':"action_new_question", 'context' : tools.ustr(context)})

                # FP Note
                xml_group = xml_form

                if context.has_key('response_id') and context.get('response_id', False) \
                     and int(context.get('response_id',0)[0]) > 0:
                    # TODO: l10n, cleanup this code to make it readable. Or template?
                    xml_group = etree.SubElement(xml_form, 'group', {'col': '40', 'colspan': '4'})
                    record = sur_response_obj.browse(cr, uid, context['response_id'][context['response_no']])
                    etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(_('Answer Of :- ') + record.user_id.name + _(',  Date :- ') + record.date_create.split('.')[0]  )), 'align':"0.0"})
                    etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(_(" Answer :- ") + str(context.get('response_no',0) + 1) +"/" + str(len(context.get('response_id',0))) )), 'align':"0.0"})
                    if context.get('response_no',0) > 0:
                        etree.SubElement(xml_group, 'button', {'colspan':"1",'icon':"gtk-go-back",'name':"action_forward_previous",'string': tools.ustr("Previous Answer"),'type':"object"})
                    if context.get('response_no',0) + 1 < len(context.get('response_id',0)):
                        etree.SubElement(xml_group, 'button', {'colspan':"1",'icon': "gtk-go-forward", 'name':"action_forward_next",'string': tools.ustr("Next Answer") ,'type':"object",'context' : tools.ustr(context)})

                if wiz_id:
                    fields["wizardid_" + str(wiz_id)] = {'type':'char', 'size' : 255, 'string':"", 'views':{}}
                    etree.SubElement(xml_form, 'field', {'invisible':'1','name': "wizardid_" + str(wiz_id),'default':str(lambda *a: 0),'modifiers':'{"invisible":true}'})

                if note:
                    xml_group_note = etree.SubElement(xml_form, 'group', {'col': '1','colspan': '4'})
                    for que_test in note.split('\n'):
                        etree.SubElement(xml_group_note, 'label', {'string': to_xml(tools.ustr(que_test)), 'align':"0.0"})
                que_ids = question_ids
                qu_no = 0

                for que in que_ids:
                    qu_no += 1
                    que_rec = que_obj.browse(cr, uid, que.id, context=context)
                    descriptive_text = ""
                    separator_string = tools.ustr(qu_no) + "." + tools.ustr(que_rec.question)
                    if ((context.has_key('active') and not context.get('active',False)) or not context.has_key('active')) and que_rec.is_require_answer:
                        star = '*'
                    else:
                        star = ''
                    if context.has_key('active') and context.get('active',False) and \
                                context.has_key('edit'):
                        etree.SubElement(xml_form, 'separator', {'string': star+to_xml(separator_string)})

                        xml_group1 = etree.SubElement(xml_form, 'group', {'col': '2', 'colspan': '2'})
                        context.update({'question_id' : tools.ustr(que.id),'page_number': sur_name_rec.page_no , 'transfer' : sur_name_read.transfer, 'page_id' : p_id})
                        etree.SubElement(xml_group1, 'button', {'string':'','icon': "gtk-edit", 'type' :'object', 'name':"action_edit_question", 'context' : tools.ustr(context)})
                        etree.SubElement(xml_group1, 'button', {'string':'','icon': "gtk-delete", 'type' :'object','name':"action_delete_question", 'context' : tools.ustr(context)})
                    else:
                        etree.SubElement(xml_form, 'newline')
                        etree.SubElement(xml_form, 'separator', {'string': star+to_xml(separator_string)})

                    ans_ids = que_rec.answer_choice_ids
                    xml_group = etree.SubElement(xml_form, 'group', {'col': '1', 'colspan': '4'})

                    if que_rec.type == 'multiple_choice_only_one_ans':
                        selection = []
                        for ans in ans_ids:
                            selection.append((tools.ustr(ans.id), ans.answer))
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '2', 'colspan': '2'})
                        etree.SubElement(xml_group, 'field', {'readonly':str(readonly), 'name': tools.ustr(que.id) + "_selection"})
                        fields[tools.ustr(que.id) + "_selection"] = {'type':'selection', 'selection' :selection, 'string':_('Answer')}

                    elif que_rec.type == 'multiple_choice_multiple_ans':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
                        for ans in ans_ids:
                            etree.SubElement(xml_group, 'field', {'readonly':str(readonly), 'name': tools.ustr(que.id) + "_" + tools.ustr(ans.id)})
                            fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id)] = {'type':'boolean', 'string':ans.answer}

                    elif que_rec.type in ['matrix_of_choices_only_one_ans', 'rating_scale']:
                        if que_rec.comment_column:
                            col = "6"
                            colspan = "6"
                        else:
                           col = "5"
                           colspan = "5"
                        xml_group = etree.SubElement(xml_group, 'group', {'col': tools.ustr(col), 'colspan': tools.ustr(colspan)})

                        for row in ans_ids:
                            etree.SubElement(xml_group, 'newline')

                            etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'name': tools.ustr(que.id) + "_selection_" + tools.ustr(row.id),'string':to_xml(tools.ustr(row.answer))})
                            selection = [('','')]
                            print "Testing For Fields Omkar :::%s :Answer:%s "%(tools.ustr(que.id) + "_selection_" + tools.ustr(row.id),row.answer)

                            for col in que_rec.column_heading_ids:
                                selection.append((str(col.id), col.title))

Omkar Added Here..

                            if context.get('action','') == "final":
                                fields[tools.ustr(que.id) + "_selection_" + tools.ustr(row.id)] = {'type':'selection', 'selection' : selection, 'string': "Answer"}

                                etree.SubElement(xml_group, 'label', {'string': "Self Assessment", 'align':"0.0"})
                                etree.SubElement(xml_group, 'label', {'string': "Manager Assessment", 'align':"0.0"})
                            else:
                                fields[tools.ustr(que.id) + "_selection_" + tools.ustr(row.id)] = {'type':'selection', 'selection' : selection, 'string': "Answer"}

                            if que_rec.comment_column:
                               fields[tools.ustr(que.id) + "_commentcolumn_"+tools.ustr(row.id) + "_field"] = {'type':'char', 'size' : 255, 'string':tools.ustr(que_rec.column_name), 'views':{}}

                               etree.SubElement(xml_group,'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_commentcolumn_"+tools.ustr(row.id)+ "_field"})

                    elif que_rec.type == 'matrix_of_choices_only_multi_ans':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': str(len(que_rec.column_heading_ids) + 1), 'colspan': '4'})
                        etree.SubElement(xml_group, 'separator', {'string': '.','colspan': '1'})
                        for col in que_rec.column_heading_ids:
                            etree.SubElement(xml_group, 'separator', {'string': tools.ustr(col.title),'colspan': '1'})
                        for row in ans_ids:
                            etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row.answer)) +' :-', 'align': '0.0'})
                            for col in que_col_head.browse(cr, uid, [head.id for head in  que_rec.column_heading_ids]):
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_" + tools.ustr(row.id) + "_" + tools.ustr(col.id), 'nolabel':"1"})
                                fields[tools.ustr(que.id) + "_" + tools.ustr(row.id)  + "_" + tools.ustr(col.id)] = {'type':'boolean', 'string': col.title}

                    elif que_rec.type == 'matrix_of_drop_down_menus':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': str(len(que_rec.column_heading_ids) + 1), 'colspan': '4'})
                        etree.SubElement(xml_group, 'separator', {'string': '.','colspan': '1'})
                        for col in que_rec.column_heading_ids:
                            etree.SubElement(xml_group, 'separator', {'string': tools.ustr(col.title),'colspan': '1'})
                        for row in ans_ids:
                            etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row.answer))+' :-', 'align': '0.0'})
                            for col in que_rec.column_heading_ids:
                                selection = []
                                if col.menu_choice:
                                    for item in col.menu_choice.split('\n'):
                                        if item and not item.strip() == '': selection.append((item ,item))
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_" + tools.ustr(row.id) + "_" + tools.ustr(col.id),'nolabel':'1'})
                                fields[tools.ustr(que.id) + "_" + tools.ustr(row.id)  + "_" + tools.ustr(col.id)] = {'type':'selection', 'string': col.title, 'selection':selection}

                    elif que_rec.type == 'multiple_textboxes':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
                        type = "char"
                        if que_rec.is_validation_require:
                            if que_rec.validation_type in ['must_be_whole_number']:
                                type = "integer"
                            elif que_rec.validation_type in ['must_be_decimal_number']:
                                type = "float"
                            elif que_rec.validation_type in ['must_be_date']:
                                type = "date"
                        for ans in ans_ids:
                            etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'width':"300",'colspan': '1','name': tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"})
                            if type == "char" :
                                fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"] = {'type':'char', 'size':255, 'string':ans.answer}
                            else:
                                fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"] = {'type': str(type), 'string':ans.answer}

                    elif que_rec.type == 'numerical_textboxes':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
                        for ans in ans_ids:
                            etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'width':"300",'colspan': '1','name': tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_numeric"})
                            fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_numeric"] = {'type':'integer', 'string':ans.answer}

                    elif que_rec.type == 'date':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
                        for ans in ans_ids:
                            etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'width':"300",'colspan': '1','name': tools.ustr(que.id) + "_" + tools.ustr(ans.id)})
                            fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id)] = {'type':'date', 'string':ans.answer}

                    elif que_rec.type == 'date_and_time':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
                        for ans in ans_ids:
                            etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'width':"300",'colspan': '1','name': tools.ustr(que.id) + "_" + tools.ustr(ans.id)})
                            fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id)] = {'type':'datetime', 'string':ans.answer}

                    elif que_rec.type == 'descriptive_text':
                        if que_rec.descriptive_text:
                            for que_test in que_rec.descriptive_text.split('\n'):
                                etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(que_test)), 'align':"0.0"})

                    elif que_rec.type == 'single_textbox':
                        etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_single", 'nolabel':"1" ,'colspan':"4"})
                        fields[tools.ustr(que.id) + "_single"] = {'type':'char', 'size': 255, 'string':"single_textbox", 'views':{}}

                    elif que_rec.type == 'comment':
                        etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_comment", 'nolabel':"1" ,'colspan':"4"})
                        fields[tools.ustr(que.id) + "_comment"] = {'type':'text', 'string':"Comment/Eassy Box", 'views':{}}

                    elif que_rec.type == 'table':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': str(len(que_rec.column_heading_ids)), 'colspan': '4'})
                        for col in que_rec.column_heading_ids:
                            etree.SubElement(xml_group, 'separator', {'string': tools.ustr(col.title),'colspan': '1'})
                        for row in range(0,que_rec.no_of_rows):
                            for col in que_rec.column_heading_ids:
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_table_" + tools.ustr(col.id) +"_"+ tools.ustr(row), 'nolabel':"1"})
                                fields[tools.ustr(que.id) + "_table_" + tools.ustr(col.id) +"_"+ tools.ustr(row)] = {'type':'char','size':255,'views':{}}

                    elif que_rec.type == 'multiple_textboxes_diff_type':
                        xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
                        for ans in ans_ids:
                            if ans.type == "email" :
                                fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"] = {'type':'char', 'size':255, 'string':ans.answer}
                                etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'widget':'email','width':"300",'colspan': '1','name': tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"})
                            else:
                                etree.SubElement(xml_group, 'field', {'readonly': str(readonly), 'width':"300",'colspan': '1','name': tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"})
                                if ans.type == "char" :
                                    fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"] = {'type':'char', 'size':255, 'string':ans.answer}
                                elif ans.type in ['integer','float','date','datetime']:
                                    fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"] = {'type': str(ans.type), 'string':ans.answer}
                                else:
                                    selection = []
                                    if ans.menu_choice:
                                        for item in ans.menu_choice.split('\n'):
                                            if item and not item.strip() == '': selection.append((item ,item))
                                    fields[tools.ustr(que.id) + "_" + tools.ustr(ans.id) + "_multi"] = {'type':'selection', 'selection' : selection, 'string':ans.answer}

                    if que_rec.type in ['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans', 'matrix_of_choices_only_one_ans', 'matrix_of_choices_only_multi_ans', 'matrix_of_drop_down_menus', 'rating_scale'] and que_rec.is_comment_require:
                        if que_rec.type in ['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans'] and que_rec.comment_field_type in ['char','text'] and que_rec.make_comment_field:
                            etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_otherfield", 'colspan':"4"})
                            fields[tools.ustr(que.id) + "_otherfield"] = {'type':'boolean', 'string':que_rec.comment_label, 'views':{}}
                            if que_rec.comment_field_type == 'char':
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_other", 'nolabel':"1" ,'colspan':"4"})
                                fields[tools.ustr(que.id) + "_other"] = {'type': 'char', 'string': '', 'size':255, 'views':{}}
                            elif que_rec.comment_field_type == 'text':
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_other", 'nolabel':"1" ,'colspan':"4"})
                                fields[tools.ustr(que.id) + "_other"] = {'type': 'text', 'string': '', 'views':{}}
                        else:
                            if que_rec.comment_field_type == 'char':
                                etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(que_rec.comment_label)),'colspan':"4"})
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_other", 'nolabel':"1" ,'colspan':"4"})
                                fields[tools.ustr(que.id) + "_other"] = {'type': 'char', 'string': '', 'size':255, 'views':{}}
                            elif que_rec.comment_field_type == 'text':
                                etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(que_rec.comment_label)),'colspan':"4"})
                                etree.SubElement(xml_group, 'field', {'readonly' :str(readonly), 'name': tools.ustr(que.id) + "_other", 'nolabel':"1" ,'colspan':"4"})
                                fields[tools.ustr(que.id) + "_other"] = {'type': 'text', 'string': '', 'views':{}}

                xml_footer = etree.SubElement(xml_form, 'footer', {'col': '8', 'colspan': '1', 'width':"100%"})

                if pre_button:
                    etree.SubElement(xml_footer, 'label', {'string': ""})
                    etree.SubElement(xml_footer, 'button', {'name':"action_previous",'string':_('Previous'),'type':"object"})
                but_string = _('Next')
                if int(page_number) + 1 == total_pages:
                    but_string = _('Done')
                if context.has_key('active') and context.get('active',False) and int(page_number) + 1 == total_pages and context.has_key('response_id') and context.has_key('response_no') and  context.get('response_no',0) + 1 == len(context.get('response_id',0)):
                    etree.SubElement(xml_footer, 'label', {'string': ""})
                    etree.SubElement(xml_footer, 'button', {'special' : 'cancel','string': tools.ustr("Done") ,'context' : tools.ustr(context), 'class':"oe_highlight"})
                elif context.has_key('active') and context.get('active', False) and int(page_number) + 1 == total_pages and context.has_key('response_id'):
                    etree.SubElement(xml_footer, 'label', {'string': ""})
                    etree.SubElement(xml_footer, 'button', {'name':"action_forward_next",'string': tools.ustr("Next Answer") ,'type':"object",'context' : tools.ustr(context), 'class':"oe_highlight"})
                elif context.has_key('active') and context.get('active',False) and int(page_number) + 1 == total_pages:
                    etree.SubElement(xml_footer, 'label', {'string': ""})
                    etree.SubElement(xml_footer, 'button', {'special': "cancel", 'string' : 'Done', 'context' : tools.ustr(context), 'class':"oe_highlight"})
                else:
                    etree.SubElement(xml_footer, 'label', {'string': ""})
                    etree.SubElement(xml_footer, 'button', {'name':"action_next",'string': tools.ustr(but_string) ,'type':"object",'context' : tools.ustr(context), 'class':"oe_highlight"})
                etree.SubElement(xml_footer, 'label', {'string': _('or')})
                etree.SubElement(xml_footer, 'button', {'special': "cancel",'string':_('Exit'),'class':"oe_link"})
                etree.SubElement(xml_footer, 'label', {'string': tools.ustr(page_number+ 1) + "/" + tools.ustr(total_pages), 'class':"oe_survey_title_page oe_right"})

                root = xml_form.getroottree()
                result['arch'] = etree.tostring(root)
                result['fields'] = fields
                result['context'] = context
            else:
                survey_obj.write(cr, uid, survey_id, {'tot_comp_survey' : sur_rec.tot_comp_survey + 1})
                sur_response_obj.write(cr, uid, [sur_name_read.response], {'state' : 'done'})

                # mark the survey request as done; call 'survey_req_done' on its actual model
                survey_req_obj = self.pool.get(context.get('active_model'))
                if survey_req_obj and hasattr(survey_req_obj, 'survey_req_done'):
                    survey_req_obj.survey_req_done(cr, uid, context.get('active_ids', []), context=context)

                if sur_rec.send_response:
                    survey_data = survey_obj.browse(cr, uid, survey_id)
                    response_id = surv_name_wiz.read(cr, uid, context.get('sur_name_id',False))['response']
                    report = self.create_report(cr, uid, [survey_id], 'report.survey.browse.response', survey_data.title,context)
                    attachments = {}
                    pdf_filename = addons.get_module_resource('survey', 'report') + survey_data.title + ".pdf"
                    if os.path.exists(pdf_filename):
                        file = open(pdf_filename)
                        file_data = ""
                        while 1:
                            line = file.readline()
                            file_data += line
                            if not line:
                                break

                        attachments[survey_data.title + ".pdf"] = file_data
                        file.close()
                        os.remove(addons.get_module_resource('survey', 'report') + survey_data.title + ".pdf")
                    context.update({'response_id':response_id})
                    user_email = user_obj.browse(cr, uid, uid, context).email
                    resp_email = survey_data.responsible_id and survey_data.responsible_id.email or False

                    if user_email and resp_email:
                        user_name = user_obj.browse(cr, uid, uid, context=context).name
                        mail = "Hello " + survey_data.responsible_id.name + ",\n\n " + str(user_name) + " has given the Response Of " + survey_data.title + " Survey.\nThe Response has been attached herewith.\n\n Thanks."
                        vals = {'state': 'outgoing',
                                'subject': "Survey Answer Of " + user_name,
                                'body_html': '<pre>%s</pre>' % mail,
                                'email_to': [resp_email],
                                'email_from': user_email}
                        if attachments:
                            vals['attachment_ids'] = [(0,0,{'name': a_name,
                                                            'datas_fname': a_name,
                                                            'datas': str(a_content).encode('base64')})
                                                            for a_name, a_content in attachments.items()]
                        self.pool.get('mail.mail').create(cr, uid, vals, context=context)

                xml_form = etree.Element('form', {'string': _('Complete Survey Answer')})
                xml_footer = etree.SubElement(xml_form, 'footer', {'col': '6', 'colspan': '4' ,'class': 'oe_survey_title_height'})

                etree.SubElement(xml_form, 'separator', {'string': 'Survey Completed', 'colspan': "4"})
                etree.SubElement(xml_form, 'label', {'string': 'Thanks for your Answer'})
                etree.SubElement(xml_form, 'newline')
                etree.SubElement(xml_footer, 'button', {'special':"cancel",'string':"OK",'colspan':"2",'class':'oe_highlight'})
                root = xml_form.getroottree()
                result['arch'] = etree.tostring(root)
                result['fields'] = {}
                result['context'] = context
    return result

#-------------

Thanks In Advance

Omkar

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

0 follower(s)

Stats

Asked: 2/5/14, 3:22 AM
Seen: 4144 times
Last updated: 3/16/15, 8:10 AM