openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #05509
lp:~openerp-dev/openobject-addons/trunk-import_salesforce-consistent-wizard-jam into lp:~openerp-dev/openobject-addons/trunk-import_salesforce
Jigar Amin - OpenERP has proposed merging lp:~openerp-dev/openobject-addons/trunk-import_salesforce-consistent-wizard-jam into lp:~openerp-dev/openobject-addons/trunk-import_salesforce.
Requested reviews:
Bhumika (OpenERP) (sbh-openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-import_salesforce-consistent-wizard-jam/+merge/57806
Hello,
New Consistence Wizard Designed Proposed by tfr for import salesfroce data had been developed and proposing the same for merging.
Kindly Review this,
Thank You
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-import_salesforce-consistent-wizard-jam/+merge/57806
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-import_salesforce.
=== modified file 'import_salesforce/import_sf.py'
--- import_salesforce/import_sf.py 2011-04-08 13:29:35 +0000
+++ import_salesforce/import_sf.py 2011-04-15 05:03:26 +0000
@@ -22,7 +22,7 @@
from datetime import datetime
from osv import osv
from osv import fields
-from tools.translate import _
+from tools.translate import _
try:
import beatbox
except ImportError:
@@ -43,10 +43,10 @@
if key not in fields and dictsf.get(isinstance(val, list) and val[0] or val):
fields.append(key)
if isinstance(val, list):
- data.append(' '.join(map(lambda x : dictsf[x], val)))
+ data.append(' '.join(map(lambda x: dictsf[x], val)))
else:
- data.append(dictsf.get(val,''))
- return fields,data
+ data.append(dictsf.get(val, ''))
+ return fields, data
def getSFLogin(client, usr, pwd):
@@ -57,7 +57,7 @@
'''
try:
sfi = client.login(usr, pwd)
- return client,sfi
+ return client, sfi
except Exception, e:
log = logging.getLogger('import.salesforce')
log.warning(str(e))
@@ -696,6 +696,10 @@
_description = 'Import SalesForce Data'
_columns = {
+ 'file_path': fields.binary('Select CSV file', filters='*.csv,*.xls'),
+ 'username': fields.char('Username/Email', size=255),
+ 'password': fields.char('Password', size=255),
+ 'token': fields.char('Security Token', size=255),
'lead': fields.boolean('Leads', help="If Leads is checked, SalesFroce Leads data imported to OpenERP CRM Leads"),
'opportunity': fields.boolean('Opportunities', help="If Opportunity is checked, SalesFroce Leads data imported to OpenERP CRM Opportunity."),
'users': fields.boolean('User', help="If Users is checked, SalesFroce Users data imported to OpenERP Users."),
@@ -747,30 +751,38 @@
'''
if context == None:
context = {}
- LOGIN_DATA.update({'username' : context.get('username',None),
- 'passToken' : context.get('passToken',None)})
+ record = self.browse(cr, uid, ids, context=context)
+ choice = context.get('choice', False)
+ record = record[0]
+ LOGIN_DATA.update({'username' : record.username,
+ 'passToken' : record.password+record.token})
sf_model = self._get_nodes(cr, uid, ids, context)
visited = set() #To avoid the Multiple call for resloving dependencies
- flag = False
- for model in sf_model:
- if not model in visited:
- flag = self.resolve_dependencies(cr, uid, MODEL_MAP, MODEL_MAP[model]['dependencies'], visited, flag, context=context)
- flag = MODEL_MAP[model]['function'](self, cr, uid, context)
- visited.add(model)
- if flag:
- obj_model = self.pool.get('ir.model.data')
- model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','sf.import.message.form')])
- resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'])
- return {
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'sf.import.message',
- 'views': [(resource_id,'form')],
- 'type': 'ir.actions.act_window',
- 'target': 'new',
- }
- raise osv.except_osv(_('Error !'), _('Error during importing data from salesforce.\nFor more check server log.'))
- return {'type': 'ir.actions.act_window_close'}
+ if record and choice == 'webservice':
+ flag = False
+ for model in sf_model:
+ if not model in visited:
+ flag = self.resolve_dependencies(cr, uid, MODEL_MAP, MODEL_MAP[model]['dependencies'], visited, flag, context=context)
+ flag = MODEL_MAP[model]['function'](self, cr, uid, context)
+ visited.add(model)
+ if flag:
+ obj_model = self.pool.get('ir.model.data')
+ model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','sf.import.message.form')])
+ resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'])
+ return {
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'sf.import.message',
+ 'views': [(resource_id,'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ }
+ raise osv.except_osv(_('Error !'), _('Error during importing data from salesforce.\nFor more check server log.'))
+ elif record and choice == 'file':
+ #TODO: Implementation for the import sf data form file
+ raise osv.except_osv(_('Error !'), _('Import Data from file is still not implemented'))
+ else:
+ raise osv.except_osv(_('Error !'), _('Incosistant or Wrong data.\nPlease try again'))
def resolve_dependencies(self, cr, uid, model_map, dep, visited, flag, context=None):
if context == None:
context = {}
=== modified file 'import_salesforce/import_sf_view.xml'
--- import_salesforce/import_sf_view.xml 2011-04-06 07:24:44 +0000
+++ import_salesforce/import_sf_view.xml 2011-04-15 05:03:26 +0000
@@ -1,15 +1,56 @@
<?xml version="1.0"?>
<openerp>
<data>
- <!--Form View for the model import sf-->
- <record model="ir.ui.view" id="view_import_sf_form">
+ <!--Form View for the model import sf for webservices-->
+ <record model="ir.ui.view" id="view_import_sf_webservice_form">
+ <field name="name">import.sf.webservice.form</field>
+ <field name="model">import.sf</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Import SalesForce">
+ <group colspan="4" width="400">
+ <separator string="Login Detail" colspan='4'/>
+ <field name='username' colspan='4' required='True'/>
+ <field name='password' password='True' colspan='4' required='True'/>
+ <field name='token' password='True' colspan='4' required='True'/>
+ </group>
+ <group colspan="4" width="400">
+ <separator string="Check model to import" colspan='4'/>
+ <field name='users' />
+ <field name='contact'/>
+ <field name='lead' />
+ <field name='opportunity'/>
+ <field name='case'/>
+ <field name='event'/>
+ <field name='task'/>
+ <newline/>
+ <field name='task_type' attrs="{'invisible': [('task', '!=', True)], 'required':[('task', '=', True)]}" colspan="4"/>
+ </group>
+ <group colspan="4" width="400">
+ <separator colspan='4' />
+ <group colspan="2"/>
+ <group colspan="2">
+ <button icon="gtk-cancel" special="cancel" string="_Cancel"/>
+ <button icon="gtk-execute" string="_Import" name="sf_do_import" type="object"/>
+ </group>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <!--Form View for the model import sf for file-->
+ <record model="ir.ui.view" id="view_import_sf_file_form">
<field name="name">import.sf.form</field>
<field name="model">import.sf</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Import SalesForce">
+ <group colspan="4">
+ <separator string="Select your file here" colspan='4'/>
+ <field name='file_path' required='True'/>
+ </group>
<separator string="Check Model to Import" colspan='4' />
- <group colspan="4" width="400" height="150">
+ <group colspan="4" >
<field name='users' />
<field name='contact'/>
<field name='lead' />
@@ -20,7 +61,7 @@
<newline/>
<field name='task_type' attrs="{'invisible': [('task', '!=', True)], 'required':[('task', '=', True)]}" colspan="4"/>
</group>
- <group colspan="4" width="400">
+ <group colspan="4">
<separator colspan='4' />
<group colspan="2"/>
<group colspan="2">
@@ -28,10 +69,8 @@
<button icon="gtk-execute" string="_Import" name="sf_do_import" type="object"/>
</group>
</group>
- </form>
+ </form>
</field>
</record>
</data>
</openerp>
-
-
=== modified file 'import_salesforce/wizard/import_salesforce.py'
--- import_salesforce/wizard/import_salesforce.py 2011-04-11 05:29:01 +0000
+++ import_salesforce/wizard/import_salesforce.py 2011-04-15 05:03:26 +0000
@@ -19,80 +19,50 @@
#
##############################################################################
-import logging
from osv import osv
from osv import fields
-from tools.translate import _
-
-try:
- import beatbox
-except ImportError:
- raise osv.except_osv(_('BeatBox Import Error!'), _('Please install beatbox api for SaleForce - beatbox-20.0.zip.\nhttp://pypi.python.org/pypi/beatbox'))
-
-
-
-class salesforce_login(osv.osv):
- '''
- SalesForce Login Form
- @name : Userlogin Name
- @password : User Password for login name
- @token : Security Token Provided bthe salesforce
- '''
- _name = 'salesforce.login'
- _description = 'SalesForce Login'
- _columns = {
- 'name' : fields.char('Username', size=255, required=True, help='Enter SalesForce login ussername.'),
- 'password' : fields.char('Password', size=255, required=True, help='Enter valid password for the supplied username.'),
- 'token' : fields.char('Scurity Token', size=255, required=True, help='Enter Security Token generated by salesforce for the above user.'),
- }
-
-# def default_get(self, cr, uid, fields, context=None):
-# if context == None:
-# context = {}
-# res = super(salesforce_login, self).default_get(cr, uid, fields, context=context)
-# sf_pool = self.pool.get('salesforce.login')
-# record = sf_pool.search(cr, uid, [])
-# if record:
-# record = record[-1]
-# rec = sf_pool.browse(cr, uid, record, context)
-# if not res.get('name'):
-# res.update({'name':rec.name})
-# if not res.get('password'):
-# res.update({'password':rec.password})
-# if not res.get('token'):
-# res.update({'token':rec.token})
-# return res
-
- def sf_do_login(self, cr, uid, ids, context=None):
- '''
- Method Will validated the login of user.
- '''
- record = self.browse(cr, uid, ids, context=context)
- for rec in record:
- uname = rec.name
- passkey = rec.password + rec.token
- log = logging.getLogger('salesforce.login')
- try:
- sfc = beatbox.PythonClient()
- sfc.login(uname, passkey)
- log.info(_("SuccessAttributeError: WindowConfigurator instance has no attribute 'containers'ful login to SalesForce Services with user - %s")%(uname))
- except Exception, e:
- log.warning(str(e))
- raise osv.except_osv(_('Error !'),_('Invalid login detail'))
-
- model_pool = self.pool.get('ir.model.data')
- view_ids = model_pool.search(cr,uid,[('model','=','ir.ui.view'),('name','=','salesforce.login.form')])
- view_res_id = model_pool.read(cr, uid, view_ids, fields=['res_id'])
- context.update({'username' : uname, 'passToken' : passkey})
- return {
- 'name' : 'Import SalesForce',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'import.sf',
- 'views': [(view_res_id,'form')],
- 'type': 'ir.actions.act_window',
- 'target': 'new',
- 'context': context
- }
-
-salesforce_login()
+
+SERVICES = [('webservice', 'From Web Services'), ('file', 'From File')]
+
+
+class salesforce_services(osv.osv):
+ '''
+ SalesForce Login Form
+ @name : List of Services Which will be imports
+ '''
+ _name = 'salesforce.services'
+ _description = 'SalesForce Data Import Service'
+ _columns = {
+ 'name': fields.selection(SERVICES, 'Import Data', required=True, help='Select the Service from selection and click Ok to Proceed import data through it.'),
+ }
+
+ def sf_do_select(self, cr, uid, ids, context=None):
+ '''
+ Method Will validated the login of user.
+ '''
+ if context == None:
+ context = {}
+ record = self.browse(cr, uid, ids, context=context)
+ choice = False
+ for rec in record:
+ choice = rec.name
+ views = {
+ 'webservice': 'view_import_sf_webservice_form',
+ 'file': 'view_import_sf_file_form',
+ }
+ model_pool = self.pool.get('ir.model.data')
+ view_ids = model_pool.search(cr, uid, [('model', '=', 'ir.ui.view'), ('name', '=', views.get(choice, False))])
+ view_res_id = model_pool.browse(cr, uid, view_ids[0], fields)
+ context.update({'choice': choice})
+ return {
+ 'name': 'Import SalesForce',
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'import.sf',
+ 'views': [(view_res_id.res_id, 'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ 'context': context,
+ }
+
+salesforce_services()
=== modified file 'import_salesforce/wizard/import_salesforce_view.xml'
--- import_salesforce/wizard/import_salesforce_view.xml 2011-04-06 07:24:44 +0000
+++ import_salesforce/wizard/import_salesforce_view.xml 2011-04-15 05:03:26 +0000
@@ -3,45 +3,42 @@
<data>
<!-- Menu for SalesForce Import Wizard-->
<menuitem id="menu_sf" name="Sales Force" parent="base.menu_base_partner" />
-
+
<!--form view for the SalesForce Login -->
- <record model="ir.ui.view" id="view_salesforce_login_form">
- <field name="name">salesforce.login.form</field>
- <field name="model">salesforce.login</field>
+ <record model="ir.ui.view" id="view_salesforce_service_form">
+ <field name="name">salesforce.services.form</field>
+ <field name="model">salesforce.services</field>
<field name="type">form</field>
<field name="arch" type="xml">
- <form string="SalesForce Login">
- <separator string="Login Detail" colspan='4' />
- <group colspan="4" width="400">
+ <form string="Select Service">
+ <group colspan="4" width="320">
<field name='name' colspan='4'/>
- <field name='password' password='True' colspan='4'/>
- <field name='token' password='True' colspan='4'/>
</group>
- <label string=" Enter Username, password and Security Token generated by SalesForce."/>
- <group colspan="4" width="400">
+ <label string=' Select Service from above selection through which data will be imported' colspan='4'/>
+ <group colspan="4" >
<separator colspan='4' />
<group colspan="2"/>
<group colspan="2">
<button icon="gtk-cancel" special="cancel" string="_Cancel"/>
- <button icon="terp-camera_test" string="_Login" name="sf_do_login" type="object"/>
+ <button icon="terp-camera_test" string="_Ok" name="sf_do_select" type="object"/>
</group>
</group>
- </form>
+ </form>
</field>
</record>
<!--SalsForce Login Form Action-->
- <record model="ir.actions.act_window" id="action_view_salesforce_login">
+ <record model="ir.actions.act_window" id="action_view_salesforce_service">
<field name="name">SalesForce Login</field>
- <field name="res_model">salesforce.login</field>
+ <field name="res_model">salesforce.services</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
- <field name="view_id" ref="view_salesforce_login_form"/>
+ <field name="view_id" ref="view_salesforce_service_form"/>
<field name="target">new</field>
</record>
<!--wizard under importsalesforce menu-->
- <menuitem id="menu_sf_login" name="Import SalesForce" parent="menu_sf" action="action_view_salesforce_login" icon="STOCK_EXECUTE"/>
+ <menuitem id="menu_sf_service" name="Import SalesForce" parent="menu_sf" action="action_view_salesforce_service" icon="STOCK_EXECUTE"/>
</data>
</openerp>
Follow ups