# -*- encoding: utf-8 -*-
-import datetime
from django.db import models
from django.contrib import admin
-
+from auf.django.metadata.admin import AUFMetadataAdminMixin, AUFMetadataInlineAdminMixin, AUF_METADATA_READONLY_FIELDS
from project.rh import models as rh
-# MetaData
-METADATA_READONLY_FIELDS = ('supprime',
- 'date_creation',
- 'user_creation',
- 'date_modification',
- 'user_modification',
- 'date_activation',
- 'user_activation',
- 'date_desactivation',
- 'user_desactivation', )
-
-METADATA_FIELDSET_FIELDS = ('actif', 'date_creation', 'user_creation',
- 'date_modification', 'user_modification',
- 'date_activation', 'user_activation',
- 'date_desactivation', 'user_desactivation',)
-
-class MetadataAdminMixin(object):
- """
- Surcharge l'admin de base, pour setter automatiquement les metadata
- """
- def save_model(self, request, obj, form, change):
- if change is False:
- obj.user_creation = request.user
- obj.date_creation = datetime.datetime.now()
- obj.user_modification = request.user
- obj.date_modification = datetime.datetime.now()
- if form.initial['actif'] is True and obj.actif is False:
- obj.user_desactivation = request.user
- obj.date_desactivation = datetime.datetime.now()
- if form.initial['actif'] is False and obj.actif is True:
- obj.user_activation = request.user
- obj.date_activation = datetime.datetime.now()
- obj.save()
-
-class ReadonlyInlineMixin(object):
- def get_readonly_fields(self, request, obj=None):
- return [f.name for f in self.model._meta.fields if f.name not in METADATA_READONLY_FIELDS]
+# Inlines
+class ReadOnlyInlineMixin(object):
+ def get_readonly_fields(self, request, obj=None):
+ return [f.name for f in self.model._meta.fields if f.name not in AUF_METADATA_READONLY_FIELDS]
-# Inlines
-class AyantDroitInline(admin.TabularInline):
- exclude = METADATA_READONLY_FIELDS + ('actif', )
+class AyantDroitInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
model = models.Model # à remplacer dans admin.py
extra = 1
-class AyantDroitCommentaireInline(admin.TabularInline):
- exclude = METADATA_READONLY_FIELDS + ('actif', )
+
+class AyantDroitCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
readonly_fields = ('owner', )
model = models.Model # à remplacer dans admin.py
extra = 1
-class ContratInline(admin.TabularInline):
+class ContratInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
model = models.Model # à remplacer dans admin.py
- exclude = METADATA_READONLY_FIELDS + ('actif', )
extra = 1
-class DossierROInline(ReadonlyInlineMixin, admin.TabularInline):
+class DossierROInline(ReadOnlyInlineMixin, admin.TabularInline):
+ exclude = AUF_METADATA_READONLY_FIELDS
model = models.Model # à remplacer dans admin.py
- exclude = METADATA_READONLY_FIELDS
-class DossierCommentaireInline(admin.TabularInline, MetadataAdminMixin):
- exclude = METADATA_READONLY_FIELDS + ('actif', )
+
+class DossierCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
readonly_fields = ('owner', )
model = models.Model # à remplacer dans admin.py
extra = 1
+
class DossierPieceInline(admin.TabularInline):
model = models.Model # à remplacer dans admin.py
class EmployeInline(admin.TabularInline):
model = models.Model # à remplacer dans admin.py
-
-class EmployeCommentaireInline(admin.TabularInline):
- exclude = METADATA_READONLY_FIELDS + ('actif', )
+class EmployeCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
readonly_fields = ('owner', )
model = models.Model # à remplacer dans admin.py
extra = 1
model = models.Model # à remplacer dans admin.py
-class EvenementInline(admin.TabularInline, MetadataAdminMixin):
+class EvenementInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
model = models.Model # à remplacer dans admin.py
- exclude = METADATA_READONLY_FIELDS + ('actif', )
extra = 1
-class EvenementRemunerationInline(admin.TabularInline, MetadataAdminMixin):
+class EvenementRemunerationInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
model = models.Model # à remplacer dans admin.py
- exclude = METADATA_READONLY_FIELDS + ('actif', )
extra = 1
model = models.Model # à remplacer dans admin.py
-class PosteCommentaireInline(admin.TabularInline):
- exclude = METADATA_READONLY_FIELDS + ('actif', )
+class PosteCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
readonly_fields = ('owner', )
model = models.Model # à remplacer dans admin.py
extra = 1
model = models.Model # à remplacer dans admin.py
-class RemunerationInline(admin.TabularInline):
+class RemunerationInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
model = models.Model # à remplacer dans admin.py
- exclude = METADATA_READONLY_FIELDS + ('actif', )
extra = 1
-class RemunerationROInline(ReadonlyInlineMixin, RemunerationInline):
+class RemunerationROInline(ReadOnlyInlineMixin, RemunerationInline):
pass
# Admins
-class AyantDroitAdmin(admin.ModelAdmin):
+class AyantDroitAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
"""
L'ajout d'un nouvel ayantdroit se fait dans l'admin de l'employé.
"""
search_fields = ('nom', 'prenom', 'employe__nom', 'employe__prenom', )
list_display = ('_ayantdroit', '_employe', )
inlines = (AyantDroitCommentaireInline,)
- readonly_fields = METADATA_READONLY_FIELDS + ('employe',)
- fieldsets = (
- ('Metadata', {
- 'classes': ('collapse',),
- 'fields': METADATA_FIELDSET_FIELDS,
- }),
+ readonly_fields = AUFMetadataAdminMixin.readonly_fields + ('employe',)
+ fieldsets = AUFMetadataAdminMixin.fieldsets + (
("Lien avec l'employé", {
'fields': ('employe', 'lien_parente', )
}),
)
def save_formset(self, request, form, formset, change):
+ super(AyantDroitAdmin, self).save_formset(request, form, formset, change)
instances = formset.save(commit=False)
for instance in instances:
if instance.__class__ == rh.AyantDroitCommentaire:
pass
-class DossierAdmin(MetadataAdminMixin, admin.ModelAdmin,):
+class DossierAdmin(AUFMetadataAdminMixin, admin.ModelAdmin,):
search_fields = ('employe__nom', 'employe__prenom', )
list_display = ('_employe', '_poste', 'date_debut', 'date_fin', )
inlines = (DossierPieceInline, ContratInline,
#EvenementInline,
DossierCommentaireInline,
)
- readonly_fields = METADATA_READONLY_FIELDS
- fieldsets = (
- ('Metadata', {
- 'classes': ('collapse',),
- 'fields': METADATA_FIELDSET_FIELDS,
- }),
+ fieldsets = AUFMetadataAdminMixin.fieldsets + (
('Identification', {
'fields': ('employe', 'poste', 'statut', 'organisme_bstg',)
}),
_employe.short_description = u'Employé'
def save_formset(self, request, form, formset, change):
+ super(DossierAdmin, self).save_formset(request, form, formset, change)
instances = formset.save(commit=False)
for instance in instances:
if instance.__class__ == rh.DossierCommentaire:
pass
-class EmployeAdmin(MetadataAdminMixin, admin.ModelAdmin):
+class EmployeAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+ search_fields = ('id', 'nom', 'prenom', 'nom_affichage', )
inlines = (AyantDroitInline,
DossierROInline,
EmployePieceInline,
EmployeCommentaireInline)
- readonly_fields = METADATA_READONLY_FIELDS
- fieldsets = (
- ('Metadata', {
- 'classes': ('collapse',),
- 'fields': METADATA_FIELDSET_FIELDS,
- }),
+ fieldsets = AUFMetadataAdminMixin.fieldsets + (
('Identification', {
'fields': ('nom', 'prenom', 'nom_affichage', 'nationalite', 'date_naissance', 'genre', )
}),
)
def save_formset(self, request, form, formset, change):
+ super(EmployeAdmin, self).save_formset(request, form, formset, change)
instances = formset.save(commit=False)
for instance in instances:
if instance.__class__ == rh.EmployeCommentaire: