summaryrefslogtreecommitdiff
path: root/addons/crm_profiling/wizard/open_questionnaire.py
diff options
context:
space:
mode:
authorUjjvala Collins (OpenERP) <uco@tinyerp.com>2011-09-12 11:35:32 +0530
committerUjjvala Collins (OpenERP) <uco@tinyerp.com>2011-09-12 11:35:32 +0530
commita53b237da9ae22daf01ee2654b3e7f8562ab33b4 (patch)
tree487d90b55cc76663942df0cfadce42cdb7a9b37e /addons/crm_profiling/wizard/open_questionnaire.py
parent178fec5c6410db05dd7b49f362454a49a4dd8b21 (diff)
[IMP] crm_profiling: Converted simple wizard to osv_memory.
bzr revid: uco@tinyerp.com-20110912060532-6u9kquqq394hhf8l
Diffstat (limited to 'addons/crm_profiling/wizard/open_questionnaire.py')
-rw-r--r--addons/crm_profiling/wizard/open_questionnaire.py92
1 files changed, 57 insertions, 35 deletions
diff --git a/addons/crm_profiling/wizard/open_questionnaire.py b/addons/crm_profiling/wizard/open_questionnaire.py
index 91b82a02d1a..2dc357cbc46 100644
--- a/addons/crm_profiling/wizard/open_questionnaire.py
+++ b/addons/crm_profiling/wizard/open_questionnaire.py
@@ -18,50 +18,72 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-import pooler
-import wizard
-from tools import UpdateableStr, UpdateableDict
-_QUEST_FORM = UpdateableStr()
-_QUEST_FIELDS=UpdateableDict()
+from osv import osv, fields
+from tools.translate import _
-class open_questionnaire(wizard.interface):
+class open_questionnaire(osv.osv_memory):
+ _name = 'open.questionnaire'
+ _columns = {
+ 'questionnaire_id': fields.many2one('crm_profiling.questionnaire', 'Questionnaire name', required=True),
+ }
- def _questionnaire_compute(self, cr, uid, data, context):
- pooler.get_pool(cr.dbname).get(data['model'])._questionnaire_compute(cr, uid, data, context)
- return {}
+ 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 += """
+ <newline/>
+ <separator string="" colspan="4"/>
+ <group col="4" colspan="4">
+ <group col="2" colspan="2"/>
+ <button special="cancel" icon="gtk-cancel" string="Cancel"/>
+ <button name="questionnaire_compute" string="Save Data" icon="terp-stock_format-scientific" type="object"/>
+ </group>
+ </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 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{}
+ 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'}
- _questionnaire_choice_arch = '''<?xml version="1.0"?>
- <form string="Questionnaire">
- <field name="questionnaire_name"/>
- </form>'''
- _questionnaire_choice_fields = {
- 'questionnaire_name': {'string': 'Questionnaire name', 'type': 'many2one', 'relation': 'crm_profiling.questionnaire', 'required': True },
- }
+ 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
+ })
- 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'}
+ 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
}
- }
-open_questionnaire('open_questionnaire')
+open_questionnaire()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: