Support for user enable/disable
Adds a button in the users page for enabling/disabling, and disables the edit page for disabled users because keystone throws 403 errors when trying to fetch disabled users
This commit is contained in:
parent
fcb67d7981
commit
ea4c6bf38e
@ -180,6 +180,7 @@ class Server(APIResourceWrapper):
|
||||
def reboot(self, hardness=openstack.compute.servers.REBOOT_HARD):
|
||||
compute_api(self.request).servers.reboot(self.id, hardness)
|
||||
|
||||
|
||||
class ServerAttributes(APIDictWrapper):
|
||||
"""Simple wrapper around openstackx.extras.server.Server attributes
|
||||
|
||||
@ -471,9 +472,11 @@ def tenant_update(request, tenant_id, description, enabled):
|
||||
def token_create(request, tenant, username, password):
|
||||
return Token(auth_api().tokens.create(tenant, username, password))
|
||||
|
||||
|
||||
def tenant_quota_get(request, tenant):
|
||||
return admin_api(request).quota_sets.get(tenant)
|
||||
|
||||
|
||||
def token_info(request, token):
|
||||
# TODO(mgius): This function doesn't make a whole lot of sense to me. The
|
||||
# information being gathered here really aught to be attached to Token() as
|
||||
@ -531,6 +534,10 @@ def user_update_email(request, user_id, email):
|
||||
return User(account_api(request).users.update_email(user_id, email))
|
||||
|
||||
|
||||
def user_update_enabled(request, user_id, enabled):
|
||||
return User(account_api(request).users.update_enabled(user_id, enabled))
|
||||
|
||||
|
||||
def user_update_password(request, user_id, password):
|
||||
return User(account_api(request).users.update_password(user_id, password))
|
||||
|
||||
|
@ -66,9 +66,32 @@ class UserDeleteForm(forms.SelfHandlingForm):
|
||||
return redirect(request.build_absolute_uri())
|
||||
|
||||
|
||||
class UserEnableDisableForm(forms.SelfHandlingForm):
|
||||
id = forms.CharField(label="ID (username)", widget=forms.HiddenInput())
|
||||
enabled = forms.ChoiceField(label="enabled", widget=forms.HiddenInput(),
|
||||
choices=[[c, c]
|
||||
for c in ("disable", "enable")])
|
||||
|
||||
def handle(self, request, data):
|
||||
user_id = data['id']
|
||||
enabled = data['enabled'] == "enable"
|
||||
|
||||
try:
|
||||
api.user_update_enabled(request, user_id, enabled)
|
||||
messages.info(request, "User %s %s" %
|
||||
(user_id,
|
||||
"enable" if enabled else "disable"))
|
||||
except api_exceptions.ApiException:
|
||||
messages.error(request, "Unable to %s user %s" %
|
||||
("enable" if enabled else "disable",
|
||||
user_id))
|
||||
|
||||
return redirect(request.build_absolute_uri())
|
||||
|
||||
|
||||
@login_required
|
||||
def index(request):
|
||||
for f in (UserDeleteForm,):
|
||||
for f in (UserDeleteForm, UserEnableDisableForm):
|
||||
_, handled = f.maybe_handle(request)
|
||||
if handled:
|
||||
return handled
|
||||
@ -81,10 +104,12 @@ def index(request):
|
||||
e.message)
|
||||
|
||||
user_delete_form = UserDeleteForm()
|
||||
return render_to_response('syspanel_users.html',{
|
||||
user_enable_disable_form = UserEnableDisableForm()
|
||||
return render_to_response('syspanel_users.html', {
|
||||
'users': users,
|
||||
'user_delete_form': user_delete_form,
|
||||
}, context_instance = template.RequestContext(request))
|
||||
'user_enable_disable_form': user_enable_disable_form,
|
||||
}, context_instance=template.RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
|
@ -0,0 +1,9 @@
|
||||
<form id="form_user_enable_disable{{user.id}}" class="form-enable_disable" method="post">
|
||||
{% csrf_token %}
|
||||
{% for hidden in form.hidden_fields %}
|
||||
{{hidden}}
|
||||
{% endfor %}
|
||||
<input name="id" type="hidden" value="{{user.id}}" />
|
||||
<input name="enabled" type="hidden" value="{{ user.enabled|yesno:"disable,enable,None" }}" />
|
||||
<input id="enable_{{user.id}}" class="enable" title="User: {{user.id}}" type="submit" value="{{ user.enabled|yesno:"Disable,Enable,Error" }}" />
|
||||
</form>
|
@ -23,13 +23,16 @@
|
||||
</tr>
|
||||
{% for user in users %}
|
||||
<tr class="{% cycle 'odd' 'even' %}">
|
||||
<td>{{user.id}}</td>
|
||||
<td>{{user.id}}{% if not user.enabled %} (disabled){% endif %}</td>
|
||||
<td>{{user.email}}</td>
|
||||
<td>{{user.tenantId}}</td>
|
||||
<td id="actions">
|
||||
<ul>
|
||||
<li class="form">{% include "_user_enable_disable.html" with form=user_enable_disable_form %}</li>
|
||||
<li class="form">{% include "_user_delete.html" with form=user_delete_form %}</li>
|
||||
{% if user.enabled %} <!-- Currently keystone throws 403 when getting or updating a user that is disabled -->
|
||||
<li><a href="{% url syspanel_users_update user.id %}">Edit</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
Loading…
x
Reference in New Issue
Block a user