def get_delete_group_form(group_id, config, groups_list): group_choices = [] current_config_group = get_config_group(config, group_id) for group in groups_list: tmp_group_id = group['group_id'] tmp_user_source = get_config_group(config, tmp_group_id)['user_source'] if tmp_group_id != group_id and tmp_user_source == current_config_group['user_source']: group_choices.append((group['group_id'], group['name'])) class DeleteGroupForm(forms.Form): new_group_id = forms.ChoiceField(group_choices, label='Group to move users to') return DeleteGroupForm
def get_delete_group_form(group_id, config, groups_list): group_choices = [] current_config_group = get_config_group(config, group_id) for group in groups_list: tmp_group_id = group['group_id'] tmp_user_source = get_config_group(config, tmp_group_id)['user_source'] if tmp_group_id != group_id and tmp_user_source == current_config_group[ 'user_source']: group_choices.append((group['group_id'], group['name'])) class DeleteGroupForm(forms.Form): new_group_id = forms.ChoiceField(group_choices, label='Group to move users to') return DeleteGroupForm
def clean(self): if any(self.errors): return config_mgr_ = config_mgr.ConfigManager(config_mgr.default_config()) for x in range(0, self.total_form_count()): form = self.forms[x] try: group_id = form.cleaned_data['group_id'] data = dict( name=form.cleaned_data['name'], plan_id=form.cleaned_data['plan_id'], device_policy=form.cleaned_data['device_policy'], webapi_enable=form.cleaned_data['webapi_enable'], check_domain=form.cleaned_data.get( 'check_domain', False), force=('force_plan_change' in self.data), ) try: log_admin_action( request, 'edit group %s with data: %s' % (group_id, data)) api.edit_group(group_id, data) except api.QuotaExceeded: self.show_force = True form._errors['plan_id'] = form.error_class([ 'Changing the plan of this group will put one ' 'or more users over quota. Please choose "Force ' 'Plan Change" if you are sure you want to do this.' ]) g = get_config_group(config, group_id) g['ldap_id'] = form.cleaned_data['ldap_dn'] g['priority'] = form.cleaned_data['priority'] except api.DuplicateGroupName: raise forms.ValidationError('Duplicate group name') config_mgr_.apply_config()
def add_config_items(group, config): g = get_config_group(config, group['group_id']) if g: group['ldap_dn'] = g['ldap_id'] group['priority'] = g['priority'] group['user_source'] = g['user_source'] group['admin_group'] = g['admin_group']
def clean(self): if any(self.errors): return config_mgr_ = config_mgr.ConfigManager(config_mgr.default_config()) for x in range(0, self.total_form_count()): form = self.forms[x] try: group_id = form.cleaned_data['group_id'] data = dict(name=form.cleaned_data['name'], plan_id=form.cleaned_data['plan_id'], webapi_enable=form.cleaned_data['webapi_enable'], check_domain=form.cleaned_data.get('check_domain', False), force=('force_plan_change' in self.data), ) try: log_admin_action(request, 'edit group %s with data: %s' % (group_id, data)) api.edit_group(group_id, data) except api.QuotaExceeded: self.show_force = True form._errors['plan_id'] = form.error_class([ 'Changing the plan of this group will put one ' 'or more users over quota. Please choose "Force ' 'Plan Change" if you are sure you want to do this.']) g = get_config_group(config, group_id) g['ldap_id'] = form.cleaned_data['ldap_dn'] g['priority'] = form.cleaned_data['priority'] except api.DuplicateGroupName: raise forms.ValidationError('Duplicate group name') config_mgr_.apply_config()
def group_detail(request, api, account_info, config, username, group_id, saved=False): group_id = int(group_id) plans = api.list_plans() groups_list = api.list_groups() django_group, admin_group = get_or_create_admin_group(group_id) api_group = api.get_group(group_id) add_config_items(api_group, config) api_group['permissions'] = [p.id for p in django_group.permissions.all()] local_group = get_config_group(config, group_id)['user_source'] == 'local' fields_not_to_show = [] if local_group: fields_not_to_show = ['ldap_dn', 'priority'] GroupForm = get_group_form(request, config, plans, api, False, False) group_form = GroupForm(data=api_group) DeleteGroupForm = get_delete_group_form(group_id, config, groups_list) delete_group = DeleteGroupForm() if request.method == 'POST': if request.POST.get('form', '') == 'delete_group': delete_group = DeleteGroupForm(request.POST) if delete_group.is_valid(): new_group_id = int(delete_group.cleaned_data['new_group_id']) data = (group_id, new_group_id) log_admin_action(request, 'delete group %s and move users to group %s' % data) api.delete_group(group_id, new_group_id,) config_mgr_ = config_mgr.ConfigManager(config_mgr.default_config()) for g in config_mgr_.config['groups']: if g['group_id'] == group_id: config_mgr_.config['groups'].remove(g) break config_mgr_.apply_config() return redirect('blue_mgnt:groups_saved') else: group_form = GroupForm(request.POST) if group_form.is_valid(): return redirect('blue_mgnt:group_detail_saved', group_id) return render_to_response('group_detail.html', dict( delete_group=delete_group, group_form=group_form, group_id=group_id, saved=saved, fields_not_to_show=fields_not_to_show, show_force=getattr(group_form, 'show_force', False), account_info=account_info, ), RequestContext(request))
def group_detail(request, api, account_info, config, username, group_id, saved=False): group_id = int(group_id) plans = api.list_plans() policies = api.list_policies() groups_list = api.list_groups() django_group, admin_group = get_or_create_admin_group(group_id) api_group = api.get_group(group_id) add_config_items(api_group, config) api_group['permissions'] = [p.id for p in django_group.permissions.all()] local_group = get_config_group(config, group_id)['user_source'] == 'local' fields_not_to_show = [] if local_group: fields_not_to_show = ['ldap_dn', 'priority'] GroupForm = get_group_form(request, config, plans, policies, api, False, False) group_form = GroupForm(data=api_group) DeleteGroupForm = get_delete_group_form(group_id, config, groups_list) delete_group = DeleteGroupForm() if request.method == 'POST': if request.POST.get('form', '') == 'delete_group': delete_group = DeleteGroupForm(request.POST) if delete_group.is_valid(): new_group_id = int(delete_group.cleaned_data['new_group_id']) data = (group_id, new_group_id) log_admin_action( request, 'delete group %s and move users to group %s' % data) api.delete_group( group_id, new_group_id, ) config_mgr_ = config_mgr.ConfigManager( config_mgr.default_config()) for g in config_mgr_.config['groups']: if g['group_id'] == group_id: config_mgr_.config['groups'].remove(g) break config_mgr_.apply_config() return redirect('blue_mgnt:groups_saved') else: group_form = GroupForm(request.POST) if group_form.is_valid(): return redirect('blue_mgnt:group_detail_saved', group_id) return render_to_response( 'group_detail.html', dict( delete_group=delete_group, group_form=group_form, group_id=group_id, saved=saved, fields_not_to_show=fields_not_to_show, show_force=getattr(group_form, 'show_force', False), account_info=account_info, ), RequestContext(request))