commands: adjust datetimes for timezone
This commit is contained in:
parent
fe11d8fb3e
commit
17063f976f
|
@ -20,16 +20,12 @@ class Command(GraphCommand):
|
|||
def handle(self, *args, **options):
|
||||
title = 'Git activity'
|
||||
|
||||
datetime_var = 'author_datetime'
|
||||
if options.get('committime'):
|
||||
datetime_var = 'commit_datetime'
|
||||
|
||||
total_events = {}
|
||||
plots = []
|
||||
for i, (legend, serie) in enumerate(self.get_series(options)):
|
||||
events = {}
|
||||
for commit in serie:
|
||||
commit_date = getattr(commit, datetime_var).date()
|
||||
commit_date = self.get_event_datetime(commit, options).date()
|
||||
if options.get('groupby') == 'weeks':
|
||||
graph_date = commit_date - datetime.timedelta(days=commit_date.weekday())
|
||||
elif options.get('groupby') == 'months':
|
||||
|
|
|
@ -5,6 +5,7 @@ import matplotlib.pyplot as plt
|
|||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.db.models import Q
|
||||
from django.utils.dateparse import parse_date
|
||||
from django.utils.timezone import make_aware, make_naive
|
||||
|
||||
from eodb.events.models import Commit, Email, Redmine, Formdata
|
||||
|
||||
|
@ -19,6 +20,8 @@ class GraphCommand(BaseCommand):
|
|||
parser.add_argument('--events', default='git',
|
||||
help='use event of this type (git (default), emails, redmine)')
|
||||
parser.add_argument('--notitle', action='store_true')
|
||||
parser.add_argument('--entrouvert', action='store_true',
|
||||
help='limit to @entrouvert persons')
|
||||
parser.add_argument('--filename', metavar='FILENAME')
|
||||
|
||||
def get_series(self, options):
|
||||
|
@ -39,14 +42,22 @@ class GraphCommand(BaseCommand):
|
|||
else:
|
||||
yield (None, self.get_events(options))
|
||||
|
||||
def get_event_datetime(self, event, options):
|
||||
datetime_var = 'author_datetime'
|
||||
if options.get('committime'):
|
||||
datetime_var = 'commit_datetime'
|
||||
return make_aware(make_naive(getattr(event, datetime_var)))
|
||||
|
||||
def get_events(self, options):
|
||||
if options['events'] in ('formdata',):
|
||||
domain_filter = Q(author_datetime__isnull=False)
|
||||
else:
|
||||
if options.get('entrouvert'):
|
||||
domain_filter = Q(author_email__endswith='@entrouvert.com') | \
|
||||
Q(author_email__endswith='@entrouvert.org')
|
||||
filters = {}
|
||||
elif options['events'] in ('formdata',):
|
||||
domain_filter = Q(author_datetime__isnull=False)
|
||||
else:
|
||||
domain_filter = Q()
|
||||
|
||||
filters = {}
|
||||
if options.get('username'):
|
||||
filters['author_email__startswith'] = options['username'] + '@'
|
||||
|
||||
|
|
|
@ -12,10 +12,6 @@ class Command(GraphCommand):
|
|||
for j in range(24):
|
||||
infos[(i, j)] = 0
|
||||
|
||||
datetime_var = 'author_datetime'
|
||||
if options.get('committime'):
|
||||
datetime_var = 'commit_datetime'
|
||||
|
||||
def hour_shift(x):
|
||||
x = x - 4
|
||||
if x < 0:
|
||||
|
@ -23,7 +19,9 @@ class Command(GraphCommand):
|
|||
return x
|
||||
|
||||
for commit in self.get_events(options):
|
||||
coords = (getattr(commit, datetime_var).weekday(), hour_shift(getattr(commit, datetime_var).hour))
|
||||
coords = (
|
||||
self.get_event_datetime(commit, options).weekday(),
|
||||
hour_shift(self.get_event_datetime(commit, options)).hour))
|
||||
infos[coords] = infos[coords] + 1
|
||||
|
||||
draw_punchcard(infos,
|
||||
|
|
|
@ -17,16 +17,12 @@ class Command(GraphCommand):
|
|||
parser.add_argument('--density', action='store_true')
|
||||
|
||||
def handle(self, *args, **options):
|
||||
datetime_var = 'author_datetime'
|
||||
if options.get('committime'):
|
||||
datetime_var = 'commit_datetime'
|
||||
|
||||
event_dates = []
|
||||
event_times = []
|
||||
plots = []
|
||||
for i, (legend, serie) in enumerate(self.get_series(options)):
|
||||
for commit in serie:
|
||||
graph_date = getattr(commit, datetime_var)
|
||||
graph_date = self.get_event_datetime(commit, options)
|
||||
graph_date -= datetime.timedelta(hours=4)
|
||||
event_dates.append(matplotlib.dates.date2num(graph_date.date()))
|
||||
event_times.append(graph_date.hour + graph_date.minute / 60. + graph_date.second / 3600)
|
||||
|
|
|
@ -14,10 +14,6 @@ np.random.seed(19680801)
|
|||
class Command(GraphCommand):
|
||||
|
||||
def handle(self, *args, **options):
|
||||
datetime_var = 'author_datetime'
|
||||
if options.get('committime'):
|
||||
datetime_var = 'commit_datetime'
|
||||
|
||||
data = []
|
||||
zones = []
|
||||
for i, (legend, serie) in enumerate(self.get_series(options)):
|
||||
|
@ -25,7 +21,7 @@ class Command(GraphCommand):
|
|||
events = []
|
||||
data.append(events)
|
||||
for event in serie:
|
||||
event_date = getattr(event, datetime_var)
|
||||
event_date = self.get_event_datetime(event, options)
|
||||
hour = event_date.hour
|
||||
if hour < 5:
|
||||
hour += 24
|
||||
|
|
Reference in New Issue