Ujjvala Collins (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-osv_memory_crm_profiling-uco into
lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-osv_memory_crm_profiling-uco/+merge/74942
[IMP] crm_profiling:
-------------------------------
* Converted Open Questionnaire wizard to osv_memory.
* Removed unused file: crm_profiling/crm_profiling_wizard.xml
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-osv_memory_crm_profiling-uco/+merge/74942
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-osv_memory_crm_profiling-uco.
=== modified file 'crm_profiling/__openerp__.py'
--- crm_profiling/__openerp__.py 2011-07-06 12:29:28 +0000
+++ crm_profiling/__openerp__.py 2011-09-12 06:15:24 +0000
@@ -39,7 +39,7 @@
'website': 'http://www.openerp.com',
'depends': ['base', 'crm'],
'init_xml': [],
- 'update_xml': ['security/ir.model.access.csv', 'crm_profiling_view.xml'],
+ 'update_xml': ['security/ir.model.access.csv', 'wizard/open_questionnaire_view.xml', 'crm_profiling_view.xml'],
'demo_xml': ['crm_profiling_demo.xml'],
'installable': True,
'active': False,
=== modified file 'crm_profiling/crm_profiling.py'
--- crm_profiling/crm_profiling.py 2011-01-14 00:11:01 +0000
+++ crm_profiling/crm_profiling.py 2011-09-12 06:15:24 +0000
@@ -159,19 +159,19 @@
_name="crm_profiling.questionnaire"
_description= "Questionnaire"
- def build_form(self, cr, uid, data, context=None):
+ def build_form(self, cr, uid, questionnaire_id, 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, (data['form']['questionnaire_name'],))
+ res = cr.execute(query, (questionnaire_id,))
result = cr.fetchall()
quest_fields={}
quest_form='''<?xml version="1.0"?>
@@ -180,7 +180,6 @@
quest_form = quest_form + '<field name="quest_form%d"/><newline/>' % (oid,)
quest_fields['quest_form%d' % (oid,)] = {'string': name, 'type': 'many2one', \
'relation': 'crm_profiling.answer', 'domain': [('question_id','=',oid)] }
- quest_form = quest_form + '''</form>'''
return quest_form, quest_fields
_columns = {
@@ -219,16 +218,16 @@
@param context: A standard dictionary for contextual values """
temp = []
- for x in data['form']:
- if x.startswith("quest_form") and data['form'][x] != 0 :
- temp.append(data['form'][x])
-
+ 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')
query = "select answer from partner_question_rel where partner=%s"
- cr.execute(query, (data['id'],))
+ cr.execute(query, (partner_id,))
for x in cr.fetchall():
temp.append(x[0])
-
- self.write(cr, uid, [data['id']], {'answers_ids':[[6, 0, temp]]}, context=context)
+ self.write(cr, uid, [partner_id], {'answers_ids':[[6, 0, temp]]}, context=context)
return {}
=== modified file 'crm_profiling/crm_profiling_view.xml'
--- crm_profiling/crm_profiling_view.xml 2011-05-31 09:14:56 +0000
+++ crm_profiling/crm_profiling_view.xml 2011-09-12 06:15:24 +0000
@@ -2,13 +2,6 @@
<openerp>
<data>
- <wizard
- string="Using a questionnaire"
- model="crm_profiling.questionnaire"
- name="open_questionnaire"
- menu="False"
- id="wizard_open_questionnaire"/>
-
<record model="ir.actions.act_window" id="open_questionnaires">
<field name="name">Questionnaires</field>
<field name="res_model">crm_profiling.questionnaire</field>
@@ -140,7 +133,7 @@
<notebook position="inside">
<page string="Profiling">
<button string="Use a questionnaire"
- name="%(wizard_open_questionnaire)d" type="action" colspan="1"
+ name="%(action_open_questionnaire)d" type="action" colspan="1"
icon="gtk-justify-fill" />
<newline/>
<field name="answers_ids" colspan="4" nolabel="1"/>
=== removed file 'crm_profiling/crm_profiling_wizard.xml'
--- crm_profiling/crm_profiling_wizard.xml 2011-01-14 00:11:01 +0000
+++ crm_profiling/crm_profiling_wizard.xml 1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<openerp>
- <data>
- </data>
-</openerp>
=== modified file 'crm_profiling/wizard/open_questionnaire.py'
--- crm_profiling/wizard/open_questionnaire.py 2011-01-14 00:11:01 +0000
+++ crm_profiling/wizard/open_questionnaire.py 2011-09-12 06:15:24 +0000
@@ -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()
-
-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 = '''<?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 },
+
+from osv import osv, fields
+from tools.translate import _
+
+class open_questionnaire(osv.osv_memory):
+ _name = 'open.questionnaire'
+ _columns = {
+ 'questionnaire_id': fields.many2one('crm_profiling.questionnaire', 'Questionnaire name', required=True),
}
- 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'}
+ 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 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
}
- }
-open_questionnaire('open_questionnaire')
+open_questionnaire()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added file 'crm_profiling/wizard/open_questionnaire_view.xml'
--- crm_profiling/wizard/open_questionnaire_view.xml 1970-01-01 00:00:00 +0000
+++ crm_profiling/wizard/open_questionnaire_view.xml 2011-09-12 06:15:24 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" ?>
+<openerp>
+ <data>
+
+ <record id="view_open_questionnaire_form" model="ir.ui.view">
+ <field name="name">Open Questionnaires</field>
+ <field name="model">open.questionnaire</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Questionnaires">
+ <field name="questionnaire_id"/>
+ <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="build_form" string="Open Questionnaire" icon="terp-camera_test" type="object"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_open_questionnaire">
+ <field name="name">Open Questionnaire</field>
+ <field name="res_model">open.questionnaire</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ </record>
+
+
+ <!-- Questionnaire form view -->
+ <!--<act_window
+ context="{}"
+ id="act_open_questionnaire"
+ name="Using a Questionnaire"
+ res_model="open.questionnaire"
+ src_model="crm_profiling.questionnaire"
+ view_id="view_open_questionnaire_form"
+ target="new"
+ view_mode="form"/>-->
+
+ </data>
+</openerp>
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp