# Admin pour reversion
-class ArchiveMixin(object):
+class ArchivableAdmin(admin.ModelAdmin):
"""
- Archive Mixin pour gérer le queryset et le display
- NON COMPRIS : list_filter, et list_display, field à setter dans la classe.
+ Admin pour les modèles archivables
"""
+ list_filter = ('archive', )
def queryset(self, request):
- return self.model._base_manager
+ return self.model.avec_archives.all()
def _archive(self, obj):
if obj.archive:
_classement.short_description = u"Classement"
-class DeviseAdmin(reversion.VersionAdmin, ArchiveMixin,
+class DeviseAdmin(reversion.VersionAdmin, ArchivableAdmin,
DerniereModificationAdmin, BaseAdmin):
ignore_duplicate_revisions = True
list_display = (
return False
-class ServiceAdminBase(ArchiveMixin, DerniereModificationAdmin, BaseAdmin):
+class ServiceAdminBase(ArchivableAdmin, DerniereModificationAdmin, BaseAdmin):
list_display = ('nom', '_archive', 'derniere_modification')
list_filter = ('archive', )
fieldsets = (
)
-class TypeRemunerationAdmin(reversion.VersionAdmin, ArchiveMixin,
+class TypeRemunerationAdmin(reversion.VersionAdmin, ArchivableAdmin,
DerniereModificationAdmin, BaseAdmin):
ignore_duplicate_revisions = True
list_display = (
RechercheTemporelle, KEY_STATUT, STATUT_ACTIF, STATUT_INACTIF, \
STATUT_FUTUR
from project.rh.managers import \
- PosteManager, DossierManager, EmployeManager, \
- DossierComparaisonManager, \
- PosteComparaisonManager, DeviseManager, ServiceManager, \
- TypeRemunerationManager
+ PosteManager, DossierManager, DossierComparaisonManager, \
+ PosteComparaisonManager, TypeRemunerationManager, EmployeManager
from project.rh.validators import validate_date_passee
return path
+class ArchivableManager(models.Manager):
+
+ def get_query_set(self):
+ return super(ArchivableManager, self).get_query_set() \
+ .filter(archive=False)
+
+
+class Archivable(models.Model):
+ archive = models.BooleanField(u'archivé', default=False)
+
+ objects = ArchivableManager()
+ avec_archives = models.Manager()
+
+ class Meta:
+ abstract = True
+
+
class DevisableMixin(object):
def get_annee_pour_taux_devise(self):
)
-class TypeRemuneration(models.Model):
+class TypeRemuneration(Archivable):
"""
Catégorie de Remuneration.
"""
u"nature de la rémunération", max_length=30,
choices=NATURE_REMUNERATION_CHOICES
)
- archive = models.BooleanField(verbose_name=u"Archivé", default=False)
class Meta:
ordering = ['nom']
verbose_name_plural = u"Types de rémunération"
def __unicode__(self):
- if self.archive:
- archive = u"(archivé)"
- else:
- archive = ""
- return u'%s %s' % (self.nom, archive)
+ return self.nom
reversion.register(TypeRemuneration, format='xml')
reversion.register(TypeRevalorisation, format='xml')
-class Service(models.Model):
+class Service(Archivable):
"""
Unité administrative où les Postes sont rattachés.
"""
- objects = ServiceManager()
-
- archive = models.BooleanField(verbose_name=u"Archivé", default=False)
nom = models.CharField(max_length=255)
class Meta:
ordering = ['nom']
- verbose_name = u"Service"
- verbose_name_plural = u"Services"
+ verbose_name = u"service"
+ verbose_name_plural = u"services"
def __unicode__(self):
- if self.archive:
- archive = u"(archivé)"
- else:
- archive = ""
- return u'%s %s' % (self.nom, archive)
+ return self.nom
reversion.register(Service, format='xml')
reversion.register(ValeurPoint, format='xml')
-class Devise(models.Model):
+class Devise(Archivable):
"""
Devise monétaire.
"""
- objects = DeviseManager()
-
- archive = models.BooleanField(verbose_name=u"Archivé", default=False)
code = models.CharField(max_length=10, unique=True)
nom = models.CharField(max_length=255)
class Meta:
ordering = ['code']
- verbose_name = u"Devise"
- verbose_name_plural = u"Devises"
+ verbose_name = u"devise"
+ verbose_name_plural = u"devises"
def __unicode__(self):
return u'%s - %s' % (self.code, self.nom)