diff --git a/addons/crm_profiling/__openerp__.py b/addons/crm_profiling/__openerp__.py
index 382fbcb1b28..656f8360f0b 100644
--- a/addons/crm_profiling/__openerp__.py
+++ b/addons/crm_profiling/__openerp__.py
@@ -39,7 +39,7 @@ It also has been merged with the earlier CRM & SRM segmentation tool because the
'website': 'http://www.openerp.com',
'depends': ['base', 'crm'],
'init_xml': [],
- 'update_xml': ['security/ir.model.access.csv', 'wizard/open_questionnaire_view.xml', 'crm_profiling_view.xml'],
+ 'update_xml': ['security/ir.model.access.csv', 'crm_profiling_view.xml'],
'demo_xml': ['crm_profiling_demo.xml'],
'test': ['test/test_crm_profiling.yml'],
'installable': True,
diff --git a/addons/crm_profiling/crm_profiling.py b/addons/crm_profiling/crm_profiling.py
index 17cc04bc1d9..59137966da0 100644
--- a/addons/crm_profiling/crm_profiling.py
+++ b/addons/crm_profiling/crm_profiling.py
@@ -159,19 +159,19 @@ class questionnaire(osv.osv):
_name="crm_profiling.questionnaire"
_description= "Questionnaire"
- def build_form(self, cr, uid, questionnaire_id, context=None):
+ def build_form(self, cr, uid, data, context=None):
"""
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param data: Get Data
@param context: A standard dictionary for contextual values """
-
+
query = """
select name, id
from crm_profiling_question
where id in ( select question from profile_questionnaire_quest_rel where questionnaire = %s)"""
- res = cr.execute(query, (questionnaire_id,))
+ res = cr.execute(query, (data['form']['questionnaire_name'],))
result = cr.fetchall()
quest_fields={}
quest_form='''
@@ -180,6 +180,7 @@ class questionnaire(osv.osv):
quest_form = quest_form + '' % (oid,)
quest_fields['quest_form%d' % (oid,)] = {'string': name, 'type': 'many2one', \
'relation': 'crm_profiling.answer', 'domain': [('question_id','=',oid)] }
+ quest_form = quest_form + ''''''
return quest_form, quest_fields
_columns = {
@@ -218,16 +219,16 @@ class partner(osv.osv):
@param context: A standard dictionary for contextual values """
temp = []
- for x in context.get('fields'):
- if x.startswith("quest_form") and data[x] != 0 :
- if data[x] and data[x][0]:
- temp.append(data[x][0])
- partner_id = context.get('active_id')
+ for x in data['form']:
+ if x.startswith("quest_form") and data['form'][x] != 0 :
+ temp.append(data['form'][x])
+
query = "select answer from partner_question_rel where partner=%s"
- cr.execute(query, (partner_id,))
+ cr.execute(query, (data['id'],))
for x in cr.fetchall():
temp.append(x[0])
- self.write(cr, uid, [partner_id], {'answers_ids':[[6, 0, temp]]}, context=context)
+
+ self.write(cr, uid, [data['id']], {'answers_ids':[[6, 0, temp]]}, context=context)
return {}
diff --git a/addons/crm_profiling/crm_profiling_view.xml b/addons/crm_profiling/crm_profiling_view.xml
index a54d3d4b0a9..258de2e4e2d 100644
--- a/addons/crm_profiling/crm_profiling_view.xml
+++ b/addons/crm_profiling/crm_profiling_view.xml
@@ -2,6 +2,13 @@
+
+
Questionnaires
crm_profiling.questionnaire
@@ -133,7 +140,7 @@
diff --git a/addons/crm_profiling/crm_profiling_wizard.xml b/addons/crm_profiling/crm_profiling_wizard.xml
new file mode 100644
index 00000000000..39d436a6bd9
--- /dev/null
+++ b/addons/crm_profiling/crm_profiling_wizard.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/addons/crm_profiling/wizard/open_questionnaire.py b/addons/crm_profiling/wizard/open_questionnaire.py
index 2dc357cbc46..91b82a02d1a 100644
--- a/addons/crm_profiling/wizard/open_questionnaire.py
+++ b/addons/crm_profiling/wizard/open_questionnaire.py
@@ -18,72 +18,50 @@
# along with this program. If not, see .
#
##############################################################################
+import pooler
+import wizard
+from tools import UpdateableStr, UpdateableDict
-from osv import osv, fields
-from tools.translate import _
+_QUEST_FORM = UpdateableStr()
+_QUEST_FIELDS=UpdateableDict()
-class open_questionnaire(osv.osv_memory):
- _name = 'open.questionnaire'
- _columns = {
- 'questionnaire_id': fields.many2one('crm_profiling.questionnaire', 'Questionnaire name', required=True),
+class open_questionnaire(wizard.interface):
+
+ def _questionnaire_compute(self, cr, uid, data, context):
+ pooler.get_pool(cr.dbname).get(data['model'])._questionnaire_compute(cr, uid, data, context)
+ return {}
+
+
+ def build_form(self, cr, uid, data, context):
+ quest_form, quest_fields = pooler.get_pool(cr.dbname).get('crm_profiling.questionnaire').build_form(cr, uid, data, context)
+ _QUEST_FORM. __init__(quest_form)
+ _QUEST_FIELDS.__init__(quest_fields)
+ return{}
+
+ _questionnaire_choice_arch = '''
+ '''
+
+ _questionnaire_choice_fields = {
+ 'questionnaire_name': {'string': 'Questionnaire name', 'type': 'many2one', 'relation': 'crm_profiling.questionnaire', 'required': True },
}
- def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
- res = super(open_questionnaire, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
- if context.has_key('form') and context.has_key('fields'):
- field = {}
- form = context.get('form')
- form += """
-
-
-
-
-
-
-
-
- """
- res['fields'] = context.get('fields')
- for key, value in res['fields'].items():
- field[key] = fields.many2one('crm_profiling.answer', value['string'])
- self._columns.update(field)
- res['arch'] = form
- return res
-
-
- def questionnaire_compute(self, cr, uid, ids, context=None):
- """ Adds selected answers in partner form """
- model = context.get('active_model')
- if model == 'res.partner':
- data = self.read(cr, uid, ids, context.get('fields').keys(), context=context)[0]
- self.pool.get(model)._questionnaire_compute(cr, uid, data, context=context)
- return {'type': 'ir.actions.act_window_close'}
-
-
- def build_form(self, cr, uid, ids, context=None):
- """ Dynamically generates form according to selected questionnaire """
- models_data = self.pool.get('ir.model.data')
- questionnaire_id = self.browse(cr, uid, ids, context=context)[0].questionnaire_id.id
- quest_form, quest_fields = self.pool.get('crm_profiling.questionnaire').build_form(cr, uid, questionnaire_id, context=context)
- context.update({
- 'form': quest_form,
- 'fields': quest_fields
- })
-
- result = models_data._get_id(cr, uid, 'crm_profiling', 'view_open_questionnaire_form')
- res_id = models_data.browse(cr, uid, result, context=context).res_id
-
- return {
- 'name': _('Questionnaire'),
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'open.questionnaire',
- 'type': 'ir.actions.act_window',
- 'views': [(res_id,'form')],
- 'target': 'new',
- 'context': context
+ states = {
+ 'init': {
+ 'actions': [],
+ 'result': {'type': 'form', 'arch': _questionnaire_choice_arch, 'fields': _questionnaire_choice_fields, 'state':[('end', 'Cancel','gtk-cancel'), ('open', 'Open Questionnaire','terp-camera_test')]}
+ },
+ 'open': {
+ 'actions': [build_form],
+ 'result': {'type': 'form', 'arch':_QUEST_FORM, 'fields': _QUEST_FIELDS, 'state':[('end', 'Cancel','gtk-cancel'), ('compute', 'Save Data','terp-stock_format-scientific')]}
+ },
+ 'compute': {
+ 'actions': [],
+ 'result': {'type': 'action', 'action': _questionnaire_compute, 'state':'end'}
}
+ }
-open_questionnaire()
+open_questionnaire('open_questionnaire')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm_profiling/wizard/open_questionnaire_view.xml b/addons/crm_profiling/wizard/open_questionnaire_view.xml
deleted file mode 100644
index 8c17bd3b8c4..00000000000
--- a/addons/crm_profiling/wizard/open_questionnaire_view.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
- Open Questionnaires
- open.questionnaire
- form
-
-
-
-
-
-
- Open Questionnaire
- open.questionnaire
- form
- form
- new
-
-
-
-
-
-
-
-