1561: Pièces jointes dans le formulaire du candidat.
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Fri, 27 May 2011 16:31:18 +0000 (12:31 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Fri, 27 May 2011 17:05:27 +0000 (13:05 -0400)
project/recrutement/admin.py
project/recrutement/models.py
project/settings.py
project/urls.py

index 5d8ebdb..bd9ea53 100644 (file)
@@ -8,6 +8,24 @@ class OffreEmploiAdmin(admin.ModelAdmin):
     list_display = ('nom', 'resume', 'date_limite',)
     list_filter = ('region',)
 
+class CandidatPieceAdmin(admin.ModelAdmin):
+    list_display = ('nom', 'candidat', )
+
+    def queryset(self, request):
+        """
+        Spécifie un queryset limité, autrement Django exécute un 
+        select_related() sans paramètre, ce qui a pour effet de charger tous 
+        les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les 
+        modèles de Region, il existe plusieurs boucles, ce qui conduit à la 
+        génération d'une requête infinie.
+        """
+        qs = self.model._default_manager.get_query_set()
+        return qs.select_related('candidat')
+
+class CandidatPieceInline(admin.TabularInline):
+    model = CandidatPiece
+    extra = 1
+
 class CandidatAdmin(admin.ModelAdmin):
     date_hierarchy = 'date_creation'
     list_display = ('nom', 'prenom', 'offre_emploi','statut',)
@@ -20,28 +38,29 @@ class CandidatAdmin(admin.ModelAdmin):
             'fields': ('adresse', 'ville', 'etat_province', 'pays', )
         }),
         ('Informations professionnelles', {
-            'fields': ('offre_emploi','niveau_diplome','employeur_actuel','poste_actuel',
-                        'domaine_professionnel',)
+            'fields': ('offre_emploi','niveau_diplome','employeur_actuel',
+                        'poste_actuel', 'domaine_professionnel',)
         }),  
         ('Options avancées', {
             'classes': ('collapse',),
             'fields': ('actif', 'statut', )
         }),
     )
+    inlines = [
+        CandidatPieceInline,
+    ]
 
     def queryset(self, request):
         """
-        Spécifie un queryset limité, autrement Django exécute un select_related()
-        sans paramètre, ce qui a pour effet de charger tous les objets FK, sans limite
-        de profondeur. Dès qu'on arrive, dans les modèles de Region, il existe plusieurs
-        boucles, ce qui conduit à la génération d'une requête infinie.
+        Spécifie un queryset limité, autrement Django exécute un 
+        select_related() sans paramètre, ce qui a pour effet de charger tous 
+        les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les 
+        modèles de Region, il existe plusieurs boucles, ce qui conduit à la 
+        génération d'une requête infinie.
         """
         qs = self.model._default_manager.get_query_set()
         return qs.select_related('offre_emploi')
 
-class CandidatPieceAdmin(admin.ModelAdmin):
-    pass
-
 class EvaluateurAdmin(admin.ModelAdmin):
     pass
 
index a8bb5fa..1ced8bd 100755 (executable)
@@ -5,6 +5,8 @@ import datetime
 from django.core.files.storage import FileSystemStorage
 from django.db import models
 import settings
+#from private_files import PrivateFileField
+
 
 import datamaster_modeles.models as ref
 from project.rh import models as rh
index 75a02bc..552f6fc 100644 (file)
@@ -71,6 +71,7 @@ INSTALLED_APPS = (
     'project.dae',
     'project.budget', 
     'project.recrutement', 
+    'private_files', 
 )
 
 TEMPLATE_CONTEXT_PROCESSORS = (
@@ -106,3 +107,6 @@ AJAX_LOOKUP_CHANNELS = {
     'responsables' : ('dae.catalogues', 'Responsable'),
     'dossiers' : ('dae.catalogues', 'Dossier'),
 }
+
+# Django Private Files
+FILE_PROTECTION_METHOD = 'basic'
index 759afd0..e5c050c 100644 (file)
@@ -10,8 +10,10 @@ handler500 # Pyflakes
 urlpatterns = patterns(
     '',
     (r'^$', 'project.views.index'),
+
     url(r'^admin_tools/', include('admin_tools.urls')),
     (r'^admin/', include(admin.site.urls)),
+    #url(r'^private_files/', include('private_files.urls')),
     (r'^connexion/$', 'django.contrib.auth.views.login'),
     (r'^deconnexion/$', 'django.contrib.auth.views.logout'),
     (r'^dae/', include('project.dae.urls')),