fix PJ
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 26 Mar 2012 18:53:26 +0000 (14:53 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 26 Mar 2012 18:53:26 +0000 (14:53 -0400)
project/dae/admin.py
project/dae/exporter.py

index 27fd94a..032c395 100644 (file)
@@ -1,7 +1,9 @@
 # -*- encoding: utf-8 -*-
 
 from django import forms
+
 from django.core.urlresolvers import reverse
+from django.core.mail import mail_admins
 from django.contrib import admin
 from django.contrib import messages
 from django.shortcuts import redirect
@@ -142,10 +144,17 @@ class ImportDossierAdmin(ImportAdmin):
         selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
         dae = [d for d in Dossier.objects.filter(id__in=selected)]
         for d in dae:
-            copie = d.importer()
-            messages.add_message(request, messages.SUCCESS, u"%s importé dans\
+            try:
+                d.importer(dry_run=True)
+                copie = d.importer()
+                messages.add_message(request, messages.SUCCESS, u"%s importé dans\
                     RH" % d)
-            url = reverse('admin:rh_dossier_change', args=(copie.id, ))
+                url = reverse('admin:rh_dossier_change', args=(copie.id, ))
+            except Exception, e:
+                mail_admins('DAE import', unicode(e))
+                messages.add_message(request, messages.ERROR, u"%s ne peut pas\
+                être importé" % d)
+                url = reverse('admin:dae_dossierfinalise_changelist')
             return redirect(url)
 
 
@@ -165,10 +174,17 @@ class ImportPosteAdmin(ImportAdmin):
         selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
         dae = [d for d in Poste.objects.filter(id__in=selected)]
         for p in dae:
-            copie = p.importer()
-            messages.add_message(request, messages.SUCCESS, u"%s importé dans\
-                    RH" % d)
-            url = reverse('admin:rh_poste_change', args=(copie.id, ))
+            try:
+                p.importer(dry_run=True)
+                copie = p.importer()
+                messages.add_message(request, messages.SUCCESS, u"%s importé dans\
+                        RH" % d)
+                url = reverse('admin:rh_poste_change', args=(copie.id, ))
+            except Exception, e:
+                mail_admins('DAE import', unicode(e))
+                messages.add_message(request, messages.ERROR, u"%s ne peut pas\
+                être importé" % p)
+                url = reverse('admin:dae_postefinalise_changelist')
             return redirect(url)
 
 admin.site.register(Poste, PosteAdmin)
index 5b64c0f..e313640 100644 (file)
@@ -98,7 +98,8 @@ class PosteCopier(SuperCopier):
 
     def copy(self, obj):
         copy = super(PosteCopier, self).copy(obj)
-        dae.ImportPoste(dae=obj, rh=copy).save()
+        if not self.dry_run:
+            dae.ImportPoste(dae=obj, rh=copy).save()
         return copy
 
     def clean_rh_dossiers(self, source, copy, parent, field, value):
@@ -126,6 +127,8 @@ class PosteCopier(SuperCopier):
         return []
 
     def clean_fichier(self, source, copy, parent, field, value):
+        if not self.dry_run and parent.id is None:
+            parent.save()
         filename = value.path.split('/')[-1]
         copy.poste_id = parent.id
         new_value = rh.poste_piece_dispatch(copy, filename)
@@ -150,7 +153,8 @@ class DossierCopier(SuperCopier):
 
     def copy(self, obj):
         copy = super(DossierCopier, self).copy(obj)
-        dae.ImportDossier(dae=obj, rh=copy).save()
+        if not self.dry_run:
+            dae.ImportDossier(dae=obj, rh=copy).save()
         return copy
 
     def clean_rh_contrats(self, source, copy, parent, field, value):
@@ -200,6 +204,8 @@ class DossierCopier(SuperCopier):
         copy.poste_id = poste.id
 
     def clean_fichier(self, source, copy, parent, field, value):
+        if not self.dry_run and parent.id is None:
+            parent.save()
         filename = value.path.split('/')[-1]
         copy.dossier_id = parent.id