implement RemoveMemberFromGroupView
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
21173d1b8c
commit
df7148940a
|
@ -54,6 +54,12 @@ class Model:
|
||||||
'AddMemberToGroup': {
|
'AddMemberToGroup': {
|
||||||
'cn': '',
|
'cn': '',
|
||||||
'uid': '',
|
'uid': '',
|
||||||
|
'subscribe': True,
|
||||||
|
},
|
||||||
|
'RemoveMemberFromGroup': {
|
||||||
|
'cn': '',
|
||||||
|
'uid': '',
|
||||||
|
'unsubscribe': True,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
self.viewdata = deepcopy(self._initial_viewdata)
|
self.viewdata = deepcopy(self._initial_viewdata)
|
||||||
|
|
|
@ -18,7 +18,8 @@ class AddMemberToGroupView(CeoFrame):
|
||||||
self._username = Text('Username:', 'uid')
|
self._username = Text('Username:', 'uid')
|
||||||
layout.add_widget(self._username)
|
layout.add_widget(self._username)
|
||||||
layout.add_widget(Label(''))
|
layout.add_widget(Label(''))
|
||||||
self._checkbox = CheckBox('subscribe to auxiliary mailing lists')
|
self._checkbox = CheckBox(
|
||||||
|
'subscribe to auxiliary mailing lists', name='subscribe')
|
||||||
self._checkbox.value = True
|
self._checkbox.value = True
|
||||||
layout.add_widget(self._checkbox)
|
layout.add_widget(self._checkbox)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
from asciimatics.widgets import Layout, Text, CheckBox, Label
|
||||||
|
|
||||||
|
from ...utils import defer, http_delete
|
||||||
|
from ..CeoFrame import CeoFrame
|
||||||
|
from ceod.transactions.groups import RemoveMemberFromGroupTransaction
|
||||||
|
|
||||||
|
|
||||||
|
class RemoveMemberFromGroupView(CeoFrame):
|
||||||
|
def __init__(self, screen, width, height, model):
|
||||||
|
super().__init__(
|
||||||
|
screen, height, width, model, 'RemoveMemberFromGroup',
|
||||||
|
save_data=True,
|
||||||
|
)
|
||||||
|
layout = Layout([100], fill_frame=True)
|
||||||
|
self.add_layout(layout)
|
||||||
|
self._cn = Text('Group name:', 'cn')
|
||||||
|
layout.add_widget(self._cn)
|
||||||
|
self._username = Text('Username:', 'uid')
|
||||||
|
layout.add_widget(self._username)
|
||||||
|
layout.add_widget(Label(''))
|
||||||
|
self._checkbox = CheckBox(
|
||||||
|
'unsubscribe from auxiliary mailing lists', name='unsubscribe')
|
||||||
|
self._checkbox.value = True
|
||||||
|
layout.add_widget(self._checkbox)
|
||||||
|
|
||||||
|
self.add_buttons(
|
||||||
|
back_btn=True,
|
||||||
|
next_scene='Confirm', on_next=self._next)
|
||||||
|
self.fix()
|
||||||
|
|
||||||
|
def _next(self):
|
||||||
|
cn = self._cn.value
|
||||||
|
uid = self._username.value
|
||||||
|
self._model.confirm_lines = [
|
||||||
|
f'Are you sure you want to remove {uid} from {cn}?',
|
||||||
|
]
|
||||||
|
operations = RemoveMemberFromGroupTransaction.operations
|
||||||
|
url = f'/api/groups/{cn}/members/{uid}'
|
||||||
|
# TODO: deduplicate this logic from the CLI
|
||||||
|
if not self._checkbox.value:
|
||||||
|
url += '?unsubscribe_from_lists=false'
|
||||||
|
operations.remove('unsubscribe_user_from_auxiliary_mailing_lists')
|
||||||
|
self._model.deferred_req = defer(http_delete, url)
|
||||||
|
self._model.operations = operations
|
|
@ -15,6 +15,7 @@ from .groups.AddGroupView import AddGroupView
|
||||||
from .groups.AddMemberToGroupView import AddMemberToGroupView
|
from .groups.AddMemberToGroupView import AddMemberToGroupView
|
||||||
from .groups.GetGroupView import GetGroupView
|
from .groups.GetGroupView import GetGroupView
|
||||||
from .groups.GetGroupResultView import GetGroupResultView
|
from .groups.GetGroupResultView import GetGroupResultView
|
||||||
|
from .groups.RemoveMemberFromGroupView import RemoveMemberFromGroupView
|
||||||
from .members.AddUserView import AddUserView
|
from .members.AddUserView import AddUserView
|
||||||
from .members.ChangeLoginShellView import ChangeLoginShellView
|
from .members.ChangeLoginShellView import ChangeLoginShellView
|
||||||
from .members.GetUserView import GetUserView
|
from .members.GetUserView import GetUserView
|
||||||
|
@ -63,6 +64,7 @@ def screen_wrapper(screen, last_scene, model):
|
||||||
('GetGroup', GetGroupView(screen, width, height, model)),
|
('GetGroup', GetGroupView(screen, width, height, model)),
|
||||||
('GetGroupResult', GetGroupResultView(screen, width, height, model)),
|
('GetGroupResult', GetGroupResultView(screen, width, height, model)),
|
||||||
('AddMemberToGroup', AddMemberToGroupView(screen, width, height, model)),
|
('AddMemberToGroup', AddMemberToGroupView(screen, width, height, model)),
|
||||||
|
('RemoveMemberFromGroup', RemoveMemberFromGroupView(screen, width, height, model)),
|
||||||
]
|
]
|
||||||
scenes = [
|
scenes = [
|
||||||
Scene([view], -1, name=name) for name, view in views
|
Scene([view], -1, name=name) for name, view in views
|
||||||
|
|
|
@ -69,9 +69,9 @@ class RemoveMemberFromGroupTransaction(AbstractTransaction):
|
||||||
yield 'unsubscribe_user_from_auxiliary_mailing_lists'
|
yield 'unsubscribe_user_from_auxiliary_mailing_lists'
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
except Exception:
|
except Exception as err:
|
||||||
logger.error(traceback.format_exc())
|
logger.error(traceback.format_exc())
|
||||||
yield 'failed_to_unsubscribe_user_from_auxiliary_mailing_lists'
|
yield 'failed_to_unsubscribe_user_from_auxiliary_mailing_lists: ' + str(err)
|
||||||
|
|
||||||
result = {
|
result = {
|
||||||
'removed_from_groups': [self.group_name] + [
|
'removed_from_groups': [self.group_name] + [
|
||||||
|
|
Loading…
Reference in New Issue