from datetime import date
from django.db import models
-from django.db.models import Q, Max
+from django.db.models import Q
from django.db.models.query import QuerySet
from project import groups
if date_min:
qs = qs.filter(
Q(**{fin_field + '__gte': date_min}) |
- Q(**{fin_field: None})
- )
+ Q(**{fin_field: None}))
if date_max:
qs = qs.filter(
Q(**{debut_field + '__lte': date_max}) |
- Q(**{debut_field: None})
- )
+ Q(**{debut_field: None}))
return qs
def actifs(self, *args, **kwargs):
def sans_contrats_ou_echus(self, *args, **kwargs):
app = self.model._meta.app_label
sql = """
- SELECT D.id FROM rh_dossier AS D
- LEFT JOIN rh_contrat AS C ON D.id = C.dossier AND C.date_debut =
- (SELECT MAX(date_debut) FROM rh_contrat WHERE dossier=D.id)
- WHERE (D.date_fin > '%(today)s' OR D.date_fin IS NULL) AND (C.id IS NULL OR C.date_fin < '%(today)s')
- """ % {'today': date.today()}
+ SELECT D.id FROM %(app)s_dossier AS D
+ LEFT JOIN %(app)s_contrat AS C ON D.id = C.dossier AND C.date_debut =
+ (SELECT MAX(date_debut) FROM %(app)s_contrat WHERE dossier=D.id)
+ WHERE (D.date_fin > '%(today)s' OR D.date_fin IS NULL)
+ AND (C.id IS NULL OR C.date_fin < '%(today)s')
+ """ % {'today': date.today(), 'app': app}
ids = [d.id for d in self.raw(sql)]
return self.get_query_set().filter(id__in=ids).filter(*args, **kwargs)
+
class RemunerationQuerySet(ActifsQuerySet):
def actifs(self, *args, **kwargs):
return self \
._actifs('date_debut', 'date_fin', *args, **kwargs) \
._actifs(
- 'dossier__date_debut', 'dossier__date_fin', *args, **kwargs
- )
+ 'dossier__date_debut', 'dossier__date_fin',
+ *args, **kwargs)
class RemunerationManager(models.Manager):