Commit 28a7e0a23c0a89f96225d29a0494cc5ca04e1b10
1 parent
67814e41
Exists in
master
and in
4 other branches
Strip row values the soonest and once
When importing irap's csv file, remove leading and trailing spaces to any imported cell.
Showing
1 changed file
with
29 additions
and
26 deletions
Show diff stats
app/commands/commands.py
@@ -35,38 +35,47 @@ def feed_from_irap(csv_file_name): | @@ -35,38 +35,47 @@ def feed_from_irap(csv_file_name): | ||
35 | for row in csvreader: | 35 | for row in csvreader: |
36 | # print('\n'.join(row.keys())) | 36 | # print('\n'.join(row.keys())) |
37 | # break | 37 | # break |
38 | + # Remove any leading/trailing spaces | ||
39 | + row = {k: v.strip() for k, v in row.items()} | ||
38 | rows.append(row) | 40 | rows.append(row) |
39 | 41 | ||
40 | - # todo: service_title | ||
41 | - # project_tile | ||
42 | - # typology_tile | ||
43 | - # thematic_tile | ||
44 | - # agent_tile | 42 | + firstname_key = 'NOM' |
43 | + secondname_key = 'prénom' | ||
44 | + project_key = 'PROJETS' | ||
45 | + service_key = 'Groupe métier' | ||
46 | + typology_title = 'TYPOLOGIE' | ||
47 | + thematic_title = 'thématique' | ||
45 | 48 | ||
46 | - projects = [r['PROJETS'].strip() for r in rows] | 49 | + # Get the columns values |
50 | + # | ||
51 | + projects = [r[project_key] for r in rows] | ||
47 | projects = sorted(set(projects)) | 52 | projects = sorted(set(projects)) |
48 | - agents = [(r['NOM'].strip(), r['prénom'].strip()) for r in rows] | 53 | + agents = [(r[firstname_key], r[secondname_key].strip()) for r in rows] |
49 | agents = sorted(set(agents)) | 54 | agents = sorted(set(agents)) |
50 | - thematics = [r['thématique'].strip() for r in rows] | ||
51 | - thematics = sorted(set(thematics)) | ||
52 | - typologies = [r['TYPOLOGIE'].strip() for r in rows] | ||
53 | - typologies = sorted(set(typologies)) | ||
54 | - services = [r['Groupe métier'].strip() for r in rows] | 55 | + services = [r[service_key] for r in rows] |
55 | services = sorted(set(services)) | 56 | services = sorted(set(services)) |
56 | 57 | ||
58 | + # thematics = [r[thematic_title] for r in rows] | ||
59 | + # thematics = sorted(set(thematics)) | ||
60 | + # typologies = [r[typology_title] for r in rows] | ||
61 | + # typologies = sorted(set(typologies)) | ||
62 | + | ||
63 | + # Feed agents from column | ||
64 | + # | ||
57 | for a in agents: | 65 | for a in agents: |
58 | n_a = Agent(firstname=a[0], secondname=a[1]) | 66 | n_a = Agent(firstname=a[0], secondname=a[1]) |
59 | db.session.add(n_a) | 67 | db.session.add(n_a) |
60 | db.session.commit() | 68 | db.session.commit() |
61 | - # a = Agent.query.filter(Agent.firstname == 'ESPAIGNOL').one() | ||
62 | - # print(f">{a.secondname}<") | ||
63 | - # sys.exit() | ||
64 | 69 | ||
70 | + # Feed projects from column | ||
71 | + # | ||
65 | for p in projects: | 72 | for p in projects: |
66 | n_p = Project(name=p) | 73 | n_p = Project(name=p) |
67 | db.session.add(n_p) | 74 | db.session.add(n_p) |
68 | db.session.commit() | 75 | db.session.commit() |
69 | 76 | ||
77 | + # Feed services from column | ||
78 | + # | ||
70 | for s in services: | 79 | for s in services: |
71 | n_s = Service(name=s) | 80 | n_s = Service(name=s) |
72 | db.session.add(n_s) | 81 | db.session.add(n_s) |
@@ -78,27 +87,21 @@ def feed_from_irap(csv_file_name): | @@ -78,27 +87,21 @@ def feed_from_irap(csv_file_name): | ||
78 | db.session.commit() | 87 | db.session.commit() |
79 | 88 | ||
80 | for r in rows: | 89 | for r in rows: |
81 | - p = Project.query.filter(Project.name == r['PROJETS']).one() | ||
82 | - try: | ||
83 | - a = Agent.query.filter(Agent.firstname == r['NOM'], Agent.secondname == r['prénom']).one() | ||
84 | - except NoResultFound: | ||
85 | - print(f"Not found >{a.firstname}< >{a.secondname}<") | ||
86 | - continue | ||
87 | - s = Service.query.filter(Service.name == r['Groupe métier']).one() | 90 | + p = Project.query.filter(Project.name == r[project_key]).one() |
91 | + a = Agent.query.filter(Agent.firstname == r[firstname_key], Agent.secondname == r[secondname_key]).one() | ||
92 | + s = Service.query.filter(Service.name == r[service_key]).one() | ||
88 | for period_name in range(2011, 2030): | 93 | for period_name in range(2011, 2030): |
89 | t = Period.query.filter(Period.name == period_name).one() | 94 | t = Period.query.filter(Period.name == period_name).one() |
90 | charge = r[f"{period_name}"] | 95 | charge = r[f"{period_name}"] |
91 | - # print(f">{charge}<") | ||
92 | try: | 96 | try: |
93 | - charge = float(charge) | ||
94 | - charge = int(100*charge) | 97 | + charge = int(100 * float(charge)) |
95 | except ValueError: | 98 | except ValueError: |
96 | # print(f"Wrong charge {charge}") | 99 | # print(f"Wrong charge {charge}") |
97 | charge = 0 | 100 | charge = 0 |
98 | n_c = Charge(agent_id=a.id, | 101 | n_c = Charge(agent_id=a.id, |
99 | project_id=p.id, | 102 | project_id=p.id, |
100 | service_id=s.id, | 103 | service_id=s.id, |
101 | - capacity_id=0, | 104 | + # capacity_id=0, |
102 | period_id=t.id, | 105 | period_id=t.id, |
103 | charge_rate=charge) | 106 | charge_rate=charge) |
104 | db.session.add(n_c) | 107 | db.session.add(n_c) |