From 48f4e7aa0aaa37dce1d96084867d9a200069402c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 22 Feb 2018 08:08:07 +0100 Subject: [PATCH] add support for formdata as events --- eodb/events/management/commands/common.py | 13 +++++++---- .../management/commands/feed_formdata.py | 19 ++++++++++++++++ eodb/events/migrations/0004_formdata.py | 22 +++++++++++++++++++ eodb/events/models.py | 5 +++++ 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 eodb/events/management/commands/feed_formdata.py create mode 100644 eodb/events/migrations/0004_formdata.py diff --git a/eodb/events/management/commands/common.py b/eodb/events/management/commands/common.py index eabd888..0adeee0 100644 --- a/eodb/events/management/commands/common.py +++ b/eodb/events/management/commands/common.py @@ -4,7 +4,7 @@ from django.core.management.base import BaseCommand, CommandError from django.db.models import Q from django.utils.dateparse import parse_date -from eodb.events.models import Commit, Email, Redmine +from eodb.events.models import Commit, Email, Redmine, Formdata class GraphCommand(BaseCommand): def add_arguments(self, parser): @@ -38,8 +38,11 @@ class GraphCommand(BaseCommand): yield (None, self.get_events(options)) def get_events(self, options): - domain_filter = Q(author_email__endswith='@entrouvert.com') | \ - Q(author_email__endswith='@entrouvert.org') + if options['events'] in ('formdata',): + domain_filter = Q(author_datetime__isnull=False) + else: + domain_filter = Q(author_email__endswith='@entrouvert.com') | \ + Q(author_email__endswith='@entrouvert.org') filters = {} if options.get('username'): @@ -56,7 +59,8 @@ class GraphCommand(BaseCommand): if options.get('datemax'): filters[datetime_var + '__lt'] = parse_date(options['datemax']) - return {'emails': Email, 'redmine': Redmine, 'git': Commit}[ + return {'emails': Email, 'redmine': Redmine, 'git': Commit, + 'formdata': Formdata}[ options['events']].objects.filter(domain_filter).filter(**filters) def get_title(self, options): @@ -64,6 +68,7 @@ class GraphCommand(BaseCommand): 'emails': 'Email activity', 'git': 'Git activity', 'redmine': 'Redmine activity', + 'formdata': 'Formdata activity', }[options['events']] if options.get('username'): title += ' for %s' % options['username'] diff --git a/eodb/events/management/commands/feed_formdata.py b/eodb/events/management/commands/feed_formdata.py new file mode 100644 index 0000000..8a6f357 --- /dev/null +++ b/eodb/events/management/commands/feed_formdata.py @@ -0,0 +1,19 @@ +import csv + +from django.core.management.base import BaseCommand +from django.utils.dateparse import parse_datetime + +from eodb.events.models import Formdata + + +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 parse_datetime(row[1]): + continue + event, created = Formdata.objects.get_or_create( + author_datetime=parse_datetime(row[1])) diff --git a/eodb/events/migrations/0004_formdata.py b/eodb/events/migrations/0004_formdata.py new file mode 100644 index 0000000..3a71477 --- /dev/null +++ b/eodb/events/migrations/0004_formdata.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-21 08:23 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0003_redmine'), + ] + + operations = [ + migrations.CreateModel( + name='Formdata', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('author_datetime', models.DateTimeField()), + ], + ), + ] diff --git a/eodb/events/models.py b/eodb/events/models.py index 81aff83..81fd58a 100644 --- a/eodb/events/models.py +++ b/eodb/events/models.py @@ -22,3 +22,8 @@ class Redmine(models.Model): module = models.CharField(max_length=200) author_email = models.CharField(max_length=100) author_datetime = models.DateTimeField() + + +class Formdata(models.Model): + # add formdata_id (site:formdata_id) + author_datetime = models.DateTimeField()