← Back to team overview

openerp-dev-web team mailing list archive

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