mirror of https://gitlab.federez.net/re2o/re2o
committed by
chirac
1 changed files with 50 additions and 0 deletions
@ -0,0 +1,50 @@ |
|||||
|
from django.core.management.base import BaseCommand |
||||
|
|
||||
|
from re2o.utils import all_adherent |
||||
|
|
||||
|
import matplotlib |
||||
|
matplotlib.use('Agg') |
||||
|
import matplotlib.pyplot as plt |
||||
|
from matplotlib.dates import (YEARLY, DateFormatter,rrulewrapper, RRuleLocator, drange) |
||||
|
from dateutil.rrule import MONTHLY |
||||
|
|
||||
|
from datetime import datetime |
||||
|
from datetime import timedelta |
||||
|
import pytz |
||||
|
|
||||
|
|
||||
|
class Command(BaseCommand): |
||||
|
help="Génère le graphe des adhérents entre la date de départ et de fin passées en argument au format 'JJ/MM/AAAA' " |
||||
|
|
||||
|
def add_arguments(self, parser): |
||||
|
parser.add_argument('date_start', type=str, help='Start date DD/MM/YYYY') |
||||
|
parser.add_argument('date_stop', type=str, help='Stop date DD/MM/YYYY') |
||||
|
|
||||
|
def handle(self, *args, **kwargs): |
||||
|
try: |
||||
|
date_start=datetime.strptime(kwargs['date_start'],'%d/%m/%Y') |
||||
|
date_stop=datetime.strptime(kwargs['date_stop'],'%d/%m/%Y') |
||||
|
except ValueError: |
||||
|
raise ValueError("The dates you entered do not follow the 'DD/MM/YYYY' format") |
||||
|
|
||||
|
date_start = pytz.utc.localize(date_start) |
||||
|
date_stop = pytz.utc.localize(date_stop) |
||||
|
delta = timedelta(days=10) |
||||
|
dates = [date_start] |
||||
|
count = [all_adherent(date_start).count()] |
||||
|
|
||||
|
while dates[-1]+delta < date_stop: |
||||
|
dates.append(dates[-1]+delta) |
||||
|
count.append(all_adherent(dates[-1]).count()) |
||||
|
|
||||
|
rule = rrulewrapper(MONTHLY, interval=5) |
||||
|
loc = RRuleLocator(rule) |
||||
|
formatter = DateFormatter('%d/%m/%y') |
||||
|
|
||||
|
fig, ax = plt.subplots() |
||||
|
plt.plot_date(dates, count,'.') |
||||
|
ax.xaxis.set_major_locator(loc) |
||||
|
ax.xaxis.set_major_formatter(formatter) |
||||
|
plt.xticks(rotation=45,size=10) |
||||
|
|
||||
|
plt.savefig('graph_adhesion.png') |
||||
Loading…
Reference in new issue