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))) +