This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
eodb/eodb/events/management/commands/common.py

45 lines
1.6 KiB
Python

import matplotlib.pyplot as plt
from django.core.management.base import BaseCommand
from django.utils.dateparse import parse_date
from eodb.events.models import Commit
class GraphCommand(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--username', metavar='USERNAME')
parser.add_argument('--datemin', metavar='DATEMIN')
parser.add_argument('--datemax', metavar='DATEMAX')
parser.add_argument('--committime', action='store_true',
help='use commit datetime instead of author datetime')
def get_commits(self, options):
filters = {'author_email__endswith': '@entrouvert.com'}
if options.get('username'):
filters['author_email__startswith'] = options['username'] + '@'
datetime_var = 'author_datetime'
if options.get('committime'):
datetime_var = 'commit_datetime'
if options.get('datemin'):
filters[datetime_var + '__gte'] = parse_date(options['datemin'])
if options.get('datemax'):
filters[datetime_var + '__lt'] = parse_date(options['datemax'])
return Commit.objects.filter(**filters)
def get_title(self, options):
title = 'Git activity'
if options.get('username'):
title += ' for %s' % options['username']
if options.get('datemin'):
title += ' from %s' % options['datemin']
if options.get('datemax'):
title += ' until %s' % options['datemax']
return title
def plot(self, options):
plt.title(self.get_title(options))
plt.show()