venissieux-technocarte: use argparse
This commit is contained in:
parent
c152d79ee0
commit
fd887393b4
|
@ -1,3 +1,4 @@
|
|||
import argparse
|
||||
import base64
|
||||
import collections
|
||||
import csv
|
||||
|
@ -6,7 +7,6 @@ import datetime
|
|||
import hashlib
|
||||
import hmac
|
||||
import random
|
||||
import sys
|
||||
import time
|
||||
import urllib.parse
|
||||
|
||||
|
@ -19,22 +19,10 @@ CARD_FAMILLE_SLUG = 'familles'
|
|||
CARD_GARDE_SLUG = 'gardes'
|
||||
|
||||
WCS_BASE_URL = 'https://wcs.dev.publik.love/api/'
|
||||
EMAIL = 'admin@localhost'
|
||||
WCS_EMAIL = 'admin@localhost'
|
||||
WCS_ORIG = 'wcs.dev.publik.love'
|
||||
WCS_KEY = 'c25fc1f82bd56b01e7cf62d785ae4410b0f7fdbebfb92a986d3fd6a150f3ba0e'
|
||||
|
||||
FILEPATH = None
|
||||
ACTION = sys.argv[1]
|
||||
assert ACTION in ('import', 'reset')
|
||||
|
||||
if ACTION == 'import':
|
||||
FILEPATH = sys.argv[2]
|
||||
|
||||
MODE = 'sample'
|
||||
if ACTION == 'import' and len(sys.argv) > 3:
|
||||
MODE = sys.argv[3]
|
||||
assert MODE in ('sample', 'full')
|
||||
|
||||
|
||||
def sign_url(url, key, algo='sha256', orig=None, timestamp=None, nonce=None):
|
||||
parsed = urllib.parse.urlparse(url)
|
||||
|
@ -70,7 +58,7 @@ def sign_string(s, key, algo='sha256', timedelta=30):
|
|||
|
||||
|
||||
def api_call(url, data=None, method='post'):
|
||||
url = sign_url(url + '?email=%s' % EMAIL, WCS_KEY, orig=WCS_ORIG)
|
||||
url = sign_url(url + '?email=%s' % WCS_EMAIL, WCS_KEY, orig=WCS_ORIG)
|
||||
if method == 'post':
|
||||
resp = requests.post(url, json={'data': data})
|
||||
elif method == 'get':
|
||||
|
@ -88,11 +76,11 @@ def get_field_value(carddata, varname):
|
|||
return carddata.data.get(field.id)
|
||||
|
||||
|
||||
def get_rows():
|
||||
with open(FILEPATH) as csvfile:
|
||||
def get_rows(filepath, mode):
|
||||
with open(filepath) as csvfile:
|
||||
reader = csv.DictReader(csvfile, delimiter=';', quotechar='"')
|
||||
for i, row in enumerate(reader):
|
||||
if MODE != 'full' and i > 100:
|
||||
if mode != 'full' and i > 100:
|
||||
break
|
||||
yield row
|
||||
|
||||
|
@ -118,12 +106,12 @@ def init_human_data(row):
|
|||
return data
|
||||
|
||||
|
||||
def create_adultes():
|
||||
def create_adultes(filepath, mode):
|
||||
adultes = {}
|
||||
familles_adulte_count = collections.defaultdict(int)
|
||||
|
||||
url = WCS_BASE_URL + 'cards/adultes/submit'
|
||||
for row in get_rows():
|
||||
for row in get_rows(filepath, mode):
|
||||
if row['ADULTE'] != '1':
|
||||
continue
|
||||
|
||||
|
@ -151,10 +139,10 @@ def create_adultes():
|
|||
return adultes
|
||||
|
||||
|
||||
def create_enfants():
|
||||
def create_enfants(filepath, mode):
|
||||
enfants = {}
|
||||
url = WCS_BASE_URL + 'cards/%s/submit' % CARD_ENFANT_SLUG
|
||||
for row in get_rows():
|
||||
for row in get_rows(filepath, mode):
|
||||
if row['ADULTE'] == '1':
|
||||
continue
|
||||
|
||||
|
@ -230,22 +218,30 @@ def create_gardes(enfants, familles):
|
|||
return gardes
|
||||
|
||||
|
||||
def import_data():
|
||||
adultes = create_adultes()
|
||||
enfants = create_enfants()
|
||||
def import_data(args):
|
||||
adultes = create_adultes(args.filepath, args.mode)
|
||||
enfants = create_enfants(args.filepath, args.mode)
|
||||
familles = create_familles(adultes, enfants)
|
||||
create_gardes(enfants, familles)
|
||||
|
||||
|
||||
def reset():
|
||||
def reset(args):
|
||||
CardDef.get_by_urlname(CARD_ENFANT_SLUG).data_class().wipe()
|
||||
CardDef.get_by_urlname(CARD_ADULTE_SLUG).data_class().wipe()
|
||||
CardDef.get_by_urlname(CARD_FAMILLE_SLUG).data_class().wipe()
|
||||
CardDef.get_by_urlname(CARD_GARDE_SLUG).data_class().wipe()
|
||||
|
||||
|
||||
if ACTION == 'import':
|
||||
import_data()
|
||||
parser = argparse.ArgumentParser()
|
||||
subparsers = parser.add_subparsers()
|
||||
|
||||
elif ACTION == 'reset':
|
||||
reset()
|
||||
parser_import = subparsers.add_parser('import')
|
||||
parser_import.set_defaults(func=import_data)
|
||||
parser_import.add_argument('--filepath')
|
||||
parser_import.add_argument('--mode', default='sample', choices=('sample', 'full'))
|
||||
|
||||
parser_import = subparsers.add_parser('reset')
|
||||
parser_import.set_defaults(func=reset)
|
||||
|
||||
args = parser.parse_args()
|
||||
args.func(args)
|
||||
|
|
Loading…
Reference in New Issue