add basic support for redmine events

This commit is contained in:
Frédéric Péters 2017-10-17 22:53:34 +02:00
parent 7df313e688
commit ff6ef29aa8
4 changed files with 66 additions and 11 deletions

View File

@ -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'):

View File

@ -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]})

View File

@ -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()),
],
),
]

View File

@ -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()