From 5d88a0805bc2dfabfbde5d84ffc4f163940e976b Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Wed, 30 Jan 2019 15:52:33 +0000
Subject: [PATCH] Added a tiny management command to list group types per
 feature.  - Legacy-Id: 15918

---
 ietf/group/management/__init__.py             |  0
 ietf/group/management/commands/__init__.py    |  0
 .../commands/show_group_features.py           | 43 +++++++++++++++++++
 3 files changed, 43 insertions(+)
 create mode 100644 ietf/group/management/__init__.py
 create mode 100644 ietf/group/management/commands/__init__.py
 create mode 100644 ietf/group/management/commands/show_group_features.py

diff --git a/ietf/group/management/__init__.py b/ietf/group/management/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/ietf/group/management/commands/__init__.py b/ietf/group/management/commands/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/ietf/group/management/commands/show_group_features.py b/ietf/group/management/commands/show_group_features.py
new file mode 100644
index 000000000..cdbf5e2d4
--- /dev/null
+++ b/ietf/group/management/commands/show_group_features.py
@@ -0,0 +1,43 @@
+# Copyright The IETF Trust 2019, All Rights Reserved
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals, print_function
+
+import collections
+
+from django.core.management.base import BaseCommand
+from django.db.models.fields import BooleanField
+
+import debug                            # pyflakes:ignore
+
+from ietf.group.models import GroupFeatures
+
+class Command(BaseCommand):
+    help = "Show group features"
+
+    def handle(self, *filenames, **options):
+        self.verbosity = options['verbosity']
+        hasfeature = {}
+        hasrole = {}
+        # By property:
+        for field in GroupFeatures.objects.first()._meta.fields:
+            if isinstance(field, BooleanField):
+                hasfeature[field.name] = []
+            else:
+                hasrole[field.name] = collections.defaultdict(list)
+        for f in GroupFeatures.objects.all():
+            for field in f._meta.fields:
+                value = getattr(f, field.name)
+                if value == True:
+                    hasfeature[field.name].append(str(f.type.slug))
+                elif isinstance(value, list):
+                    for role in value:
+                        hasrole[field.name][role].append(str(f.type.slug))
+        for k,v in sorted(hasfeature.items()):
+            print("%-24s: %s" % (k, sorted(v)))
+        print("")
+        for k,roles in sorted(hasrole.items()):
+            if roles and 'roles' in k:
+                print("%s:" % k)
+                for r, v in sorted(roles.items()):
+                    print("%16s%-8s: %s" % ('', r, sorted(v)))
+