refactoring pour couplage fort model form, abstraction utilisation JSON
[auf_django_emploi.git] / auf / django / emploi / forms.py
index 8987fa5..2801738 100644 (file)
@@ -1,71 +1,46 @@
 # -*- encoding: utf-8 -*-
 
-import os
 from django import forms
-from django.contrib import admin
 from django.forms.models import inlineformset_factory
 from django.forms.widgets import CheckboxSelectMultiple
 from django.forms import ModelForm
 
 from captcha.fields import CaptchaField
 
-from recrutement import models as recr
+from models import *
 
 ################################################################################
 # OFFRE EMPLOI
 ################################################################################
-class CandidatPieceForm(inlineformset_factory(recr.Candidat,
-                        recr.CandidatPiece)):
-    nom = forms.MultipleChoiceField(choices=recr.TYPE_PIECE_CHOICES,
+class CandidatPieceForm(inlineformset_factory(Candidat,
+                        CandidatPiece)):
+    nom = forms.MultipleChoiceField(choices=TYPE_PIECE_CHOICES,
             widget=CheckboxSelectMultiple)
 
-class PostulerOffreEmploiForm(ModelForm):
-    captcha = CaptchaField()
-
     def __init__(self, *args, **kwargs):
-        self.offre_emploi = kwargs.pop('offre_emploi')     
-        super(PostulerOffreEmploiForm, self).__init__(*args, **kwargs)
+        super(CandidatPieceForm, self).__init__(*args, **kwargs)
+    
+    def save(self, *args, **kwargs):
+        super(CandidatPieceForm, self).save(*args, **kwargs)
 
-    def save(self, *args, **kwargs): 
-        kwargs2 = kwargs.copy()
-        kwargs2['commit'] = False
-        postulation = super(PostulerOffreEmploiForm, self).save(*args, **kwargs2)
-        if 'commit' not in kwargs or kwargs['commit']:
-            postulation.save()
-        return postulation
 
-    class Meta:
-        model = recr.Candidat   
-        exclude = ('actif', 'offre_emploi',)
-        fields = ('nom', 'prenom', 'genre', 'nationalite', 'situation_famille', 
+POSTULER_FORM_EXCLUDES = ('actif', 'offre_emploi',) 
+POSTULER_FORM_FIELDS = ('nom', 'prenom', 'genre', 'nationalite', 'situation_famille', 
                     'nombre_dependant', 'niveau_diplome', 'employeur_actuel', 
                     'poste_actuel', 'domaine_professionnel', 'telephone', 
                     'email', 'adresse', 'ville', 'code_postal', 'etat_province',
-                    'pays', 'captcha', )
-
-# TODO: Vérifier si on garde, pour l'envoi automatique d'un email lors de la
-#       postulation de l'offre d'emploi
-################################################################################
-# TEMPLATE COURRIEL
-################################################################################
-class CandidatCourrielTemplateForm(ModelForm):
-    def get_template(self):
-        return self.data['template']
+                    'pays', )
 
+class NoCaptchaPostulerOffreEmploiForm(ModelForm):
     class Meta:
-        model = recr.CandidatCourriel
-        fields = ('template', )
-
-class CandidatCourrielForm(ModelForm):
-    def __init__(self, *args, **kwargs):
-        self.candidats = kwargs.pop('candidats')
-        self.template = kwargs.pop('template')
-        super(CandidatCourrielForm, self).__init__(*args, **kwargs)
+        model = Candidat
+        exclude = POSTULER_FORM_EXCLUDES
+        fields =  POSTULER_FORM_FIELDS
 
-    def save(self):
-        super(CandidatCourrielForm, self).save()
+class PostulerOffreEmploiForm(ModelForm):
+    captcha = CaptchaField()
 
     class Meta:
-        model = recr.CandidatCourriel
-        fields = ('sujet', 'plain_text', 'html')
-
+        model = Candidat   
+        exclude = POSTULER_FORM_EXCLUDES
+        fields =  POSTULER_FORM_FIELDS + ('captcha', )