summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-01-23 15:22:15 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-01-23 15:22:15 +0100
commitce84c790f0bb64ef5a195757fd7a3175767a45ae (patch)
tree76dc1f5690fd59e306717531be253e4d3670e51c
parentba337429e0f062195c23cf12950826ddf8eaf18a (diff)
downloadIshtar-ce84c790f0bb64ef5a195757fd7a3175767a45ae.tar.bz2
Ishtar-ce84c790f0bb64ef5a195757fd7a3175767a45ae.zip
Add a command to clean Ishtar DB.
-rw-r--r--ishtar_common/management/commands/clean_ishtar.py35
-rw-r--r--ishtar_common/tests.py18
2 files changed, 53 insertions, 0 deletions
diff --git a/ishtar_common/management/commands/clean_ishtar.py b/ishtar_common/management/commands/clean_ishtar.py
new file mode 100644
index 000000000..d3da40fd8
--- /dev/null
+++ b/ishtar_common/management/commands/clean_ishtar.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+import sys
+
+from django.core.management.base import BaseCommand
+
+from archaeological_operations.models import Parcel
+
+
+class Command(BaseCommand):
+ args = ''
+ help = 'Clean unused items'
+
+ def handle(self, *args, **options):
+ for parcel in Parcel.objects.all():
+ parcel.skip_history_when_saving = True
+ parcel.save()
+ self.stdout.write('Parcel cleaned.\n')
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index f22e42e38..10584e4f2 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -17,6 +17,7 @@
# See the file COPYING for details.
+from StringIO import StringIO
from bs4 import BeautifulSoup as Soup
from django.conf import settings
@@ -25,6 +26,7 @@ from django.contrib.contenttypes.models import ContentType
from django.core.cache import cache
from django.core.exceptions import ValidationError
from django.core.files.base import File as DjangoFile
+from django.core.management import call_command
from django.core.urlresolvers import reverse
from django.template.defaultfilters import slugify
from django.test import TestCase
@@ -76,6 +78,22 @@ def create_user():
return username, password, user
+class CommandsTestCase(TestCase):
+ def test_clean_ishtar(self):
+ """
+ Clean ishtar db
+ """
+ from archaeological_operations.models import Parcel
+ p = Parcel.objects.create(
+ town=models.Town.objects.create(name='test', numero_insee='25000'))
+ parcel_nb = Parcel.objects.count()
+ out = StringIO()
+ call_command('clean_ishtar', stdout=out)
+ # no operation or file attached - the parcel should have disappear
+ self.assertEqual(parcel_nb - 1, Parcel.objects.count())
+ self.assertEqual(Parcel.objects.filter(pk=p.pk).count(), 0)
+
+
class WizardTestFormData(object):
"""
Test set to simulate wizard steps