diff --git a/sentry/manager.py b/sentry/manager.py index c65c53f57ef5b2..5af66352aac71e 100644 --- a/sentry/manager.py +++ b/sentry/manager.py @@ -110,7 +110,7 @@ def get_chart_data(self, instance, max_days=90): return [] hours = max_days * 24 - today = datetime.datetime.now().replace(microsecond=0, second=0, minute=0) + today = datetime.datetime.utcnow().replace(microsecond=0, second=0, minute=0) min_date = today - datetime.timedelta(hours=hours) method = self._get_date_trunc('date', db) @@ -235,7 +235,7 @@ def from_kwargs(self, project, **kwargs): logger_name = kwargs.pop('logger', 'root') server_name = kwargs.pop('server_name', None) site = kwargs.pop('site', None) - date = kwargs.pop('timestamp', None) or datetime.datetime.now() + date = kwargs.pop('timestamp', None) or datetime.datetime.utcnow() extra = kwargs.pop('extra', None) modules = kwargs.pop('modules', None) diff --git a/sentry/queue/tasks/cleanup.py b/sentry/queue/tasks/cleanup.py index b3820823cd1824..f086161fff1abf 100644 --- a/sentry/queue/tasks/cleanup.py +++ b/sentry/queue/tasks/cleanup.py @@ -32,7 +32,7 @@ def cleanup(days=30, logger=None, site=None, server=None, level=None, # TODO: we should collect which messages above were deleted # and potentially just send out post_delete signals where # GroupedMessage can update itself accordingly - ts = datetime.datetime.now() - datetime.timedelta(days=days) + ts = datetime.datetime.utcnow() - datetime.timedelta(days=days) # Message qs = SkinnyQuerySet(Event).filter(datetime__lte=ts) diff --git a/sentry/scripts/runner.py b/sentry/scripts/runner.py index f95c5205cf2009..e8374e58e7f65e 100644 --- a/sentry/scripts/runner.py +++ b/sentry/scripts/runner.py @@ -159,7 +159,7 @@ def main(): raise ValueError("Configuration file does not exist. Use 'init' to initialize the file.") environment['config'] = config_path - environment['start_date'] = datetime.datetime.now() + environment['start_date'] = datetime.datetime.utcnow() settings_from_file(config_path) diff --git a/sentry/templatetags/sentry_helpers.py b/sentry/templatetags/sentry_helpers.py index 64b2829630fa0d..1258cd89fe6a90 100644 --- a/sentry/templatetags/sentry_helpers.py +++ b/sentry/templatetags/sentry_helpers.py @@ -166,7 +166,7 @@ def timesince(value): from django.template.defaultfilters import timesince if not value: return _('Never') - if value < datetime.datetime.now() - datetime.timedelta(days=5): + if value < datetime.datetime.utcnow() - datetime.timedelta(days=5): return value.date() value = (' '.join(timesince(value).split(' ')[0:2])).strip(',') if value == _('0 minutes'): diff --git a/sentry/utils/models.py b/sentry/utils/models.py index 6b5611c0660a7a..3662459f28521d 100644 --- a/sentry/utils/models.py +++ b/sentry/utils/models.py @@ -6,6 +6,7 @@ :license: BSD, see LICENSE for more details. """ +import datetime import base64 import logging import operator diff --git a/sentry/web/frontend/events.py b/sentry/web/frontend/events.py index f077c36cffc15d..7c96b6f08d8fe4 100644 --- a/sentry/web/frontend/events.py +++ b/sentry/web/frontend/events.py @@ -44,7 +44,7 @@ def event_list(request, project): offset = (page - 1) * settings.MESSAGES_PER_PAGE limit = page * settings.MESSAGES_PER_PAGE - today = datetime.datetime.now() + today = datetime.datetime.utcnow() has_realtime = False diff --git a/sentry/web/frontend/groups.py b/sentry/web/frontend/groups.py index 1214769aaa7f2b..df80b73fe9952f 100644 --- a/sentry/web/frontend/groups.py +++ b/sentry/web/frontend/groups.py @@ -185,7 +185,7 @@ def group_list(request, project, view_id=None): sort = DEFAULT_SORT_OPTION sort_label = _get_sort_label(sort) - today = datetime.datetime.now() + today = datetime.datetime.utcnow() has_realtime = page == 1 diff --git a/tests/http/tests.py b/tests/http/tests.py index 5ebba30e1ef13d..ff05a3abf7ca3e 100644 --- a/tests/http/tests.py +++ b/tests/http/tests.py @@ -63,7 +63,7 @@ def test_unicode_keys(self): self.assertEquals(instance.site, 'not_a_real_site') def test_timestamp(self): - timestamp = datetime.datetime.now() - datetime.timedelta(hours=1) + timestamp = datetime.datetime.utcnow() - datetime.timedelta(hours=1) kwargs = {u'message': 'hello', 'timestamp': timestamp.strftime('%s.%f')} resp = self._postWithSignature(kwargs) self.assertEquals(resp.status_code, 200, resp.content) @@ -75,7 +75,7 @@ def test_timestamp(self): self.assertEquals(group.last_seen, timestamp) def test_timestamp_as_iso(self): - timestamp = datetime.datetime.now() - datetime.timedelta(hours=1) + timestamp = datetime.datetime.utcnow() - datetime.timedelta(hours=1) kwargs = {u'message': 'hello', 'timestamp': timestamp.strftime('%Y-%m-%dT%H:%M:%S.%f')} resp = self._postWithSignature(kwargs) self.assertEquals(resp.status_code, 200, resp.content) diff --git a/tests/tests.py b/tests/tests.py index bb2bb518a195a3..5e4f9e05207004 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -126,7 +126,7 @@ def test_valid_only_message(self): def test_valid_timestamp_with_tz(self): with self.Settings(USE_TZ=True): - date = datetime.datetime.now().replace(tzinfo=pytz.utc) + date = datetime.datetime.utcnow().replace(tzinfo=pytz.utc) event = Group.objects.from_kwargs(1, message='foo', timestamp=date) self.assertEquals(event.message, 'foo') self.assertEquals(event.project_id, 1) @@ -135,7 +135,7 @@ def test_valid_timestamp_with_tz(self): def test_valid_timestamp_without_tz(self): # TODO: this doesnt error, but it will throw a warning. What should we do? with self.Settings(USE_TZ=True): - date = datetime.datetime.now() + date = datetime.datetime.utcnow() event = Group.objects.from_kwargs(1, message='foo', timestamp=date) self.assertEquals(event.message, 'foo') self.assertEquals(event.project_id, 1)