return ChangeList
class ChangeList(DjangoChangeList):
+ PERIODE_CHOICE = ('', 'actuelle', 'passee', 'future')
def __init__(self, *args, **kwargs):
+ self.annees = {'actuelle': 'actuelle', 'passee': 'passee', 'future': 'future'}
super(ChangeList, self).__init__(*args, **kwargs)
def get_query_set(self):
old = self.params.copy()
+ periode = None
+ annee = None
date_debut = None
date_fin = None
+ today = datetime.date.today()
for k, v in self.params.items():
- if 'date_debut' in k:
- prefix_debut = "".join(k.split('date_debut')[0:-1]) + 'date_debut'
- date_debut = v
+ if 'periode' == k:
+ periode = self.params[k]
del self.params[k]
- elif 'date_fin' in k:
- prefix_fin = "".join(k.split('date_fin')[0:-1]) + 'date_fin'
- date_fin = v
+ if 'annee' == k:
+ annee = self.params[k]
+ del self.params[k]
+ if 'date_debut' == k:
+ date_debut = self.params[k]
+ del self.params[k]
+ if 'date_fin' == k:
+ date_fin = self.params[k]
del self.params[k]
- qs = super(ChangeList, self).get_query_set()
-
- # hack pour spécifier un range
- if date_fin is None and date_debut is not None:
- date_fin = '2020-01-01'
- prefix_fin = prefix_debut.replace('debut', 'fin')
- if date_debut is None and date_fin is not None:
- date_debut = '1000-01-01'
- prefix_debut = prefix_fin.replace('fin', 'debut')
- if date_debut is not None and date_fin is not None:
+ qs = super(ChangeList, self).get_query_set()
+ if periode == 'actuelle':
+ qs = qs.filter(date_fin__exact=today, date_debut__exact=today).distinct()
+ elif periode == 'passee':
+ qs = qs.filter(date_fin__lt=today)
+ elif periode == 'future':
+ qs = qs.filter(date_debut__gt=today)
+ elif annee:
+ date_debut = datetime.date(int(annee), 01, 01)
+ date_fin = datetime.date(int(annee), 12, 31)
+
+ if date_debut and date_fin:
+ prefix_debut = 'date_debut'
+ prefix_fin = 'date_fin'
q_left = (Q(**{'%s__isnull' % prefix_debut : True}) | Q(**{'%s__lte' % prefix_debut : date_debut})) & (Q(**{'%s__gte' % prefix_fin : date_debut}) & Q(**{'%s__lte' % prefix_fin : date_fin}))
q_right = (Q(**{'%s__isnull' % prefix_fin : True}) | Q(**{'%s__gte' % prefix_fin : date_fin})) & (Q(**{'%s__gte' % prefix_debut : date_debut}) & Q(**{'%s__lte' % prefix_debut : date_fin}))
q_both = Q(**{'%s__isnull' % prefix_fin : True}) | Q(**{'%s__lte' % prefix_fin : date_fin}) & (Q(**{'%s__isnull' % prefix_debut : True}) | Q(**{'%s__gte' % prefix_debut : date_debut}))
class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
- list_display = ('code', 'nom', '_date_modification', 'user_modification', '_archive',)
+ list_display = ('code', 'nom', '_date_modification', 'user_modification',)
list_filter = ('archive', )
fieldsets = AUFMetadataAdminMixin.fieldsets + (
(None, {
}),
)
- def queryset(self, request):
- return rh.Devise._base_manager
-
- def _archive(self, obj):
- if obj.archive:
- icon = 'no'
- else:
- icon = 'yes'
- html = """<img alt="%s" src="%sadmin/img/admin/icon-%s.gif">""" % (obj.archive, settings.STATIC_URL, icon)
- return html
- _archive.short_description = u'Archivé'
- _archive.admin_order_field = 'archive'
- _archive.allow_tags = True
-
-
def _date_modification(self, obj):
return date(obj.date_modification) if obj.date_modification is not None else "(aucune)"
_date_modification.short_description = u'date modification'
'_occupe_par',
'implantation',
'_service',
+ '_responsable',
'date_debut',
'date_fin',
'_date_modification',
'service__id__exact',
'service__isnull',
'vacant__exact',
- 'vacant__isnull',
):
return True
return obj.service
_service.short_description = 'Service'
+ def _responsable(self, obj):
+ try:
+ responsable = u"""<a href="%s" onclick="return showAddAnotherPopup(this)"><img src="%simg/loupe.png" title="Aperçu du poste"></a> <a href="%s">%s</a><br />""" % \
+ (
+ reverse('poste_apercu', args=(obj.responsable.id,)),
+ settings.STATIC_URL,
+ reverse('admin:rh_poste_change', args=(obj.responsable.id,)),
+ obj.responsable.nom
+ )
+ except:
+ responsable = ''
+
+ try:
+ employe = "%s %s" % (obj.responsable.rh_dossiers.all()[0].employe.nom.upper(), obj.responsable.rh_dossiers.all()[0].employe.prenom)
+ employe_id = obj.responsable.rh_dossiers.all()[0].id
+ employe = u"""<br /><a href="%s" onclick="return showAddAnotherPopup(this)"><img src="%simg/loupe.png" title="Aperçu de l'employé"></a> <a href="%s">%s</a>""" % \
+ (
+ reverse('employe_apercu', args=(employe_id,)),
+ settings.STATIC_URL,
+ reverse('admin:rh_employe_change', args=(employe_id,)),
+ employe
+ )
+ except:
+ employe = ""
+
+ return "%s %s" % (responsable, employe)
+ _responsable.short_description = 'Responsable'
+ _responsable.allow_tags = True
+
def _nom(self, poste):
return """<a href="%s">%s</a>""" % \
(reverse('admin:rh_poste_change', args=(poste.id,)),