~openerp-dev/openobject-client/6.1-opw-576759-rgo

« back to all changes in this revision

Viewing changes to bin/widget_search/calendar.py

[MERGE] user locale to server side defined locale

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import locale
27
27
 
28
28
import tools
29
 
import tools.datetime_util
 
29
from tools import user_locale_format, datetime_util
30
30
import common
31
31
 
32
32
import wid_int
33
33
import date_widget
34
34
 
35
 
LDFMT = tools.datetime_util.get_date_format()
36
35
DT_FORMAT = '%Y-%m-%d'
37
36
DHM_FORMAT = '%Y-%m-%d %H:%M:%S'
38
37
class calendar(wid_int.wid_int):
40
39
        super(calendar, self).__init__(name, parent, attrs, screen)
41
40
 
42
41
        self.widget = gtk.HBox(spacing=3)
43
 
        self.format = LDFMT
 
42
        self.format = user_locale_format.get_date_format()
44
43
 
45
44
        self.widget1 = date_widget.ComplexEntry(self.format, spacing=3)
46
45
        self.entry1 = self.widget1.widget
83
82
        if self.default_search:
84
83
            try:
85
84
                date = tools.datetime_util.strptime(self.default_search, DT_FORMAT)
86
 
                self.entry1.set_text(date.strftime(LDFMT))
 
85
                self.entry1.set_text(date.strftime(self.format))
87
86
            except:
88
87
                pass
89
88
 
90
89
    def _date_get(self, str):
91
90
        try:
92
 
            date = tools.datetime_util.strptime(str, LDFMT)
 
91
            date = tools.datetime_util.strptime(str, self.format)
93
92
        except:
94
93
            return False
95
94
        return date.strftime(DT_FORMAT)
140
139
        try:
141
140
            val = self._date_get(dest.get_text())
142
141
            if val:
143
 
                cal.select_month(int(val[5:7])-1, int(val[0:4]))
144
 
                cal.select_day(int(val[8:10]))
 
142
                val = tools.datetime_util.strptime(val, DT_FORMAT)
 
143
                cal.select_month(val.month-1, val.year)
 
144
                cal.select_day(val.day)
145
145
        except ValueError:
146
146
            pass
147
147
 
149
149
        if response == gtk.RESPONSE_OK:
150
150
            year, month, day = cal.get_date()
151
151
            dt = DT.date(year, month+1, day)
152
 
            dest.set_text(dt.strftime(LDFMT))
 
152
            dest.set_text(dt.strftime(self.format))
153
153
        win.destroy()
154
154
 
155
155
    def clear(self):
167
167
        super(datetime, self).__init__(name, parent, attrs, screen)
168
168
 
169
169
        self.widget = gtk.HBox(spacing=5)
170
 
        self.format = LDFMT+' %H:%M:%S'
 
170
        self.format = user_locale_format.get_datetime_format(True)
171
171
 
172
172
        self.widget1 = date_widget.ComplexEntry(self.format, spacing=3)
173
173
        self.entry1 = self.widget1.widget
225
225
        if event.keyval == gtk.keysyms.F2:
226
226
            self.cal_open(widget, event, dest, parent)
227
227
            return True
228
 
    
 
228
 
229
229
    def get_value(self, entry, timezone=True):
230
230
        str = entry.get_text()
231
 
        if str=='':
 
231
        if str == '':
232
232
            return False
233
233
        return tools.datetime_util.local_to_server_timestamp(str[:19], self.format, DHM_FORMAT,
234
234
                        tz_offset=timezone, ignore_unparsable_time=False)
251
251
 
252
252
    def grab_focus(self):
253
253
        return self.entry1.grab_focus()
254
 
    
 
254
 
255
255
    def set_datetime(self, dt_val, entry, timezone=True):
256
256
        if not dt_val:
257
257
            entry.clear()
258
258
        else:
259
 
            t = tools.datetime_util.server_to_local_timestamp(dt_val[:19],
 
259
            t = tools.datetime_util.server_to_local_timestamp(dt_val[:len(DHM_FORMAT) + 2],
260
260
                    DHM_FORMAT, self.format, tz_offset=timezone)
261
261
            if len(t) > entry.get_width_chars():
262
262
                entry.set_width_chars(len(t))
287
287
        try:
288
288
            val = self.get_value(dest, timezone=False)
289
289
            if val:
290
 
                hour.set_value(int(val[11:13]))
291
 
                minute.set_value(int(val[-5:-3]))
292
 
                cal.select_month(int(val[5:7])-1, int(val[0:4]))
293
 
                cal.select_day(int(val[8:10]))
 
290
                val = DT.datetime.strptime(val[:len(DHM_FORMAT) + 2], DHM_FORMAT)
 
291
                hour.set_value(val.hour)
 
292
                minute.set_value(val.minute)
 
293
                cal.select_month(val.month-1, val.year)
 
294
                cal.select_day(val.day)
294
295
            elif dest == self.entry1:
295
296
                hour.set_value(0)
296
297
                minute.set_value(0)
303
304
        if response == gtk.RESPONSE_OK:
304
305
            hr = int(hour.get_value())
305
306
            mi = int(minute.get_value())
306
 
            dt = cal.get_date()
307
 
            month = int(dt[1])+1
308
 
            day = int(dt[2])
309
 
            date = DT.datetime(dt[0], month, day, hr, mi)
 
307
            year, month, day = cal.get_date()
 
308
            date = DT.datetime(year, month+1, day, hr, mi)
310
309
            try:
311
310
                value = date.strftime(DHM_FORMAT)
312
311
            except ValueError:
313
312
                common.message(_('Invalid datetime value! Year must be greater than 1899 !'))
314
313
            else:
315
314
                self.set_datetime(value, dest, timezone=False)
316
 
        
 
315
 
317
316
        win.destroy()
318
317
 
319
318
    def clear(self):