diff options
-rw-r--r-- | chimere/admin.py | 14 | ||||
-rw-r--r-- | chimere/tests.py | 29 |
2 files changed, 39 insertions, 4 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index b34deaa..ad24706 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -47,6 +47,12 @@ from chimere.models import Category, Icon, SubCategory, Marker, \ from chimere.utils import unicode_normalize, ShapefileManager, KMLManager,\ CSVManager +def disable(modeladmin, request, queryset): + for item in queryset: + item.status = 'D' + item.save() +disable.short_description = _(u"Disable") + def validate(modeladmin, request, queryset): for item in queryset: item.status = 'A' @@ -152,8 +158,8 @@ class MarkerAdmin(admin.ModelAdmin): search_fields = ("name",) list_display = ('name', 'status') list_filter = ('status', 'categories') - actions = [validate, managed_modified, export_to_kml, export_to_shapefile, - export_to_csv] + actions = [validate, disable, managed_modified, export_to_kml, + export_to_shapefile, export_to_csv] exclude = ['submiter_session_key', 'import_key', 'import_version', 'available_date', 'ref_item'] readonly_fields = ['submiter_email', 'submiter_comment', 'import_source', @@ -184,8 +190,8 @@ class RouteAdmin(admin.ModelAdmin): exclude = ['height', 'width'] form = RouteAdminForm readonly_fields = ('associated_file',) - actions = [validate, managed_modified, export_to_kml, export_to_shapefile, - export_to_csv] + actions = [validate, disable, managed_modified, export_to_kml, + export_to_shapefile, export_to_csv] def queryset(self, request): qs = self.model._default_manager.get_query_set() diff --git a/chimere/tests.py b/chimere/tests.py index f8b41b1..61a4dd6 100644 --- a/chimere/tests.py +++ b/chimere/tests.py @@ -221,6 +221,35 @@ class FeedsTest(TestCase): doc = lxml.etree.fromstring(response.content) self.assertEqual(int(doc.xpath('count(//item)')), 2) +class AdminTest(TestCase): + def setUp(self): + self.areas = areas_setup() + self.markers = marker_setup() + self.adminuser = User.objects.create_superuser('admin', + 'admin@test.com', + 'pass') + self.client.login(username='admin', password='pass') + + def test_actions(self): + q_markers = Marker.objects.filter(pk__in=[m.pk for m in self.markers]) + # disable + response = self.client.post('/admin/chimere/marker/', + data={'action':['disable'], + '_selected_action':[unicode(m.pk) + for m in self.markers], + }) + self.assertEqual(q_markers.count(), + q_markers.filter(status='D').count()) + # validate + response = self.client.post('/admin/chimere/marker/', + data={'action':['validate'], + '_selected_action':[unicode(m.pk) + for m in self.markers] + }) + self.assertEqual(q_markers.count(), + q_markers.filter(status='A').count()) + + class MarkerFormTest(TestCase): def setUp(self): self.subcategories = subcategory_setup() |