From 7cdebc1897ef208407d6e975596147ee30b3d207 Mon Sep 17 00:00:00 2001
From: Jan Mach <jan.mach@cesnet.cz>
Date: Wed, 13 Oct 2021 18:55:32 +0200
Subject: [PATCH] Removed group.managed attribute from everywhere...

...except translations for easier merge.

(Redmine issue: #7106)
---
 lib/hawat/blueprints/groups/forms.py          | 13 ----------
 .../groups/templates/groups/creatupdate.html  |  3 ---
 .../groups/templates/groups/list.html         |  6 -----
 .../groups/templates/groups/show.html         |  8 ------
 lib/hawat/blueprints/groups/test/__init__.py  |  3 +--
 .../c2b4c2af6196_removed_groups_managed.py    | 24 ++++++++++++++++++
 .../translations/cs/LC_MESSAGES/messages.po   | 25 -------------------
 lib/mentat/datatype/sqldb.py                  |  2 --
 lib/vial/blueprints/groups/__init__.py        |  4 ---
 lib/vial/blueprints/groups/forms.py           | 17 +------------
 .../groups/templates/groups/creatupdate.html  |  3 ---
 .../groups/templates/groups/show.html         |  8 ------
 lib/vial/blueprints/groups/test/__init__.py   |  3 +--
 lib/vial/view/__init__.py                     | 11 ++------
 14 files changed, 29 insertions(+), 101 deletions(-)
 create mode 100644 lib/hawat/migrations/versions/c2b4c2af6196_removed_groups_managed.py

diff --git a/lib/hawat/blueprints/groups/forms.py b/lib/hawat/blueprints/groups/forms.py
index 901fd30c..865a31da 100644
--- a/lib/hawat/blueprints/groups/forms.py
+++ b/lib/hawat/blueprints/groups/forms.py
@@ -110,19 +110,6 @@ class BaseGroupForm(vial.forms.BaseItemForm):
         ],
         description = lazy_gettext('Origin of the group record, whether it was added manually, or via some automated mechanism from data from some third party system.')
     )
-    managed = wtforms.RadioField(
-        lazy_gettext('Self management:'),
-        validators = [
-            wtforms.validators.InputRequired(),
-        ],
-        choices = [
-            (True,  lazy_gettext('Enabled')),
-            (False, lazy_gettext('Disabled'))
-        ],
-        filters = [vial.forms.str_to_bool],
-        coerce = vial.forms.str_to_bool,
-        description = lazy_gettext('Boolean flag whether the group is self managed by group managers. When enabled group managers are expected to take care of the group management tasks and they get notifications about important events like group membership requests, etc.')
-    )
     members = QuerySelectMultipleField(
         lazy_gettext('Members:'),
         query_factory = get_available_users,
diff --git a/lib/hawat/blueprints/groups/templates/groups/creatupdate.html b/lib/hawat/blueprints/groups/templates/groups/creatupdate.html
index 3acbcfd2..a08a12bd 100644
--- a/lib/hawat/blueprints/groups/templates/groups/creatupdate.html
+++ b/lib/hawat/blueprints/groups/templates/groups/creatupdate.html
@@ -19,9 +19,6 @@
     {%- if form | attr('enabled') %}
                                 {{ macros_form.render_form_item_radiobutton(form.enabled) }}
     {%- endif %}
-    {%- if form | attr('managed') %}
-                                {{ macros_form.render_form_item_radiobutton(form.managed) }}
-    {%- endif %}
     {%- if form | attr('members') %}
                                 {{ macros_form.render_form_item_select(form.members) }}
     {%- endif %}
diff --git a/lib/hawat/blueprints/groups/templates/groups/list.html b/lib/hawat/blueprints/groups/templates/groups/list.html
index ad108032..c23eaecc 100644
--- a/lib/hawat/blueprints/groups/templates/groups/list.html
+++ b/lib/hawat/blueprints/groups/templates/groups/list.html
@@ -47,9 +47,6 @@
                                 <th>
                                     {{ _('State') }}
                                 </th>
-                                <th>
-                                    {{ _('Managed') }}
-                                </th>
                                 <th data-toggle="tooltip" title="{{ _('Contextual item actions') }}">
                                     {{ get_icon('actions') }} {{ _('Actions') }}
                                 </th>
@@ -70,9 +67,6 @@
                                 <td>
                                     {{ macros_site.render_label_item_state(item.enabled, True) }}
                                 </td>
-                                <td>
-                                    {{ macros_site.render_label_item_state(item.managed, True) }}
-                                </td>
                                 <td class="column-actions">
                                     {{ macros_page.render_menu_context_actions(item) }}
                                 </td>
diff --git a/lib/hawat/blueprints/groups/templates/groups/show.html b/lib/hawat/blueprints/groups/templates/groups/show.html
index ac208748..84ba2992 100644
--- a/lib/hawat/blueprints/groups/templates/groups/show.html
+++ b/lib/hawat/blueprints/groups/templates/groups/show.html
@@ -86,14 +86,6 @@
                                                     {{ macros_site.render_label_item_state(item.enabled, True) }}
                                                 </td>
                                             </tr>
-                                            <tr>
-                                                <th>
-                                                    {{ _('Self management') }}:
-                                                </th>
-                                                <td>
-                                                    {{ macros_site.render_label_item_state(item.managed, True) }}
-                                                </td>
-                                            </tr>
                                             <tr>
                                                 <th>
                                                     {{ _('Reporting settings') }}:
diff --git a/lib/hawat/blueprints/groups/test/__init__.py b/lib/hawat/blueprints/groups/test/__init__.py
index c13b8159..a0a50708 100644
--- a/lib/hawat/blueprints/groups/test/__init__.py
+++ b/lib/hawat/blueprints/groups/test/__init__.py
@@ -143,8 +143,7 @@ class GroupsCreateTestCase(TestRunnerMixin, ItemCreateVialTestCase):
     group_data_fixture = [
         ('name', 'TEST_GROUP'),
         ('description', 'Test group for unit testing purposes.'),
-        ('enabled', True),
-        ('managed', True)
+        ('enabled', True)
     ]
 
     def _attempt_fail(self):
diff --git a/lib/hawat/migrations/versions/c2b4c2af6196_removed_groups_managed.py b/lib/hawat/migrations/versions/c2b4c2af6196_removed_groups_managed.py
new file mode 100644
index 00000000..65b60314
--- /dev/null
+++ b/lib/hawat/migrations/versions/c2b4c2af6196_removed_groups_managed.py
@@ -0,0 +1,24 @@
+"""Removed managed column from GroupModel
+
+Revision ID: c2b4c2af6196
+Revises: 0df0d44a1429
+Create Date: 2021-10-13 17:59:47.008910
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'c2b4c2af6196'
+down_revision = '0df0d44a1429'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():  # pylint: disable=locally-disabled,missing-docstring
+    op.drop_column('groups', 'managed')  # pylint: disable=locally-disabled,no-member
+
+
+def downgrade():  # pylint: disable=locally-disabled,missing-docstring
+    op.add_column('groups', sa.Column('managed', sa.BOOLEAN(), autoincrement=False, nullable=False))
diff --git a/lib/hawat/translations/cs/LC_MESSAGES/messages.po b/lib/hawat/translations/cs/LC_MESSAGES/messages.po
index 63a706f0..9a9c5ff3 100644
--- a/lib/hawat/translations/cs/LC_MESSAGES/messages.po
+++ b/lib/hawat/translations/cs/LC_MESSAGES/messages.po
@@ -2985,19 +2985,6 @@ msgstr ""
 msgid "Self management:"
 msgstr "Samospráva:"
 
-#: ../hawat/blueprints/groups/forms.py:124
-#: ../vial/blueprints/groups/forms.py:66
-msgid ""
-"Boolean flag whether the group is self managed by group managers. When "
-"enabled group managers are expected to take care of the group management "
-"tasks and they get notifications about important events like group "
-"membership requests, etc."
-msgstr ""
-"Příznak, zda skupina je spravována samostatně označenými správci skupiny."
-" Pokud je aktivován očekává se od správců skupiny, že se budou o správu "
-"skupiny starat sami a k tomuto účelu budou od systému dostávat hlášení o "
-"důležitých událostech jako žádosti o členství atd."
-
 #: ../hawat/blueprints/groups/forms.py:127
 #: ../vial/blueprints/groups/forms.py:69
 msgid "Members:"
@@ -3085,10 +3072,6 @@ msgstr "do abuse skupiny"
 msgid "Source"
 msgstr "Zdroj"
 
-#: ../hawat/blueprints/groups/templates/groups/list.html:51
-msgid "Managed"
-msgstr ""
-
 #: ../hawat/blueprints/groups/templates/groups/rejectmember.html:5
 #: ../hawat/blueprints/users/templates/users/rejectmembership.html:5
 msgid "Are you really sure you want to reject membership request of user"
@@ -5729,14 +5712,6 @@ msgid ""
 "of the strings."
 msgstr ""
 
-#: ../vial/blueprints/groups/forms.py:204
-msgid "Self-managed"
-msgstr ""
-
-#: ../vial/blueprints/groups/forms.py:205
-msgid "Not self-managed"
-msgstr ""
-
 #: ../vial/blueprints/groups/forms.py:208
 msgid "Search for groups with particular state."
 msgstr ""
diff --git a/lib/mentat/datatype/sqldb.py b/lib/mentat/datatype/sqldb.py
index 6822b316..f1d3ef6e 100644
--- a/lib/mentat/datatype/sqldb.py
+++ b/lib/mentat/datatype/sqldb.py
@@ -341,7 +341,6 @@ class GroupModel(MODEL):
     source      = sqlalchemy.Column(sqlalchemy.String(50), nullable = False)
     description = sqlalchemy.Column(sqlalchemy.String, nullable = False)
     enabled     = sqlalchemy.Column(sqlalchemy.Boolean, nullable = False, default = True)
-    managed     = sqlalchemy.Column(sqlalchemy.Boolean, nullable = False, default = False)
 
     members = sqlalchemy.orm.relationship('UserModel', secondary = _asoc_group_members, back_populates = 'memberships', order_by = 'UserModel.fullname')
     members_wanted = sqlalchemy.orm.relationship('UserModel', secondary = _asoc_group_members_wanted, back_populates = 'memberships_wanted', order_by = 'UserModel.fullname')
@@ -397,7 +396,6 @@ class GroupModel(MODEL):
             'source':         str(self.source),
             'description':    str(self.description),
             'enabled':        bool(self.enabled),
-            'managed':        bool(self.managed),
             'members':        [(x.id, x.login) for x in self.members],
             'members_wanted': [(x.id, x.login) for x in self.members_wanted],
             'managers':       [(x.id, x.login) for x in self.managers],
diff --git a/lib/vial/blueprints/groups/__init__.py b/lib/vial/blueprints/groups/__init__.py
index 43ef6eca..b7d31eb2 100644
--- a/lib/vial/blueprints/groups/__init__.py
+++ b/lib/vial/blueprints/groups/__init__.py
@@ -140,10 +140,6 @@ class ListView(HTMLMixin, SQLAlchemyMixin, ItemListView):
                 query = query.filter(model.enabled == True)
             elif form_args['state'] == 'disabled':
                 query = query.filter(model.enabled == False)
-            elif form_args['state'] == 'managed':
-                query = query.filter(model.managed == True)
-            elif form_args['state'] == 'notmanaged':
-                query = query.filter(model.managed == False)
         # Adjust query based on record source selection.
         if 'source' in form_args and form_args['source']:
             query = query\
diff --git a/lib/vial/blueprints/groups/forms.py b/lib/vial/blueprints/groups/forms.py
index 5de09e03..53ce5ff2 100644
--- a/lib/vial/blueprints/groups/forms.py
+++ b/lib/vial/blueprints/groups/forms.py
@@ -52,19 +52,6 @@ class BaseGroupForm(vial.forms.BaseItemForm):
         ],
         description = lazy_gettext('Origin of the group record, whether it was added manually, or via some automated mechanism from data from some third party system.')
     )
-    managed = wtforms.RadioField(
-        lazy_gettext('Self management:'),
-        validators = [
-            wtforms.validators.InputRequired(),
-        ],
-        choices = [
-            (True,  lazy_gettext('Enabled')),
-            (False, lazy_gettext('Disabled'))
-        ],
-        filters = [vial.forms.str_to_bool],
-        coerce = vial.forms.str_to_bool,
-        description = lazy_gettext('Boolean flag whether the group is self managed by group managers. When enabled group managers are expected to take care of the group management tasks and they get notifications about important events like group membership requests, etc.')
-    )
     members = QuerySelectMultipleField(
         lazy_gettext('Members:'),
         query_factory = vial.forms.get_available_users,
@@ -200,9 +187,7 @@ class GroupSearchForm(vial.forms.BaseSearchForm):
         choices = [
             ('', lazy_gettext('Nothing selected')),
             ('enabled',  lazy_gettext('Enabled')),
-            ('disabled', lazy_gettext('Disabled')),
-            ('managed',  lazy_gettext('Self-managed')),
-            ('notmanaged', lazy_gettext('Not self-managed'))
+            ('disabled', lazy_gettext('Disabled'))
         ],
         default = '',
         description = lazy_gettext('Search for groups with particular state.')
diff --git a/lib/vial/blueprints/groups/templates/groups/creatupdate.html b/lib/vial/blueprints/groups/templates/groups/creatupdate.html
index 3acbcfd2..a08a12bd 100644
--- a/lib/vial/blueprints/groups/templates/groups/creatupdate.html
+++ b/lib/vial/blueprints/groups/templates/groups/creatupdate.html
@@ -19,9 +19,6 @@
     {%- if form | attr('enabled') %}
                                 {{ macros_form.render_form_item_radiobutton(form.enabled) }}
     {%- endif %}
-    {%- if form | attr('managed') %}
-                                {{ macros_form.render_form_item_radiobutton(form.managed) }}
-    {%- endif %}
     {%- if form | attr('members') %}
                                 {{ macros_form.render_form_item_select(form.members) }}
     {%- endif %}
diff --git a/lib/vial/blueprints/groups/templates/groups/show.html b/lib/vial/blueprints/groups/templates/groups/show.html
index 74129aa8..fdf42a30 100644
--- a/lib/vial/blueprints/groups/templates/groups/show.html
+++ b/lib/vial/blueprints/groups/templates/groups/show.html
@@ -68,14 +68,6 @@
                                                     {{ macros_site.render_label_item_state(item.enabled, True) }}
                                                 </td>
                                             </tr>
-                                            <tr>
-                                                <th>
-                                                    {{ _('Self management') }}:
-                                                </th>
-                                                <td>
-                                                    {{ macros_site.render_label_item_state(item.managed, True) }}
-                                                </td>
-                                            </tr>
                                         </tbody>
                                     </table>
                                 </div>
diff --git a/lib/vial/blueprints/groups/test/__init__.py b/lib/vial/blueprints/groups/test/__init__.py
index 5e51ec2f..a45d1e9d 100644
--- a/lib/vial/blueprints/groups/test/__init__.py
+++ b/lib/vial/blueprints/groups/test/__init__.py
@@ -147,8 +147,7 @@ class GroupsCreateTestCase(TestRunnerMixin, ItemCreateVialTestCase):
     group_data_fixture = [
         ('name', 'TEST_GROUP'),
         ('description', 'Test group for unit testing purposes.'),
-        ('enabled', True),
-        ('managed', True)
+        ('enabled', True)
     ]
 
     def _attempt_fail(self):
diff --git a/lib/vial/view/__init__.py b/lib/vial/view/__init__.py
index 47c8e4aa..13d65f43 100644
--- a/lib/vial/view/__init__.py
+++ b/lib/vial/view/__init__.py
@@ -1976,17 +1976,10 @@ class BaseRegisterView(ItemCreateView):  # pylint: disable=locally-disabled,abst
                     account.login, group.name
                 )
             )
-            if not group.managed:
-                flask.current_app.logger.info(
-                    "Unable to send information about registration of new account '{}' to managers of group '{}': group is not marked as self managed.".format(
-                        account.login, group.name
-                    )
-                )
-                return
 
             if not group.managers:
-                flask.current_app.logger.error(
-                    "Unable to send information about registration of new account '{}' to managers of group '{}': group is marked as self managed, but there are no managers configured.".format(
+                flask.current_app.logger.info(
+                    "Unable to send information about registration of new account '{}' to managers of group '{}': there are no managers configured.".format(
                         account.login, group.name
                     )
                 )
-- 
GitLab