import DAE
[auf_rh_dae.git] / project / dae / exporter.py
index a43283e..08f4e07 100644 (file)
@@ -6,7 +6,8 @@ import os
 import  shutil
 
 from django.conf import settings
-from project.rh import  models as rh
+from project.rh import models as rh
+import models as dae
 
 SKIP = "** SKIP **"
 
@@ -28,10 +29,12 @@ class SuperCopier(object):
             self.stdout.write(txt)
 
     def clean_id(self, source, copy, parent, field, value):
-        self.out(SKIP, 1)
+        self.out(SKIP, 2)
         return []
 
     def parent(self, parent, child):
+        if not self.dry_run:
+            parent.save()
         klass = parent.__class__.__name__.lower()
         k = "%s_id" % klass
         setattr(child, k, parent.id)
@@ -56,9 +59,6 @@ class SuperCopier(object):
             else:
                 setattr(copy, f.name, value)
 
-        if not self.dry_run:
-            copy.save()
-    
         for obj_composition in obj._meta._related_objects_cache:
             app_label, dummy = obj_composition.name.split(':')
             field_name = obj_composition.field.rel.related_name
@@ -76,7 +76,7 @@ class SuperCopier(object):
                 # no reverse relation
                 self.out(" %s %s" % (field_name, str(e)), 1)
                 continue
-            
+
             for child in children:
                 child_copy = self.duplicate(child, parent=copy, level=level+1,)
                 parentship_fct = "parent_%s" % (field_name)
@@ -85,9 +85,9 @@ class SuperCopier(object):
                 else:
                     parentship = getattr(self, "parent")
                 parentship(copy, child_copy)
-                
                 if not self.dry_run:
                     child_copy.save()
+    
         return copy
 
 
@@ -113,6 +113,10 @@ class PosteCopier(SuperCopier):
         self.out(SKIP, 1)
         return []
 
+    def clean_poste(self, source, copy, parent, field, value):
+        self.out(SKIP, 1)
+        return []
+
     def clean_fichier(self, source, copy, parent, field, value):
         filename = value.path.split('/')[-1]
         copy.poste_id = parent.id
@@ -152,6 +156,11 @@ class DossierCopier(SuperCopier):
         self.out(SKIP, 1)
         return []
 
+    def clean_dossier(self, source, copy, parent, field, value):
+        self.out(SKIP, 1)
+        return []
+
+
     def clean_employe(self, source, copy, parent, field, value):
         if source.employe.id_rh is not None:
             copy.employe = source.employe.id_rh
@@ -164,8 +173,17 @@ class DossierCopier(SuperCopier):
             copy.employe = nouvel_employe
 
     def clean_poste(self, source, copy, parent, field, value):
-        copier = PosteCopier(verbosity=self.verbosity, dry_run=self.dry_run)
-        poste = copier.duplicate(value)
+        # poste comparaison a un champs nommé poste
+        if isinstance(value, unicode):
+            setattr(copy, field.name, value)
+            return
+
+        if dae.ImportPoste.objects.filter(dae=value).exists():
+            poste = dae.ImportPoste.get(dae=value).rh
+        else:
+            copier = PosteCopier(verbosity=self.verbosity,
+                    dry_run=self.dry_run)
+            poste = copier.duplicate(value)
         copy.poste_id = poste.id
 
     def clean_fichier(self, source, copy, parent, field, value):
@@ -194,5 +212,3 @@ class DossierCopier(SuperCopier):
         dst = os.path.join(settings.PRIVE_MEDIA_ROOT, new_value)
         shutil.copy(src, dst)
         setattr(copy, field.name, new_value)
-
-