diff --git a/re2o/mixins.py b/re2o/mixins.py new file mode 100644 index 00000000..07961896 --- /dev/null +++ b/re2o/mixins.py @@ -0,0 +1,42 @@ +# -*- mode: python; coding: utf-8 -*- +# Re2o est un logiciel d'administration développé initiallement au rezometz. Il +# se veut agnostique au réseau considéré, de manière à être installable en +# quelques clics. +# +# Copyright © 2017 Gabriel Détraz +# Copyright © 2017 Goulven Kermarec +# Copyright © 2017 Augustin Lemesle +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +from reversion import revisions as reversion + +class RevMixin(object): + def save(self, *args, **kwargs): + if self.pk is None: + reversion.set_comment("Création") + return super(RevMixin, self).save(*args, **kwargs) + + def delete(self, *args, **kwargs): + reversion.set_comment("Suppresion") + return super(RevMixin, self).delete(*args, **kwargs) + +class FormRevMixin(object): + def save(self, *args, **kwargs): + if reversion.get_comment() != "" and self.changed_data != []: + reversion.set_comment(reversion.get_comment() + ",%s" % ', '.join(field for field in self.changed_data)) + elif self.changed_data != None: + reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in self.changed_data)) + return super(FormRevMixin, self).save(*args, **kwargs) diff --git a/re2o/settings.py b/re2o/settings.py index c342ef93..ca41f126 100644 --- a/re2o/settings.py +++ b/re2o/settings.py @@ -88,6 +88,7 @@ MIDDLEWARE_CLASSES = ( 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', + 'reversion.middleware.RevisionMiddleware', ) ROOT_URLCONF = 're2o.urls'