~openerp-commiter/openobject-addons/extra-6.0

« back to all changes in this revision

Viewing changes to etl/lib/etl/component/input/csv_in.py

  • Committer: Fabien Pinckaers
  • Date: 2009-02-06 10:25:35 UTC
  • mfrom: (3547.1.3 trunk-extra-addons)
  • Revision ID: fp@tinyerp.com-20090206102535-1eykxxd9d8uwb8cv
Adding Sednacom Zarafa Module

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
This is an ETL Component that use to read data from csv file.
24
24
"""
25
25
 
26
 
from etl import etl
27
 
from etl.connector import file_connector
 
26
 
 
27
from etl.component import component
28
28
import csv
29
 
import datetime
30
 
 
31
 
class csv_in(etl.component):
 
29
 
 
30
 
 
31
class csv_in(component.component):
32
32
    """
33
33
        This is an ETL Component that use to read data from csv file.
34
34
       
64
64
 
65
65
    def process(self):        
66
66
        try:
67
 
            for data in self.reader:
68
 
                try:
69
 
                    chan='main'
70
 
                    for d in data.values():
71
 
                        d=unicode(d)                
72
 
                    self.row_count+=1
73
 
                    if self.row_limit and self.row_count > self.row_limit:
74
 
                         raise StopIteration                                        
75
 
                    if self.transformer:
76
 
                        data,chan=self.transformer.transform(data,chan)
77
 
                    yield data,chan                                     
78
 
                               
79
 
                except UnicodeEncodeError,e:    
80
 
                    error_d={'error_msg':'Error  :'+str(e),'error_date':datetime.datetime.today()}                                                                                                
81
 
                    yield error_d,'error'                    
 
67
            for data in self.reader:                               
 
68
                self.row_count+=1
 
69
                if self.row_limit and self.row_count > self.row_limit:
 
70
                     raise StopIteration                                        
 
71
                if self.transformer:
 
72
                    data=self.transformer.transform(data)
 
73
                if data:
 
74
                    yield data,'main'
82
75
 
83
 
            # TODO : call statistical iterator
 
76
            
84
77
        except TypeError,e:
85
 
            error_d={'error_msg':'Error  :'+str(e),'error_date':datetime.datetime.today()}                                                                                             
86
 
            yield error_d,'error'
 
78
            self.action_error(e)
87
79
        except IOError,e:
88
 
            error_d={'error_msg':'Error  :'+str(e),'error_date':datetime.datetime.today()}                                                                                             
89
 
            yield error_d,'error'
 
80
            self.action_error(e)
90
81
            
91
82
               
92
83