diff options
| author | Olivier Dony <odo@openerp.com> | 2011-10-20 10:33:03 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2011-10-20 10:33:03 +0200 |
| commit | 03e9077e7ae8f4d83aaceea7f9ac0381edad61ad (patch) | |
| tree | 4dbd5bd4016245cb77385e72287c9c791b3ae1d9 /addons | |
| parent | 84ebee356710871e1c382edc6b8e337c2a5e1c53 (diff) | |
[REVERT] incorrect implementation of crm_profiling wizard
This is a revert of rev.5422 rco@openerp.com-20111019144722-r3c1a62jp3cd5cpq
bzr revid: odo@openerp.com-20111020083303-u61dn5h0li49aybe
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/crm_profiling/__openerp__.py | 2 | ||||
| -rw-r--r-- | addons/crm_profiling/crm_profiling.py | 21 | ||||
| -rw-r--r-- | addons/crm_profiling/crm_profiling_view.xml | 9 | ||||
| -rw-r--r-- | addons/crm_profiling/crm_profiling_wizard.xml | 5 | ||||
| -rw-r--r-- | addons/crm_profiling/wizard/open_questionnaire.py | 92 | ||||
| -rw-r--r-- | addons/crm_profiling/wizard/open_questionnaire_view.xml | 44 |
6 files changed, 60 insertions, 113 deletions
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='''<?xml version="1.0"?> @@ -180,6 +180,7 @@ class questionnaire(osv.osv): 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 = { @@ -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 @@ <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> @@ -133,7 +140,7 @@ <notebook position="inside"> <page string="Profiling"> <button string="Use a questionnaire" - name="%(action_open_questionnaire)d" type="action" colspan="1" + name="%(wizard_open_questionnaire)d" type="action" colspan="1" icon="gtk-justify-fill" /> <newline/> <field name="answers_ids" colspan="4" nolabel="1"/> 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 @@ +<?xml version="1.0"?> +<openerp> + <data> + </data> +</openerp> 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 <http://www.gnu.org/licenses/>. # ############################################################################## +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), - } - - 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 +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 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, 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 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 - }) + _questionnaire_choice_arch = '''<?xml version="1.0"?> + <form string="Questionnaire"> + <field name="questionnaire_name"/> + </form>''' - 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 + _questionnaire_choice_fields = { + 'questionnaire_name': {'string': 'Questionnaire name', 'type': 'many2one', 'relation': 'crm_profiling.questionnaire', 'required': True }, + } - 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 @@ -<?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> |
