From 98a0fae05e8a5ecf16c112b9393102e4ab0b45b8 Mon Sep 17 00:00:00 2001
From: Nicolas Joyard <joyard.nicolas@gmail.com>
Date: Mon, 30 May 2016 21:43:18 +0200
Subject: [PATCH] Recomm import: change delimiter and fix weight

---
 .../contrib/import_recommendations.py          | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/representatives_recommendations/contrib/import_recommendations.py b/representatives_recommendations/contrib/import_recommendations.py
index 6f30307c..04c55391 100644
--- a/representatives_recommendations/contrib/import_recommendations.py
+++ b/representatives_recommendations/contrib/import_recommendations.py
@@ -40,6 +40,7 @@ class RecommendationImporter:
         if dossier is None:
             try:
                 dossier = Dossier.objects.get(title__iexact=title)
+                self.dossier_cache[title] = dossier
             except Dossier.DoesNotExist:
                 dossier = None
 
@@ -63,6 +64,8 @@ class RecommendationImporter:
                 row['part'], row['title']))
             return False
 
+        weight = int(row['weight']) * int(row['ponderation'])
+
         try:
             recom = Recommendation.objects.get(proposal=proposal)
         except Recommendation.DoesNotExist:
@@ -70,11 +73,11 @@ class RecommendationImporter:
                 proposal=proposal,
                 recommendation=row['recommendation'],
                 title=row['description'],
-                weight=row['weight']
+                weight=weight
             )
             recom.save()
             logger.info('Created recommendation with weight %s for %s: %s' % (
-                row['weight'],
+                weight,
                 row['title'],
                 row['part']
             ))
@@ -87,11 +90,11 @@ def main(stream=None):
     Imports recommendations from an old memopol instance.
 
     Usage:
-        cat recommendations.csv | memopol_import_recommendations > rejected.csv
+        cat recommendations.csv | memopol_import_recommendations
 
     The input CSV file should be generated by the following query:
-        SELECT CONCAT(r.description, ';', r.weight, ';', r.recommendation, ';',
-            r.part, ';', p.title)
+        SELECT CONCAT(r.description, '|', r.weight, '|', r.recommendation, '|',
+            r.part, '|', p.title, '|', p.ponderation)
         FROM votes_recommendation r
             LEFT JOIN votes_proposal p ON r.proposal_id = p.id
         WHERE p.institution = 'EU'
@@ -105,12 +108,13 @@ def main(stream=None):
     rejected = []
     imported = 0
 
-    reader = csv.DictReader(stream or sys.stdin, delimiter=';', fieldnames=[
+    reader = csv.DictReader(stream or sys.stdin, delimiter='|', fieldnames=[
         'description',
         'weight',
         'recommendation',
         'part',
-        'title'
+        'title',
+        'ponderation'
     ], quoting=csv.QUOTE_NONE)
 
     for row in reader:
-- 
GitLab