mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 15:47:12 +00:00
UTC bugfixes
This commit is contained in:
parent
54904a1630
commit
3720333927
@ -37,7 +37,7 @@ def setup(hass, config):
|
|||||||
|
|
||||||
def _handle_get_logbook(handler, path_match, data):
|
def _handle_get_logbook(handler, path_match, data):
|
||||||
""" Return logbook entries. """
|
""" Return logbook entries. """
|
||||||
start_today = dt_util.now().date()
|
start_today = dt_util.now().replace(hour=0, minute=0, second=0)
|
||||||
|
|
||||||
handler.write_json(humanify(
|
handler.write_json(humanify(
|
||||||
recorder.query_events(
|
recorder.query_events(
|
||||||
|
@ -10,7 +10,6 @@ import threading
|
|||||||
import queue
|
import queue
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
import time
|
|
||||||
import json
|
import json
|
||||||
import atexit
|
import atexit
|
||||||
|
|
||||||
@ -302,7 +301,7 @@ class Recorder(threading.Thread):
|
|||||||
migration_id = 0
|
migration_id = 0
|
||||||
|
|
||||||
if migration_id < 1:
|
if migration_id < 1:
|
||||||
cur.execute("""
|
self.query("""
|
||||||
CREATE TABLE recorder_runs (
|
CREATE TABLE recorder_runs (
|
||||||
run_id integer primary key,
|
run_id integer primary key,
|
||||||
start integer,
|
start integer,
|
||||||
@ -311,7 +310,7 @@ class Recorder(threading.Thread):
|
|||||||
created integer)
|
created integer)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
cur.execute("""
|
self.query("""
|
||||||
CREATE TABLE events (
|
CREATE TABLE events (
|
||||||
event_id integer primary key,
|
event_id integer primary key,
|
||||||
event_type text,
|
event_type text,
|
||||||
@ -319,10 +318,10 @@ class Recorder(threading.Thread):
|
|||||||
origin text,
|
origin text,
|
||||||
created integer)
|
created integer)
|
||||||
""")
|
""")
|
||||||
cur.execute(
|
self.query(
|
||||||
'CREATE INDEX events__event_type ON events(event_type)')
|
'CREATE INDEX events__event_type ON events(event_type)')
|
||||||
|
|
||||||
cur.execute("""
|
self.query("""
|
||||||
CREATE TABLE states (
|
CREATE TABLE states (
|
||||||
state_id integer primary key,
|
state_id integer primary key,
|
||||||
entity_id text,
|
entity_id text,
|
||||||
@ -332,55 +331,41 @@ class Recorder(threading.Thread):
|
|||||||
last_updated integer,
|
last_updated integer,
|
||||||
created integer)
|
created integer)
|
||||||
""")
|
""")
|
||||||
cur.execute('CREATE INDEX states__entity_id ON states(entity_id)')
|
self.query('CREATE INDEX states__entity_id ON states(entity_id)')
|
||||||
|
|
||||||
save_migration(1)
|
save_migration(1)
|
||||||
|
|
||||||
if migration_id < 2:
|
if migration_id < 2:
|
||||||
cur.execute("""
|
self.query("""
|
||||||
ALTER TABLE events
|
ALTER TABLE events
|
||||||
ADD COLUMN time_fired integer
|
ADD COLUMN time_fired integer
|
||||||
""")
|
""")
|
||||||
|
|
||||||
cur.execute('UPDATE events SET time_fired=created')
|
self.query('UPDATE events SET time_fired=created')
|
||||||
|
|
||||||
save_migration(2)
|
save_migration(2)
|
||||||
|
|
||||||
if migration_id < 3:
|
if migration_id < 3:
|
||||||
utc_offset = self.utc_offset
|
utc_offset = self.utc_offset
|
||||||
|
|
||||||
cur.execute("""
|
self.query("""
|
||||||
ALTER TABLE recorder_runs
|
ALTER TABLE recorder_runs
|
||||||
ADD COLUMN utc_offset integer
|
ADD COLUMN utc_offset integer
|
||||||
""")
|
""")
|
||||||
|
|
||||||
cur.execute("""
|
self.query("""
|
||||||
ALTER TABLE events
|
ALTER TABLE events
|
||||||
ADD COLUMN utc_offset integer
|
ADD COLUMN utc_offset integer
|
||||||
""")
|
""")
|
||||||
|
|
||||||
cur.execute("""
|
self.query("""
|
||||||
ALTER TABLE states
|
ALTER TABLE states
|
||||||
ADD COLUMN utc_offset integer
|
ADD COLUMN utc_offset integer
|
||||||
""")
|
""")
|
||||||
|
|
||||||
cur.execute("UPDATE schema_version SET performed=performed+?",
|
self.query("UPDATE recorder_runs SET utc_offset=?", [utc_offset])
|
||||||
(utc_offset,))
|
self.query("UPDATE events SET utc_offset=?", [utc_offset])
|
||||||
|
self.query("UPDATE states SET utc_offset=?", [utc_offset])
|
||||||
cur.execute("""
|
|
||||||
UPDATE recorder_runs SET utc_offset=?,
|
|
||||||
start=start + ?, end=end + ?, created=created + ?
|
|
||||||
""", [utc_offset]*4)
|
|
||||||
|
|
||||||
cur.execute("""
|
|
||||||
UPDATE events SET utc_offset=?,
|
|
||||||
time_fired=time_fired + ?, created=created + ?
|
|
||||||
""", [utc_offset]*3)
|
|
||||||
|
|
||||||
cur.execute("""
|
|
||||||
UPDATE states SET utc_offset=?, last_changed=last_changed + ?,
|
|
||||||
last_updated=last_updated + ?, created=created + ?
|
|
||||||
""", [utc_offset]*4)
|
|
||||||
|
|
||||||
save_migration(3)
|
save_migration(3)
|
||||||
|
|
||||||
@ -411,7 +396,7 @@ class Recorder(threading.Thread):
|
|||||||
|
|
||||||
def _adapt_datetime(datetimestamp):
|
def _adapt_datetime(datetimestamp):
|
||||||
""" Turn a datetime into an integer for in the DB. """
|
""" Turn a datetime into an integer for in the DB. """
|
||||||
return time.mktime(date_util.as_utc(datetimestamp).timetuple())
|
return date_util.as_utc(datetimestamp.replace(microsecond=0)).timestamp()
|
||||||
|
|
||||||
|
|
||||||
def _verify_instance():
|
def _verify_instance():
|
||||||
|
@ -32,15 +32,12 @@ def get_time_zone(time_zone_str):
|
|||||||
|
|
||||||
def utcnow():
|
def utcnow():
|
||||||
""" Get now in UTC time. """
|
""" Get now in UTC time. """
|
||||||
return dt.datetime.utcnow().replace(tzinfo=pytz.utc)
|
return dt.datetime.now(pytz.utc)
|
||||||
|
|
||||||
|
|
||||||
def now(time_zone=None):
|
def now(time_zone=None):
|
||||||
""" Get now in specified time zone. """
|
""" Get now in specified time zone. """
|
||||||
if time_zone is None:
|
return dt.datetime.now(time_zone or DEFAULT_TIME_ZONE)
|
||||||
time_zone = DEFAULT_TIME_ZONE
|
|
||||||
|
|
||||||
return utcnow().astimezone(time_zone)
|
|
||||||
|
|
||||||
|
|
||||||
def as_utc(dattim):
|
def as_utc(dattim):
|
||||||
@ -66,7 +63,7 @@ def as_local(dattim):
|
|||||||
|
|
||||||
def utc_from_timestamp(timestamp):
|
def utc_from_timestamp(timestamp):
|
||||||
""" Returns a UTC time from a timestamp. """
|
""" Returns a UTC time from a timestamp. """
|
||||||
return dt.datetime.fromtimestamp(timestamp, pytz.utc)
|
return dt.datetime.utcfromtimestamp(timestamp).replace(tzinfo=pytz.utc)
|
||||||
|
|
||||||
|
|
||||||
def datetime_to_local_str(dattim, time_zone=None):
|
def datetime_to_local_str(dattim, time_zone=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user