from django.shortcuts import redirect
from reversion.admin import VersionAdmin
from auf.django.workflow.models import WorkflowCommentaire
-from models import Poste, Dossier, DossierFinalise
+from models import Poste, Dossier, DossierFinalise, PosteFinalise
class PosteAdmin(VersionAdmin):
list_display = ('nom', 'implantation', 'etat', )
form.user = request.user
return form
-
-class ImportDossierAdmin(admin.ModelAdmin):
- list_display = ('_poste', '_employe', '_dae', )
- actions = ['importer_dans_RH', ]
-
- def _employe(self, obj):
- return obj.employe
-
- def _poste(self, obj):
- return obj.poste.nom
-
- def _implantation(self, obj):
- return obj.poste.implantation
-
- def _dae(self, obj):
- url = reverse('embauche_consulter', args=(obj.id, ))
- return "<a href='%s'>voir la DAE</a>" % url
- _dae.allow_tags = True
+class ImportAdmin(admin.ModelAdmin,):
def has_delete_permission(self, request, obj=None):
return False
return False
def get_actions(self, request):
- actions = super(ImportDossierAdmin, self).get_actions(request)
+ actions = super(ImportAdmin, self).get_actions(request)
del actions['delete_selected']
return actions
+
+class ImportDossierAdmin(ImportAdmin):
+ list_display = ('_poste', '_employe', '_dae', )
+ actions = ['importer_dans_RH', ]
+
+ def _employe(self, obj):
+ return obj.employe
+
+ def _poste(self, obj):
+ rh = obj.poste.rh_importation()
+ if rh is not None:
+ extra = u"<a href='%s' style='color: red;'> (déjà importé)</a>" % \
+ reverse('admin:rh_poste_change', args=(rh.id,))
+ else:
+ extra = u""
+
+ return u"%s%s" % (obj.poste.nom, extra)
+ _poste.allow_tags = True
+
+ def _implantation(self, obj):
+ return obj.poste.implantation
+
+ def _dae(self, obj):
+ url = reverse('embauche_consulter', args=(obj.id, ))
+ return "<a href='%s'>voir la DAE</a>" % url
+ _dae.allow_tags = True
+
def importer_dans_RH(self, request, data):
selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
dae = [d for d in Dossier.objects.filter(id__in=selected)]
url = reverse('admin:rh_dossier_change', args=(copie.id, ))
return redirect(url)
+
+class ImportPosteAdmin(ImportAdmin):
+ list_display = ('nom', '_implantation', '_dae', )
+ actions = ['importer_dans_RH', ]
+
+ def _implantation(self, obj):
+ return obj.implantation
+
+ def _dae(self, obj):
+ url = reverse('poste_consulter', args=(obj.id, ))
+ return "<a href='%s'>voir le poste dans DAE</a>" % url
+ _dae.allow_tags = True
+
+ def importer_dans_RH(self, request, data):
+ 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, ))
+ return redirect(url)
+
admin.site.register(Poste, PosteAdmin)
admin.site.register(Dossier, DossierAdmin)
admin.site.register(ProxyDossierStatut, DossierStatutAdmin)
admin.site.register(DossierFinalise, ImportDossierAdmin)
+admin.site.register(PosteFinalise, ImportPosteAdmin)
return
if dae.ImportPoste.objects.filter(dae=value).exists():
- poste = dae.ImportPoste.get(dae=value).rh
+ poste = dae.ImportPoste.objects.get(dae=value).rh
else:
copier = PosteCopier(verbosity=self.verbosity,
dry_run=self.dry_run)
- poste = copier.duplicate(value)
+ poste = copier.copy(value)
copy.poste_id = poste.id
def clean_fichier(self, source, copy, parent, field, value):
from django.db import models
from django.db.models import Q
from utils import get_employe_from_user
-from workflow import MAP_GROUPE_ETATS_A_FAIRE, DOSSIER_ETAT_FINALISE
+from workflow import MAP_GROUPE_ETATS_A_FAIRE, DOSSIER_ETAT_FINALISE, \
+ POSTE_ETAT_FINALISE
from workflow import grp_drh, \
grp_drh2, \
grp_accior, \
def get_query_set(self):
from dae.models import ImportDossier
dae_importees = [str(i.dae_id) for i in ImportDossier.objects.all()]
- qs = super(DossierFinaliseManager,
- self).get_query_set().filter(etat=DOSSIER_ETAT_FINALISE,).extra(where=['id\
- NOT IN (%s)' % ", ".join(dae_importees)])
+ qs = super(DossierFinaliseManager, self).get_query_set().filter(etat=DOSSIER_ETAT_FINALISE,)
+ if len(dae_importees) > 0:
+ qs = qs.extra(where=['id NOT IN (%s)' % ", ".join(dae_importees)])
+ return qs
+
+
+class PosteFinaliseManager(models.Manager):
+ """
+ Dossiers finalisés, qui ne sont pas encore importés
+ """
+ def get_query_set(self):
+ from dae.models import ImportPoste
+ dae_importees = [str(i.dae_id) for i in ImportPoste.objects.all()]
+
+ qs = super(PosteFinaliseManager, self).get_query_set().filter(etat=POSTE_ETAT_FINALISE,)
+ if len(dae_importees) > 0:
+ qs = qs.extra(where=['id NOT IN (%s)' % ", ".join(dae_importees)])
return qs
return []
return self.id_rh.rh_dossiers.all()
+ def rh_importation(self):
+ if ImportPoste.objects.filter(dae=self).exists():
+ return ImportPoste.objects.get(dae=self).rh
+ else:
+ return None
+
+ def importer(self, verbosity=0, dry_run=False):
+ copieur = PosteCopier(verbosity=verbosity, dry_run=dry_run)
+ return copieur.copy(self)
def get_employe(self):
"""
verbose_name = "Import d'un dossier finalisé"
verbose_name_plural = "Import des dossiers finalisés"
+class PosteFinalise(Poste):
+
+ objects = PosteFinaliseManager()
+
+ class Meta:
+ proxy = True
+ verbose_name = "Import d'un poste finalisé"
+ verbose_name_plural = "Import des postes finalisés"
+
# modèle de liaison entre les systèmes
class ImportDossier(models.Model):
AUF_METADATA_READONLY_FIELDS
from forms import ContratForm, AyantDroitForm, EmployeAdminForm, AjaxSelect, \
DossierForm
+from dae import models as dae
from dae.utils import get_employe_from_user
from change_list import ChangeList
from groups import grp_correspondants_rh
'_date_fin',
'_date_modification',
'user_modification',
+ '_dae',
)
list_display_links = ('_nom',)
list_filter = (
_apercu.allow_tags = True
_apercu.short_description = u""
+ def _dae(self, d):
+ apercu_link = ""
+ if dae.ImportDossier.objects.filter(rh=d).exists():
+ dae_id = dae.ImportDossier.objects.get(rh=d).dae_id
+ apercu_link = u"""<a title="Aperçu du dossier"
+ onclick="return showAddAnotherPopup(this);"
+ href='%s'>
+ <img src="%simg/loupe.png" />
+ </a>""" % \
+ (reverse('embauche_consulter', args=(dae_id,)),
+ settings.STATIC_URL,
+ )
+ return apercu_link
+ _dae.allow_tags = True
+ _dae.short_description = u"DAE"
+
def _date_debut(self, obj):
return date(obj.date_debut)
'date_fin',
'_date_modification',
'user_modification',
+ '_dae',
)
list_filter = (
'implantation__region',
_apercu.allow_tags = True
_apercu.short_description = ''
+ def _dae(self, poste):
+ apercu_link = ""
+ if dae.ImportPoste.objects.filter(rh=poste).exists():
+ dae_id = dae.ImportPoste.objects.get(rh=poste).dae_id
+ apercu_link = u"""<a title="Aperçu du dossier"
+ onclick="return showAddAnotherPopup(this);"
+ href='%s'>
+ <img src="%simg/loupe.png" />
+ </a>""" % \
+ (reverse('poste_consulter', args=("dae-%s" % dae_id,)),
+ settings.STATIC_URL,
+ )
+ return apercu_link
+ _dae.allow_tags = True
+ _dae.short_description = u"DAE"
+
def _id(self, obj):
return "%s" % obj.id
_id.short_description = '#'