From 7c5f81f034c7c1985752f05d8c84dfec475538de Mon Sep 17 00:00:00 2001 From: Charlie Jacomme Date: Mon, 30 Oct 2017 20:01:16 +0100 Subject: [PATCH] =?UTF-8?q?Utilisation=20de=20mixins=20et=20de=20middlewar?= =?UTF-8?q?e=20pour=20les=20r=C3=A9visions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- re2o/mixins.py | 42 ++++++++++++++++++++++++++++++++++++++++++ re2o/settings.py | 1 + 2 files changed, 43 insertions(+) create mode 100644 re2o/mixins.py 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'