add basic support for redmine events
This commit is contained in:
parent
7df313e688
commit
ff6ef29aa8
|
@ -3,7 +3,7 @@ import matplotlib.pyplot as plt
|
|||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.utils.dateparse import parse_date
|
||||
|
||||
from eodb.events.models import Commit, Email
|
||||
from eodb.events.models import Commit, Email, Redmine
|
||||
|
||||
class GraphCommand(BaseCommand):
|
||||
def add_arguments(self, parser):
|
||||
|
@ -13,8 +13,10 @@ class GraphCommand(BaseCommand):
|
|||
parser.add_argument('--datemax', metavar='DATEMAX')
|
||||
parser.add_argument('--committime', action='store_true',
|
||||
help='use commit datetime instead of author datetime')
|
||||
parser.add_argument('--mailinglist', action='store_true',
|
||||
help='use mailing list emails instead of commits')
|
||||
parser.add_argument('--events', default='git',
|
||||
help='use event of this type (git (default), emails, redmine)')
|
||||
parser.add_argument('--redmine', action='store_true',
|
||||
help='use redmine events instead of commits')
|
||||
parser.add_argument('--notitle', action='store_true')
|
||||
parser.add_argument('--filename', metavar='FILENAME')
|
||||
|
||||
|
@ -53,16 +55,15 @@ class GraphCommand(BaseCommand):
|
|||
if options.get('datemax'):
|
||||
filters[datetime_var + '__lt'] = parse_date(options['datemax'])
|
||||
|
||||
if options.get('mailinglist'):
|
||||
return Email.objects.filter(**filters)
|
||||
else:
|
||||
return Commit.objects.filter(**filters)
|
||||
return {'emails': Email, 'redmine': Redmine, 'git': Commit}[
|
||||
options['events']].objects.filter(**filters)
|
||||
|
||||
def get_title(self, options):
|
||||
if options.get('mailinglist'):
|
||||
title = 'Email activity'
|
||||
else:
|
||||
title = 'Git activity'
|
||||
title = {
|
||||
'emails': 'Email activity',
|
||||
'git': 'Git activity',
|
||||
'redmine': 'Redmine activity',
|
||||
}[options['events']]
|
||||
if options.get('username'):
|
||||
title += ' for %s' % options['username']
|
||||
if options.get('module'):
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
import csv
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.utils.dateparse import parse_datetime
|
||||
|
||||
from eodb.events.models import Redmine
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('filename', metavar='FILENAME')
|
||||
|
||||
def handle(self, *args, **options):
|
||||
for row in csv.reader(open(options['filename'])):
|
||||
if not row[2]:
|
||||
continue
|
||||
redmine, created = Redmine.objects.get_or_create(journal_id=int(row[0]),
|
||||
defaults={
|
||||
'author_datetime': parse_datetime(row[1]),
|
||||
'module': row[2],
|
||||
'author_email': row[3]})
|
|
@ -0,0 +1,25 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.6 on 2017-10-17 20:44
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0002_email'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Redmine',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('journal_id', models.IntegerField(unique=True)),
|
||||
('module', models.CharField(max_length=200)),
|
||||
('author_email', models.CharField(max_length=100)),
|
||||
('author_datetime', models.DateTimeField()),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -15,3 +15,10 @@ class Email(models.Model):
|
|||
list_id = models.CharField(max_length=100)
|
||||
author_email = models.CharField(max_length=100)
|
||||
author_datetime = models.DateTimeField()
|
||||
|
||||
|
||||
class Redmine(models.Model):
|
||||
journal_id = models.IntegerField(unique=True)
|
||||
module = models.CharField(max_length=200)
|
||||
author_email = models.CharField(max_length=100)
|
||||
author_datetime = models.DateTimeField()
|
||||
|
|
Reference in New Issue