This question has been flagged
1 Reply
5600 Views

Hi, just like what I pointed on the title, whenever I export the files, it always shows UTC timezone instead of local timezone. For example, on attendance it shows Signed in at 8am and then signed out at 5pm but when i export the attendance it will become signed in at 1am and signed out at 10am in the exported csv . My timezone is GMT +7. Can anyone help me how to fix this problem? Thank you.

Avatar
Discard

Have you found any solution for this one?

I have the same problem, does anyone found a solution? Otherwise, where is the script that manage the export?

Is there any solution? I have the same Problem

Best Answer

1) Export_data method override 2) Using Python convert UTC time to User timezone or DB timezone

The below source Export method convert UTC time to DB time zone

def export_data(self, cr, uid, ids, fields, context=None):
        dataindex = None
        for index, fieldlabel in enumerate(fields):
            if fieldlabel == 'service_date':
                dataindex = index         
        res = super(model_name, self).export_data(cr, uid, ids, fields, context=context) 
        try:
            for index, val in enumerate(res['datas']):
                if dataindex:           
                    service_date = res['datas'][index][dataindex] 
                    sdate = service_date
                    if sdate:
                        sdate = str(sdate)
                    try:
                        cr.execute("SELECT current_setting('TIMEZONE')")
                        db_timezone = cr.fetchone()[0]
                    except:
                       db_timezone = "US/Eastern"
                       dbtz = pytz.timezone(db_timezone)
                       utctz = pytz.timezone('UTC')
                       sdate_dt = datetime.datetime.strptime(sdate, "%Y-%m-%d %H:%M:%S")
                       utctz_dt = utctz.localize(sdate_dt, is_dst=None)
                       db_dt = utctz_dt.astimezone(dbtz)                         
                       sdate = db_dt.strftime('%m/%d/%Y %H:%M:%S')
                       res['datas'][index][dataindex] = sdate
          except Exception, e:
               #print "Exception", e
                pass    
          return res
Avatar
Discard

Thank's prakash