Advertisement
Guest User

Untitled

a guest
Feb 4th, 2013
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.82 KB | None | 0 0
  1. import csv
  2. import urllib
  3. import xmlrpclib
  4. import logging
  5.  
  6. from openerp.osv import fields, osv
  7.  
  8. class panda_res_partner(osv.osv):
  9.     _name = 'res.partner'
  10.     _inherit = 'res.partner'
  11.     _description = 'Partner'
  12.    
  13.     _columns = {
  14.         'panda_id': fields.integer('panda_id')
  15.         }
  16.                        
  17.     def _start_syncro(self, cr, uid):
  18.         # row = hány sort kérjen le egy szerre, skip = hányadikkal kezdje, local_url = az openerp server elérhetösége, remote_url= a firebird script elérhetősége
  19.         username = 'admin'
  20.         pwd = 'admin'
  21.         dbname = 'nagel_test'
  22.         model = 'res.partner'
  23.        
  24.         proxy_common = 'http://192.168.40.34:8069/' + '/xmlrpc/common'
  25.         sock_common = xmlrpclib.ServerProxy(proxy_common)
  26.         uid = sock_common.login(dbname, username, pwd)
  27.        
  28.         proxy_object = 'http://192.168.40.34:8069/' + '/xmlrpc/object'
  29.         sock = xmlrpclib.ServerProxy(proxy_object)
  30.        
  31.         # Hu ID-je
  32.         country_id = 100
  33.        
  34.         rows_url = 'http://192.168.40.3/firebird/?f=export_gigabit2011_csv2openerp_partner_count&nohtml=1'
  35.         number_of_rows_file = urllib.urlretrieve(rows_url)
  36.         rowreader = csv.reader(open(number_of_rows_file[0], 'rb'))
  37.         total_rows = 0
  38.         for rownumber in rowreader:
  39.             total_rows = int(rownumber[0])
  40.  
  41.         while True:
  42.             if skip >= total_rows:
  43.                 break
  44.             syncro(200, 0, 'http://192.168.40.3/firebird')
  45.             skip += row
  46.  
  47.  
  48.     def syncro(row, skip, url):
  49.         csvurl = str(url) + '/?f=export_gigabit2011_csv2openerp_partner_all&nohtml=1&skip='+ str(skip) +'&row=' + str(row)
  50.         file_name = urllib.urlretrieve(csvurl)
  51.    
  52.         reader = csv.reader(open(file_name[0], 'rb'))
  53.         for csvrow in reader:
  54.             # [0]=active, [1]=panda_id, [2]=zip(irányitószám), [3]=country [4]=name, [5]=street,
  55.             # [6]=street2, [7]=city, [8]=comment, [9]=bankszámla
  56.             # UTF-8 convertálás hogy megfelelöen kezeljea stringeket.
  57.             csvrow[4] = csvrow[4].decode("utf-8")
  58.             csvrow[5] = csvrow[5].decode("utf-8")
  59.             csvrow[6] = csvrow[6].decode("utf-8")
  60.             csvrow[7] = csvrow[7].decode("utf-8")
  61.             args = [('panda_id', '=', csvrow[1]),]
  62.             ids = sock.execute(dbname, uid, pwd, model, 'search', args)
  63.             fields = ['active', 'panda_id', 'zip', 'country_id', 'name', 'street', 'street2', 'city', 'comment', 'vat'] #fields to read
  64.             data = sock.execute(dbname, uid, pwd, 'res.partner', 'read', ids, fields) #ids is a list of id
  65.             local_number += 1
  66.             if data:
  67.                 for erprow in data:
  68.                     #results = sock.execute(dbname, uid, pwd, model, 'unlink', ids)
  69.                     # a tömböknek (dictionary pythomban) nevük van....
  70.                     values = {}
  71.                     #string be convertálom különben mindig külömböző lesz
  72.                     if str(erprow['active']) != str(csvrow[0]):
  73.                         values['active'] = csvrow[0]
  74.                     # x_panda_id ki hagyva mert az alapján vana keresés...
  75.                     if erprow['zip'] != csvrow[2]:
  76.                         values['zip'] = csvrow[2]
  77.                     #a country kicsit nezebb mivel Openerpnek van saját táblája országokrol és IDvel müködik.
  78.                     if erprow['country_id'] != country_id: 
  79.                         values['country_id'] = country_id
  80.                     if erprow['name'] != csvrow[4]:
  81.                         values['name'] = csvrow[4]
  82.                     if erprow['street'] != csvrow[5]:
  83.                         values['street'] = csvrow[5]
  84.                     if erprow['street2'] != csvrow[6]:
  85.                         values['street2'] = csvrow[6]
  86.                     if erprow['city'] != csvrow[7]:
  87.                         values['city'] = csvrow[7]
  88.                     if erprow['comment'] != csvrow[8]:
  89.                         values['comment'] = csvrow[8]
  90.                     if erprow['vat'] != csvrow[9]:
  91.                         values['vat'] = csvrow[9]
  92.                     if values:
  93.                         results = sock.execute(dbname, uid, pwd, model, 'write', ids, values)
  94.             else:
  95.                 partner_data = {'name':csvrow[4], 'active':str(csvrow[0]), 'vat':csvrow[9], 'panda_id': csvrow[1], 'zip' : csvrow[2], 'country_id': country_id, 'street': csvrow[5], 'street2' : csvrow[6], 'city': csvrow[7], 'comment': csvrow[8], 'vat': csvrow[9],}
  96.                 partner_id = sock.execute(dbname, uid, pwd, model, 'create', partner_data)
  97.  
  98. panda_res_partner()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement