Fix the AtomicGroup name display in the admin interface.

Adds an invalid bool column and use the existing invalid model to avoid
problems when deleting from the django admin interface.

Signed-off-by: Gregory Smith <gps@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2918 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/models.py b/frontend/afe/models.py
index 2eb008c..393f4924 100644
--- a/frontend/afe/models.py
+++ b/frontend/afe/models.py
@@ -21,7 +21,7 @@
     """
 
 
-class AtomicGroup(model_logic.ModelExtensions, dbmodels.Model):
+class AtomicGroup(model_logic.ModelWithInvalid, dbmodels.Model):
     """\
     An atomic group defines a collection of hosts which must only be scheduled
     all at once.  Any host with a label having an atomic group will only be
@@ -39,9 +39,16 @@
     name = dbmodels.CharField(maxlength=255, unique=True)
     description = dbmodels.TextField(blank=True)
     max_number_of_machines = dbmodels.IntegerField(default=1)
+    invalid = dbmodels.BooleanField(default=False,
+                                    editable=settings.FULL_ADMIN)
 
-    # Used by model_logic.ModelExtensions.
     name_field = 'name'
+    objects = model_logic.ExtendedManager()
+    valid_objects = model_logic.ValidObjectsManager()
+
+
+    def clean_object(self):
+        self.label_set.clear()
 
 
     class Meta:
@@ -49,6 +56,11 @@
 
     class Admin:
         list_display = ('name', 'description', 'max_number_of_machines')
+        # see Host.Admin
+        manager = model_logic.ValidObjectsManager()
+
+    def __str__(self):
+        return self.name
 
 
 class Label(model_logic.ModelWithInvalid, dbmodels.Model):
diff --git a/frontend/afe/views.py b/frontend/afe/views.py
index 8d7911b..3638770 100644
--- a/frontend/afe/views.py
+++ b/frontend/afe/views.py
@@ -18,7 +18,8 @@
 
 def model_documentation(request):
     doc = '<h2>Models</h2>\n'
-    for model_name in ('Label', 'Host', 'Test', 'User', 'AclGroup', 'Job'):
+    for model_name in ('Label', 'Host', 'Test', 'User', 'AclGroup', 'Job',
+                       'AtomicGroup'):
         model_class = getattr(models, model_name)
         doc += '<h3>%s</h3>\n' % model_name
         doc += '<pre>\n%s</pre>\n' % model_class.__doc__