[IMP] Fixing first view of survey + logic bugs

bzr revid: rim@openerp.com-20131028144314-cjy5rexani70ikhc
This commit is contained in:
Richard Mathot (OpenERP) 2013-10-28 15:43:14 +01:00
parent e9d28d5686
commit 0e45d81546
7 changed files with 161 additions and 175 deletions

View File

@ -1,9 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_survey_manager,survey.manager,model_survey,base.group_survey_manager,1,1,1,1
access_survey_user,survey.user,model_survey,base.group_survey_user,1,0,0,0
access_survey_page_manager,survey.page user,model_survey_page,base.group_survey_manager,1,1,1,1
access_survey_question_manager,survey.question user,model_survey_question,base.group_survey_manager,1,1,1,1
access_survey_answer_manager,survey.answer user,model_survey_answer,base.group_survey_manager,1,1,1,1
access_survey_response_manager,survey.response user,model_survey_response,base.group_survey_manager,1,1,1,1
access_survey_response_answer_manager,survey.response.answer user,model_survey_response_answer,base.group_survey_manager,1,1,1,1
access_survey_response_line_manager,survey.response.line user,model_survey_response_line,base.group_survey_manager,1,1,1,1
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_survey_user,survey.user,model_survey_survey,base.group_survey_user,1,0,0,0
access_survey_manager,survey.manager,model_survey_survey,base.group_survey_manager,1,1,1,1
access_survey_page_manager,survey.page manager,model_survey_page,base.group_survey_manager,1,1,1,1
access_survey_question_manager,survey.question manager,model_survey_question,base.group_survey_manager,1,1,1,1
access_survey_suggestion_manager,survey.suggestion manager,model_survey_suggestion,base.group_survey_manager,1,1,1,1
access_survey_user_input_manager,survey.user_input manager,model_survey_user_input,base.group_survey_manager,1,1,1,1
access_survey_user_input_line_manager,survey.user_input_line manager,model_survey_user_input_line,base.group_survey_manager,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_survey_manager access_survey_user survey.manager survey.user model_survey model_survey_survey base.group_survey_manager base.group_survey_user 1 1 0 1 0 1 0
3 access_survey_user access_survey_manager survey.user survey.manager model_survey model_survey_survey base.group_survey_user base.group_survey_manager 1 0 1 0 1 0 1
4 access_survey_page_manager survey.page user survey.page manager model_survey_page base.group_survey_manager 1 1 1 1
5 access_survey_question_manager survey.question user survey.question manager model_survey_question base.group_survey_manager 1 1 1 1
6 access_survey_answer_manager access_survey_suggestion_manager survey.answer user survey.suggestion manager model_survey_answer model_survey_suggestion base.group_survey_manager 1 1 1 1
7 access_survey_response_manager access_survey_user_input_manager survey.response user survey.user_input manager model_survey_response model_survey_user_input base.group_survey_manager 1 1 1 1
8 access_survey_response_answer_manager access_survey_user_input_line_manager survey.response.answer user survey.user_input_line manager model_survey_response_answer model_survey_user_input_line base.group_survey_manager 1 1 1 1
access_survey_response_line_manager survey.response.line user model_survey_response_line base.group_survey_manager 1 1 1 1

View File

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Survey users -->
<record model="res.groups" id="base.group_survey_user">
<field name="name">User</field>
<field name="category_id" ref="base.module_category_survey"/>
</record>
<!-- Survey managers -->
<record model="res.groups" id="base.group_survey_manager">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_survey"/>
@ -14,7 +16,7 @@
<record id="survey_rule" model="ir.rule">
<field name="name">Survey</field>
<field ref="survey.model_survey" name="model_id"/>
<field name="model_id" ref="survey.model_survey_survey"/>
<field name="domain_force">[('state', '=', 'open'), ('visible_to_user', '=', True)]</field>
<field name="groups" eval="[(4, ref('base.group_survey_user'))]"/>
<field eval="0" name="perm_unlink"/>
@ -25,7 +27,7 @@
<record id="survey_rule_manager" model="ir.rule">
<field name="name">Survey</field>
<field ref="survey.model_survey" name="model_id"/>
<field name="model_id" ref="survey.model_survey_survey"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('base.group_survey_manager'))]"/>
<field eval="1" name="perm_unlink"/>

View File

@ -87,7 +87,7 @@ class survey_survey(osv.osv):
fragment = {
'active_id': survey_browse.id,
'action': 'survey.action_filling',
'params': survey_browse.uuid,
'params': survey_browse.token,
}
res[survey_browse.id] = urljoin(base_url, "?%s#%s"
% (urlencode(query), urlencode(fragment)))
@ -100,8 +100,8 @@ class survey_survey(osv.osv):
translate=True),
'category': fields.char('Category', size=128),
'page_ids': fields.one2many('survey.page', 'survey_id', 'Pages'),
'date_open': fields.datetime('Opening date', readonly=1),
'date_close': fields.datetime('Closing date', readonly=1),
'date_open': fields.datetime('Opening date'),
'date_close': fields.datetime('Closing date'),
'user_input_limit': fields.integer('Automatic closing limit',
help="Limits the number of instances of this survey that can be \
completed (if set to 0, no limit is applied",
@ -125,8 +125,8 @@ class survey_survey(osv.osv):
'User responses', readonly=1,),
'public_url': fields.function(_get_public_url,
string="Public link", type="char"),
'uuid': fields.char('Public token', size=8, required=1,
oldname="token"),
'token': fields.char('Public token', size=36, required=True, readonly=True,
hidden=True),
'email_template_id': fields.many2one('email.template',
'Email Template', ondelete='set null'),
}
@ -136,7 +136,7 @@ class survey_survey(osv.osv):
'state': 'draft',
'visible_to_user': True,
'auth_required': True,
'uuid': lambda s, cr, uid, c: uuid.uuid4(),
'token': lambda s, cr, uid, c: uuid.uuid4().__str__(),
}
# Public methods #
@ -148,15 +148,15 @@ class survey_survey(osv.osv):
def survey_open(self, cr, uid, ids, arg):
return self.write(cr, uid, ids, {'state': 'open',
'date_open': datetime.now()})
'date_open': fields.datetime.now})
def survey_close(self, cr, uid, ids, arg):
return self.write(cr, uid, ids, {'state': 'close',
'date_close': datetime.now()})
'date_close': fields.datetime.now})
def survey_cancel(self, cr, uid, ids, arg):
return self.write(cr, uid, ids, {'state': 'cancel',
'date_close': datetime.now()})
'date_close': fields.datetime.now})
## Actions ##
@ -165,7 +165,7 @@ class survey_survey(osv.osv):
current_rec = self.read(cr, uid, ids, context=context)
title = _("%s (copy)") % (current_rec.get('title'))
vals['title'] = title
return super(survey, self).copy(cr, uid, ids, vals, context=context)
return super(survey_survey, self).copy(cr, uid, ids, vals, context=context)
def action_print_survey_questions(self, cr, uid, ids, context=None):
''' Generates a printable view of an empty survey '''
@ -183,7 +183,9 @@ class survey_survey(osv.osv):
''' Open a survey in filling view '''
id = ids[0]
survey = self.browse(cr, uid, id, context=context)
context.update({'edit': False, 'survey_id': id, 'survey_token': survey.token, 'ir_actions_act_window_target': 'inline'})
context.update({'edit': False, 'survey_id': id,
'survey_token': survey.token,
'ir_actions_act_window_target': 'inline'})
return {
'view_type': 'form',
'view_mode': 'form',
@ -258,13 +260,13 @@ class survey_survey(osv.osv):
def unlink(self, cr, uid, ids, context=None):
''' Delete survey and linked email templates (if any) '''
email_template_ids = list()
for survey in self.browse(cr, uid, ids, context=context):
email_template_ids.append(survey.email_template_id.id)
if email_template_ids:
self.pool.get('email.template').unlink(cr, uid, email_template_ids,
context=context)
return super(survey, self).unlink(cr, uid, ids, context=context)
# email_template_ids = list()
# for survey in self.browse(cr, uid, ids, context=context):
# email_template_ids.append(survey.email_template_id.id)
# if email_template_ids:
# self.pool.get('email.template').unlink(cr, uid, email_template_ids,
# context=context)
return super(survey_survey, self).unlink(cr, uid, ids, context=context)
class survey_page(osv.osv):
@ -274,7 +276,7 @@ class survey_page(osv.osv):
screens.
.. note::
A page should be deleted if the survey it belongs is deleted. '''
A page should be deleted if the survey it belongs to is deleted. '''
_name = 'survey.page'
_description = 'Survey Page'
@ -328,6 +330,8 @@ class survey_page(osv.osv):
class survey_question(osv.osv):
''' Questions that will be asked in a survey.
Each question can have one of more suggested answers (eg. in case of
dropdown choices, multi-answer checkboxes, radio buttons...)
Changes
-------
@ -340,16 +344,6 @@ class survey_question(osv.osv):
_rec_name = 'question'
_order = 'sequence'
# Private methods #
## Function fields ##
def _gen_constr_error_msg(self, cr, uid, ids, name, arg, context=None):
return "constraint failed"
def _gen_val_error_msg(self, cr, uid, ids, name, arg, context=None):
return "validation failed"
# Model fields #
_columns = {
@ -385,20 +379,10 @@ class survey_question(osv.osv):
('matrix', 'Container of containers of questions')
], 'Question Type', required=1),
'suggested_answer_textbox': fields.char("Suggested answer",
translate=True),
'suggested_answer_num': fields.float("Suggested answer"),
'suggested_answer_num': fields.float("Suggested answer"),
'suggested_answer_num': fields.float("Suggested answer"),
'suggested_answer_num': fields.float("Suggested answer"),
'suggested_answer_num': fields.float("Suggested answer"),
'suggested_answer_num': fields.float("Suggested answer"),
'suggested_answers': fields.one2many('survey.suggestion',
'question_id', 'Suggested answers'),
# Comments
# Replace comment by a special child question?
'comments_allowed': fields.boolean('Allow comments',
oldname="allow_comment"),
'comment_children_ids': fields.one2many('survey.question_id',
@ -422,11 +406,12 @@ class survey_question(osv.osv):
'validation_max_value': fields.float('Maximum value'),
'validation_min_date': fields.date('Start date range'),
'validation_max_date': fields.date('End date range'),
'validation_error_msg': fields.function(_gen_val_error_msg,
type="char", string="Error message if validation fails"),
'validation_error_msg': fields.char("Error message if validation \
fails"),
'numeric_required_sum': fields.integer('Sum of all choices'),
'numeric_required_sum_err_msg': fields.text('Error message', translate=True),
'numeric_required_sum_err_msg': fields.text('Error message',
translate=True),
#'in_visible_rating_weight': fields.boolean('Is Rating Scale Invisible?'),
#'in_visible_menu_choice': fields.boolean('Is Menu Choice Invisible?'),
@ -443,12 +428,11 @@ class survey_question(osv.osv):
('at most', 'At Most'),
('exactly', 'Exactly'),
('a range', 'A Range')],
'Respondent must answer'),
'constr_req_ans': fields.integer('#Required Answer'),
'Constraint on answers number'),
#'constr_req_ans': fields.integer('Number of required answers'),
'constr_maximum_req_ans': fields.integer('Maximum Required Answer'),
'constr_minimum_req_ans': fields.integer('Minimum Required Answer'),
'constr_error_msg': fields.function(_gen_constr_error_msg, type="char",
string="Error message"),
'constr_error_msg': fields.char("Error message if constraints fails"),
}
_defaults = {
'sequence': 1,
@ -468,7 +452,7 @@ class survey_question(osv.osv):
#'in_visible_answer_type': 1
}
def on_change_type(self, cr, uid, ids, type, context=None):
def on_change_type(self, cr, uid, ids, type, context=None): # useful ?
val = {}
val['is_require_answer'] = False
val['is_comment_require'] = False
@ -601,6 +585,18 @@ class survey_question(osv.osv):
}
class survey_suggestion(osv.osv):
''' A suggested answer for a question '''
_name = 'survey.suggestion'
_rec_name = 'value'
_columns = {
'question_id': fields.many2one('survey.question', 'Question',
required=True, ondelete='cascade'),
'value': fields.char(length=128, translate=True, required=True)
}
class survey_user_input(osv.osv):
''' Metadata for a set of one user's answers to a particular survey '''
_name = "survey.user_input"
@ -724,27 +720,17 @@ class survey_user_input_line(osv.osv):
'skipped': fields.boolean('Skipped'),
'question_id': fields.many2one('survey.question', 'Question',
ondelete='restrict'),
'type': fields.selection([('textbox', 'Text box'),
'answer_type': fields.selection([('textbox', 'Text box'),
('numerical_box', 'Numerical box'),
('free_text', 'Free Text'),
('datetime', 'Date and Time'),
('checkbox', 'Checkbox'),
('simple_choice_scale', 'One choice on a scale'),
('simple_choice_dropdown', 'One choice in a menu'),
('multiple_choice', 'Some choices in checkboxes'),
], 'Question Type', required=1),
## Store here the answer to the question
#'answer_type': fields.selection(), # see types defined in question
#'answer_value' = fields.
## Comment storage
'comment': fields.text('Notes'),
'single_text': fields.char('Text', size=255),
'value_text': fields.char("Text answer"),
'value_number': fields.float("Numerical answer"),
'value_date': fields.datetime("Date answer"),
'value_free_text': fields.text("Free Text answer"),
'value_suggested': fields.many2one('survey.suggestion'),
}
_defaults = {
'skipped': False,

View File

@ -1,16 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--menuitem name="Tools" id="base.menu_tools" sequence="120"/-->
<!-- Top menu item -->
<menuitem name="Survey" id="survey_main" sequence="120"/>
<menuitem name="Survey" id="menu_surveys" parent="survey_main" sequence="10" groups="base.group_survey_user"/>
<menuitem name="Statistics" id="menu_reporting" parent="survey_main" sequence="20" groups="base.group_survey_manager"/>
<menuitem id="base.next_id_10" name="Survey" parent="base.menu_reporting" sequence="1" groups="base.group_survey_manager"/>
<menuitem name="Configuration" id="menu_surveys_configuration" parent="survey_main" sequence="30" groups="base.group_no_one"/>
<!--
Survey Response
@ -90,7 +81,7 @@
<record model="ir.actions.act_window" id="action_survey_response">
<field name="name">Survey Response</field>
<field name="res_model">survey.response</field>
<field name="res_model">survey.user_input</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="survey_response_tree"></field>
<field name="search_view_id" ref="survey_response_search"/>
@ -104,7 +95,7 @@
<record id="action_selected_survey_response" model="ir.actions.act_window">
<field name="name">Survey Response</field>
<field name="res_model">survey.response</field>
<field name="res_model">survey.user_input</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="survey_response_tree"></field>
<field name="search_view_id" ref="survey_response_search"/>
@ -116,9 +107,6 @@
</field>
</record>
<menuitem name="Surveys Responses" id="menu_survey_type_form1"
action="action_survey_response" parent="menu_reporting"
groups="base.group_survey_manager" sequence="2"/>
<!--
Survey
@ -126,7 +114,7 @@
<record model="ir.ui.view" id="survey_form">
<field name="name">survey_form</field>
<field name="model">survey</field>
<field name="model">survey.survey</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<form string="Survey" version="7.0">
@ -144,20 +132,16 @@
<div class="oe_title">
<label for="title" class="oe_edit_only"/>
<h1>
<field name="title" attrs="{'readonly':[('state','=','close')]}"/>
<field name="title" attrs="{'readonly':[('state','in',['close','cancel'])]}"/>
</h1>
</div>
<group>
<group colspan="4">
<field name="type" attrs="{'readonly':[('state','in',['close','cancel'])]}" class="oe_inline"/>
<field name="max_response_limit" attrs="{'readonly':[('state','=','close')]}"/>
<field name="category" attrs="{'readonly':[('state','in',['close','cancel'])]}"/>
<field name="user_input_limit" attrs="{'readonly':[('state','=','close')]}"/>
<field name="visible_to_user"/>
<field name="public_url" widget="url"/>
<div name="authenticate" colspan="4">
<small>
The Public Portal is not activated; users must be authenticated to answer the survey. If you want to make the survey available to everyone, please activate the Public Portal : Settings > General Settings > Activate the public portal.
</small>
</div>
<field name="auth_required" />
</group>
</group>
<field name="page_ids" colspan="4" mode="tree" attrs="{'readonly':[('state','=','close')]}" context="{'default_survey_id': active_id}">
@ -167,7 +151,7 @@
<field name="question_ids"/>
</tree>
</field>
<field name="note" placeholder="Survey description..." attrs="{'readonly':[('state','=','close')]}"/>
<field name="description" placeholder="Survey description..." attrs="{'readonly':[('state','=','close')]}"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
@ -179,39 +163,42 @@
<record model="ir.ui.view" id= "survey_tree">
<field name="name">survey_tree</field>
<field name="model">survey</field>
<field name="model">survey.survey</field>
<field name="arch" type="xml">
<tree colors="gray:state == 'close'" string="Survey">
<field name="title"/>
<field name="type"/>
<field name="date_open" string="Open Date"/>
<field name="date_close" string="Open Date"/>
<field name="tot_start_survey" string="Started"/>
<field name="tot_comp_survey" string="Completed"/>
<field name="state"/>
<field name="title" />
<field name="category"/>
<field name="date_open" string="Opening date" />
<field name="date_close" string="Closing date" />
<field name="tot_start_survey" string="Started" />
<field name="tot_comp_survey" string="Completed" />
<field name="user_input_limit" string="Max closing limit" />
<field name="state" />
<!--
<button name="action_fill_survey" states="open"
string="Fill in Survey" type="object" icon="gtk-execute" context="{'survey_id': active_id}" attrs="{'invisible':[('state','!=','open')]}"/>
<button name="action_print_survey" string="Print Answer" type="object" icon="gtk-print"/>
<button name="print_statistics" string="Print Statistics" states="open,close,cancel" type="object" icon="gtk-print" groups="base.group_survey_manager"/>
-->
</tree>
</field>
</record>
<record id="survey_search" model="ir.ui.view">
<field name="name">survey_search</field>
<field name="model">survey</field>
<field name="model">survey.survey</field>
<field name="arch" type="xml">
<search string="Search Survey">
<field name="title" string="Survey"/>
<field name="type"/>
<filter string="New / Draft" domain="[('state','=', 'draft')]"/>
<field name="category"/>
<filter string="Draft" domain="[('state','=', 'draft')]"/>
<filter string="Open" domain="[('state','=','open')]"/>
<filter string="Closed" domain="[('state','=','close')]"/>
<filter string="Canceled" domain="[('state','=','cancel')]"/>
<filter string="Cancelled" domain="[('state','=','cancel')]"/>
<separator/>
<filter string="Survey to fill in" name="unread_message" domain="['&amp;', ('response_ids.state', 'in', ['new', 'skip']), ('response_ids.partner_id.user_id', '=', uid)]"/>
<group expand="0" string="Group By...">
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
<filter string="Not completed yet" name="unread_message" domain="['&amp;', ('response_ids.state', 'in', ['new', 'skip']), ('response_ids.partner_id.user_id', '=', uid)]"/>
<group expand="1" string="Group by...">
<filter string="Category" name="group_category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'category'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
@ -220,16 +207,16 @@
<record model="ir.ui.view" id="view_survey_kanban">
<field name="name">event.survey.kanban</field>
<field name="model">survey</field>
<field name="model">survey.survey</field>
<field name="arch" type="xml">
<kanban>
<field name="title"/>
<field name="date_open"/>
<field name="tot_comp_survey"/>
<field name="max_response_limit"/>
<field name="user_input_limit"/>
<field name="color"/>
<field name="state"/>
<field name="authenticate"/>
<field name="auth_required"/>
<field name="public_url"/>
<templates>
<t t-name="kanban-box">
@ -249,8 +236,8 @@
<div class="oe_kanban_content">
<span class="oe_kanban_right" t-if="widget.view.is_action_enabled('edit')">
<a t-if="record.state.raw_value === 'draft'" title="Draft" class="oe_kanban_status"> </a>
<a t-if="record.state.raw_value === 'open' and record.authenticate.raw_value" title="Open for authentified people" class="oe_kanban_status_green"> </a>
<a t-if="record.state.raw_value === 'open' and !record.authenticate.raw_value" title="Open to everyone" class="oe_kanban_status_green"> </a>
<a t-if="record.state.raw_value === 'open' and record.auth_required.raw_value" title="Open for authentified people" class="oe_kanban_status_green"> </a>
<a t-if="record.state.raw_value === 'open' and !record.auth_required.raw_value" title="Open to everyone" class="oe_kanban_status_green"> </a>
<a t-if="record.state.raw_value === 'close'" title="Close" class="oe_kanban_status_red"> </a>
<a t-if="record.state.raw_value === 'cancel'" title="Cancelled" class="oe_kanban_status_red"> </a>
</span>
@ -262,8 +249,8 @@
<t t-if="record.state.raw_value !== 'open'"><span class="oe_inactive" title="You can only collect answers for the open survey">Invite people</span></t>
</td>
<td>
<t t-if="record.tot_comp_survey.raw_value"><a name="%(action_selected_survey_response)d" type="action">Get responses (<field name="tot_comp_survey"/><t t-if="record.max_response_limit.raw_value > 0"> / <field name="max_response_limit"/></t>)</a></t>
<t t-if="!record.tot_comp_survey.raw_value"><span class="oe_inactive" title="There is no answer yet">Get responses (<field name="tot_comp_survey"/><t t-if="record.max_response_limit.raw_value > 0"> / <field name="max_response_limit"/></t>)</span></t>
<t t-if="record.tot_comp_survey.raw_value"><a name="%(action_selected_survey_response)d" type="action">Get responses (<field name="tot_comp_survey"/><t t-if="record.user_input_limit.raw_value > 0"> / <field name="user_input_limit"/></t>)</a></t>
<t t-if="!record.tot_comp_survey.raw_value"><span class="oe_inactive" title="There is no answer yet">Get responses (<field name="tot_comp_survey"/><t t-if="record.user_input_limit.raw_value > 0"> / <field name="user_input_limit"/></t>)</span></t>
</td>
</tr>
<tr>
@ -284,13 +271,14 @@
</field>
</record>
<record model="ir.actions.act_window" id="action_survey_form1">
<record model="ir.actions.act_window" id="action_survey_form">
<field name="name">Surveys</field>
<field name="res_model">survey</field>
<field name="res_model">survey.survey</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="view_survey_kanban"></field>
<field name="search_view_id" ref="survey_search"/>
<field name="context">{'search_default_group_category': 1}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new survey.
@ -305,9 +293,10 @@
</field>
</record>
<menuitem name="Surveys" id="menu_survey_form"
action="action_survey_form1" parent="menu_surveys"
sequence="1"/>
<!--
Survey Pages
@ -378,9 +367,7 @@
<field name="context">{'search_default_group_by_survey': True}</field>
</record>
<menuitem name="Survey Pages" id="menu_survey_page_form1"
action="action_survey_page_form" parent="menu_surveys_configuration"
sequence="1"/>
<record model="ir.ui.view" id="survey_page_wizard_test1">
<field name="name">survey_page_wizard_test</field>
@ -573,6 +560,16 @@
<field name="context">{'search_default_group_by_survey': True, 'search_default_group_by_page': True}</field>
</record>
<record model="ir.actions.act_window" id="action_survey_suggestion_form">
<field name="name">Survey Suggestions</field>
<field name="res_model">survey.suggestion</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<!--<field name="view_id" ref="survey_question_tree"></field>
<field name="search_view_id" ref="survey_question_search"/>
<field name="context">{'search_default_group_by_survey': True, 'search_default_group_by_page': True}</field> -->
</record>
<record model="ir.ui.view" id="survey_question_wizard_test">
<field name="name">survey_question_wizard_test</field>
<field name="model">survey.question</field>
@ -589,9 +586,7 @@
</field>
</record>
<menuitem name="Survey Questions" id="menu_survey_question_form1"
action="action_survey_question_form" parent="menu_surveys_configuration"
sequence="2"/>
<!--
Survey Answer
@ -689,54 +684,19 @@
</field>
</record>
<!--
Survey Question Column Heading
-->
<record model="ir.ui.view" id="survey_question_column_heading_form">
<field name="name">survey_question_column_heading_form</field>
<field name="model">survey.question.column.heading</field>
<field name="arch" type="xml">
<form string="Column Heading">
<field name="title"/>
<field name="in_visible_rating_weight" invisible="1"/>
<field name="in_visible_menu_choice" invisible="1"/>
<group colspan="4" attrs="{'invisible':[('in_visible_rating_weight','!=',False)]}">
<field name="rating_weight"/>
<label align="0.0" string="Use if question type is rating_scale" />
</group>
<group colspan="4" attrs="{'invisible':[('in_visible_menu_choice','!=',False)]}">
<separator string="Menu Choices (each choice on separate lines)" colspan="4"/>
<field name="menu_choice" nolabel="1" colspan="4"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="survey_question_column_heading_tree">
<field name="name">survey_question_column_heading_tree</field>
<field name="model">survey.question.column.heading</field>
<field name="arch" type="xml">
<tree editable="bottom" string="Column Heading">
<field name="sequence" widget="handle"/>
<field name="title"/>
</tree>
</field>
</record>
<act_window
context="{'search_default_survey_id': [active_id], 'default_survey_id': active_id}"
id="act_survey_pages"
name="Pages"
res_model="survey.page"
src_model="survey"/>
src_model="survey.survey"/>
<act_window
context="{'search_default_survey': active_id, 'default_survey': active_id}"
id="act_survey_question"
name="Questions"
res_model="survey.question"
src_model="survey"/>
src_model="survey.survey"/>
<act_window
context="{'search_default_page_id': active_id, 'default_page_id': active_id}"
@ -748,8 +708,47 @@
<act_window domain="[('question_id', '=', active_id)]"
id="act_survey_answer"
name="Answers"
res_model="survey.answer"
res_model="survey.suggestion"
src_model="survey.question"/>
<!--
MENU ELEMENTS
-->
<!-- Top menubar item -->
<menuitem name="Surveys" id="survey_main" sequence="120"/>
<!-- Left menu categories-->
<menuitem name="Surveys" id="menu_surveys" parent="survey_main" sequence="10" groups="base.group_survey_user"/>
<menuitem name="Statistics" id="menu_statistics" parent="survey_main" sequence="20" groups="base.group_survey_manager"/>
<menuitem name="Configuration" id="menu_surveys_configuration" parent="survey_main" sequence="30" groups="base.group_survey_manager"/>
<!-- Left menu elements: Survey -->
<menuitem name="Surveys" id="menu_survey_form"
action="action_survey_form" parent="menu_surveys"
sequence="1"/>
<!-- Left menu elements: Statistics -->
<menuitem name="Surveys Answers" id="menu_survey_type_form1"
action="action_survey_response" parent="menu_statistics"
sequence="1"/>
<!-- Left menu elements: Configuration -->
<menuitem name="Survey Pages" id="menu_survey_page_form1"
action="action_survey_page_form" parent="menu_surveys_configuration"
sequence="1"/>
<menuitem name="Survey Questions" id="menu_survey_question_form1"
action="action_survey_question_form" parent="menu_surveys_configuration"
sequence="2"/>
<menuitem name="Survey Suggestions" id="menu_survey_suggestion_form1"
action="action_survey_suggestion_form" parent="menu_surveys_configuration"
sequence="3"/>
</data>
</openerp>

View File

@ -39,7 +39,7 @@ class survey_question_wiz(osv.osv_memory):
_name = 'survey.question.wiz'
_columns = {
'survey_id': fields.many2one('survey', 'Survey', required=True, ondelete='cascade', domain=[('state', 'in', ['draft', 'open'])]),
'survey_id': fields.many2one('survey.survey', 'Survey', required=True, ondelete='cascade', domain=[('state', 'in', ['draft', 'open'])]),
'page_no': fields.integer('Page Number'),
'page': fields.char('Page Position'),
'transfer': fields.boolean('Page Transfer'),
@ -200,7 +200,7 @@ class survey_question_wiz(osv.osv_memory):
user_browse = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
val = {
'type': 'notification',
'model': 'survey',
'model': 'survey.survey',
'res_id': survey_id,
'record_name': _("Survey N° %s") % survey_id,
'body': _("%s have post a new response on this survey.") % user_browse.name,

View File

@ -70,7 +70,7 @@ class survey_mail_compose_message(osv.TransientModel):
_defaults = {
'public': 'email_private',
'survey_id': lambda self,cr,uid,ctx={}: ctx.get('model') == 'survey' and ctx.get('res_id') or None,
'survey_id': lambda self,cr,uid,ctx={}: ctx.get('model') == 'survey.survey' and ctx.get('res_id') or None,
}
def default_get(self, cr, uid, fields, context=None):

View File

@ -5,7 +5,7 @@
<!--Survey send invitation Email template -->
<record id="email_template_survey" model="email.template">
<field name="name">Survey - Send by Email</field>
<field name="model_id" ref="model_survey"/>
<field name="model_id" ref="model_survey_survey"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucida Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); ">