diff --git a/lib/hawat/blueprints/groups/__init__.py b/lib/hawat/blueprints/groups/__init__.py index 9c20e5b188c6430c160c8f3d21a5065f29261311..43887cf24ac73eb0607258e68409df003491f5a8 100644 --- a/lib/hawat/blueprints/groups/__init__.py +++ b/lib/hawat/blueprints/groups/__init__.py @@ -571,10 +571,6 @@ class AddMemberView(HTMLMixin, SQLAlchemyMixin, @classmethod def change_item(cls, **kwargs): kwargs['item'].members.append(kwargs['other']) - try: - kwargs['item'].members_wanted.remove(kwargs['other']) - except ValueError: - pass if kwargs['other'].is_state_disabled(): kwargs['other'].set_state_enabled() flask.current_app.send_infomail( diff --git a/lib/hawat/blueprints/users/__init__.py b/lib/hawat/blueprints/users/__init__.py index e3e8fd96a2f573598c9625c2e28ff204006ce6f1..ab2d63b9174e44a8af555d8939b11b0645991f02 100644 --- a/lib/hawat/blueprints/users/__init__.py +++ b/lib/hawat/blueprints/users/__init__.py @@ -617,10 +617,6 @@ class AddMembershipView(HTMLMixin, SQLAlchemyMixin, @classmethod def change_item(cls, **kwargs): kwargs['item'].memberships.append(kwargs['other']) - try: - kwargs['item'].memberships_wanted.remove(kwargs['other']) - except ValueError: - pass if kwargs['item'].is_state_disabled(): kwargs['item'].set_state_enabled() flask.current_app.send_infomail( diff --git a/lib/mentat/datatype/sqldb.py b/lib/mentat/datatype/sqldb.py index 182724bd041e424eaa4297f70b1b6c777dbc3b05..6eebde5d42e4025083d21aa346fcc7408fb325f0 100644 --- a/lib/mentat/datatype/sqldb.py +++ b/lib/mentat/datatype/sqldb.py @@ -429,6 +429,19 @@ class GroupModel(MODEL): 'parent': str(self.parent), } + +@sqlalchemy.event.listens_for(GroupModel.members, 'append') +def enforce_wanted_memberships_consistency(group, user, initiator): + """ + This event method is triggered if user is added to members of group, and it enforces + consistency by removing him from members_wanted (if present). + """ + try: + group.members_wanted.remove(user) + except ValueError: + pass + + def groupmodel_from_typeddict(structure, defaults = None): """ Convenience method for creating :py:class:`mentat.datatype.sqldb.GroupModel`