Merge ~ya-bo-ng/maas:settings-qa into ~deadlight/maas:vanilla
- Git
- lp:~ya-bo-ng/maas
- settings-qa
- Merge into vanilla
Proposed by
Anthony Dillon
Status: | Merged |
---|---|
Merged at revision: | 4eb1c5f5f21a377a4cc16508bb57ce60b7a8c5d9 |
Proposed branch: | ~ya-bo-ng/maas:settings-qa |
Merge into: | ~deadlight/maas:vanilla |
Diff against target: |
365 lines (+104/-75) 8 files modified
src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js (+1/-1) src/maasserver/static/partials/node-details.html (+1/-1) src/maasserver/static/partials/settings.html (+19/-18) src/maasserver/static/partials/ssh-keys.html (+15/-14) src/maasserver/static/scss/_maas.scss (+14/-0) src/maasserver/static/scss/_patterns_icons.scss (+1/-1) src/maasserver/templates/maasserver/form_field.html (+8/-4) src/maasserver/templates/maasserver/user_view.html (+45/-36) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Karl Williams | Approve | ||
Review via email: mp+337497@code.launchpad.net |
Commit message
Description of the change
Fixes issues that come out of the design QA
## QA
- Go to settings
- Check that the issues listed below are resolved
Fixes
- https:/
- https:/
- https:/
- https:/
- https:/
- https:/
- https:/
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js b/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js |
2 | index faa744a..81d2c69 100644 |
3 | --- a/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js |
4 | +++ b/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js |
5 | @@ -448,7 +448,7 @@ describe("maasObjForm", function() { |
6 | var input = angular.element( |
7 | onoff.find("input.onoffswitch-checkbox")); |
8 | var label = angular.element( |
9 | - onoff.find("label.onoffswitch-label")); |
10 | + onoff.find("label.onoffswitch-label u-no-margin--top")); |
11 | expect(onoff.length).toBe(1); |
12 | expect(input.length).toBe(1); |
13 | expect(label.length).toBe(1); |
14 | diff --git a/src/maasserver/static/partials/node-details.html b/src/maasserver/static/partials/node-details.html |
15 | index b7da348..cb42a18 100755 |
16 | --- a/src/maasserver/static/partials/node-details.html |
17 | +++ b/src/maasserver/static/partials/node-details.html |
18 | @@ -1280,7 +1280,7 @@ |
19 | <div class="onoffswitch"> |
20 | <input input id="bridge_stp" type="checkbox" name="bridge_stp" class="onoffswitch-checkbox" |
21 | data-ng-model="newBridgeInterface.bridge_stp"> |
22 | - <label class="onoffswitch-label" for="bridge_stp"> |
23 | + <label class="onoffswitch-label u-no-margin--top" for="bridge_stp"> |
24 | <span class="onoffswitch-inner"></span> |
25 | <span class="onoffswitch-switch"></span> |
26 | </label> |
27 | diff --git a/src/maasserver/static/partials/settings.html b/src/maasserver/static/partials/settings.html |
28 | index f700394..2980a4b 100644 |
29 | --- a/src/maasserver/static/partials/settings.html |
30 | +++ b/src/maasserver/static/partials/settings.html |
31 | @@ -39,7 +39,7 @@ |
32 | <th class="col-2">Type</th> |
33 | <th class="col-4">Applies to</th> |
34 | <th class="col-1">Enabled</th> |
35 | - <th class="col-3 u-align--right">Actions</th> |
36 | + <th class="col-3">Actions</th> |
37 | <th class="u-hide"><!-- empty cell required for validation --></th> |
38 | </tr> |
39 | </thead> |
40 | @@ -56,17 +56,18 @@ |
41 | <span>{$ getSnippetAppliesToText(snippet) $}</span> |
42 | </td> |
43 | <td class="col-1" aria-label="Enabled" data-ng-if="editSnippet !== snippet"> |
44 | - <div class="onoffswitch"> |
45 | + <div class="onoffswitch" data-ng-if="deleteSnippet !== snippet"> |
46 | <input type="checkbox" name="enabled" class="onoffswitch-checkbox u-float-none" id="enabled-{$ snippet.id $}" |
47 | data-ng-model="snippet.enabled" |
48 | data-ng-change="snippetToggle(snippet)"> |
49 | - <label class="onoffswitch-label" for="enabled-{$ snippet.id $}"> |
50 | + <label class="onoffswitch-label u-no-margin--top" for="enabled-{$ snippet.id $}"> |
51 | <span class="onoffswitch-inner"></span> |
52 | <span class="onoffswitch-switch"></span> |
53 | </label> |
54 | </div> |
55 | </td> |
56 | - <td class="col-3 u-align--right" data-ng-if="editSnippet !== snippet && deleteSnippet !== snippet"> |
57 | + <td class="col-3" data-ng-if="editSnippet !== snippet"> |
58 | + <span data-ng-if="deleteSnippet !== snippet"> |
59 | <button aria-label="Edit {$ snippet.name $}" |
60 | data-ng-click="toggleMenu(); snippetEnterEdit(snippet)">Edit</button> |
61 | <button aria-label="Remove {$ snippet.name $}" |
62 | @@ -124,8 +125,8 @@ |
63 | disable-label="true" rows="10"></maas-obj-field> |
64 | </div> |
65 | </div> |
66 | - <div class="row"> |
67 | - <div class="col-8"> |
68 | + <div class="row u-equal-height"> |
69 | + <div class="col-8 u-vertically-center"> |
70 | <maas-obj-errors></maas-obj-errors> |
71 | </div> |
72 | <div class="col-4 u-align--right"> |
73 | @@ -142,8 +143,8 @@ |
74 | <h2 data-ng-click="snippetExitRemove(snippet)" class="u-float--left">Removing {$ snippet.name $}</h2> |
75 | <button data-ng-click="snippetExitRemove(snippet)" class="p-icon--close u-float--right"></button> |
76 | </div> |
77 | - <div class="row u-no-margin--top"> |
78 | - <div class="col-6"> |
79 | + <div class="row u-no-margin--top u-equal-height"> |
80 | + <div class="col-6 u-vertically-center"> |
81 | <p><i class="p-icon--warning">Warning:</i> Are you sure you want to remove this snippet?</p> |
82 | </div> |
83 | <div class="col-6 u-align--right"> |
84 | @@ -165,23 +166,23 @@ |
85 | <div class="col-2"> |
86 | <label for="name" class="u-hide u-show--small">Name</label> |
87 | <maas-obj-field type="text" key="name" placeholder="Name" |
88 | - disable-label="true" input-class="table__input u-margin--none" class="u-margin--bottom-none"></maas-obj-field> |
89 | + disable-label="true" input-class="table__input" class="u-no-margin--top"></maas-obj-field> |
90 | </div> |
91 | <div class="col-2"> |
92 | <label for="Select type" class="u-hide u-show--small">Select type</label> |
93 | - <maas-obj-field type="options" key="type" class="u-margin--bottom-none" placeholder="Select type" |
94 | - disable-label="true" input-class="table__input u-margin--none" |
95 | + <maas-obj-field type="options" key="type" class="u-no-margin--top" placeholder="Select type" |
96 | + disable-label="true" input-class="table__input" |
97 | options="type for type in snippetTypes"></maas-obj-field> |
98 | </div> |
99 | <div class="col-4"> |
100 | <label for="subnet" class="u-hide u-show--small" data-ng-if="newSnippet.$maasForm.getValue('type') === 'Subnet'">Choose subnet</label> |
101 | <label for="node" class="u-hide u-show--small" data-ng-if="newSnippet.$maasForm.getValue('type') === 'Node'">Choose node</label> |
102 | <maas-obj-field type="options" key="subnet" placeholder="Choose subnet" |
103 | - disable-label="true" input-class="table__input u-margin--none" |
104 | + disable-label="true" input-class="table__input" |
105 | options="subnet.id as getSubnetName(subnet) for subnet in subnets" |
106 | data-ng-if="newSnippet.$maasForm.getValue('type') === 'Subnet'"></maas-obj-field> |
107 | <maas-obj-field type="options" key="node" placeholder="Choose node" |
108 | - disable-label="true" input-class="table__input u-margin--none" |
109 | + disable-label="true" input-class="table__input" |
110 | options="node.system_id as node.fqdn group by node.node_type_display for node in machines.concat(devices).concat(controllers)" |
111 | data-ng-if="newSnippet.$maasForm.getValue('type') === 'Node'"> |
112 | </maas-obj-field> |
113 | @@ -194,7 +195,7 @@ |
114 | <input type="checkbox" name="enabled" class="onoffswitch-checkbox" id="newEnabled" |
115 | data-ng-model="newSnippet.data.enabled" |
116 | data-ng-disabled="newSnippet.saving" checked> |
117 | - <label class="onoffswitch-label" for="newEnabled"> |
118 | + <label class="onoffswitch-label u-no-margin--top" for="newEnabled"> |
119 | <span class="onoffswitch-inner"></span> |
120 | <span class="onoffswitch-switch"></span> |
121 | </label> |
122 | @@ -227,7 +228,7 @@ |
123 | <input type="checkbox" name="enabled" class="onoffswitch-checkbox" id="newEnabled" |
124 | data-ng-model="newSnippet.data.enabled" |
125 | data-ng-disabled="newSnippet.saving" checked> |
126 | - <label class="onoffswitch-label" for="newEnabled"> |
127 | + <label class="onoffswitch-label u-no-margin--top" for="newEnabled"> |
128 | <span class="onoffswitch-inner"></span> |
129 | <span class="onoffswitch-switch"></span> |
130 | </label> |
131 | @@ -345,7 +346,7 @@ |
132 | <input type="checkbox" name="enabled" class="onoffswitch-checkbox" id="enabled-repo-{$ repository.id $}" |
133 | data-ng-model="repository.enabled" |
134 | data-ng-change="repositoryEnabledToggle(repository)"> |
135 | - <label class="onoffswitch-label" for="enabled-repo-{$ repository.id $}"> |
136 | + <label class="onoffswitch-label u-no-margin--top" for="enabled-repo-{$ repository.id $}"> |
137 | <span class="onoffswitch-inner"></span> |
138 | <span class="onoffswitch-switch"></span> |
139 | </label> |
140 | @@ -355,7 +356,7 @@ |
141 | data-ng-if="isMirror(repository)"> |
142 | <input type="checkbox" name="enabled" class="onoffswitch-checkbox u-float-none" id="enabled-repo-{$ repository.id $}" |
143 | data-ng-model="repository.enabled"> |
144 | - <label class="onoffswitch-label" for="enabled-repo-{$ repository.id $}"> |
145 | + <label class="onoffswitch-label u-no-margin--top" for="enabled-repo-{$ repository.id $}"> |
146 | <span class="onoffswitch-inner"></span> |
147 | <span class="onoffswitch-switch"></span> |
148 | </label> |
149 | @@ -481,7 +482,7 @@ |
150 | <div class="col-3"> |
151 | <maas-obj-field class="u-margin--none" type="text" key="name" placeholder="Name" disable-label="true" input-class="table__input u-margin--none"></maas-obj-field> |
152 | </div> |
153 | - <div class="col-5"> |
154 | + <div class="col-4"> |
155 | <maas-obj-field class="u-margin--none" type="text" key="url" placeholder="URL" disable-label="true" input-class="table__input u-margin--none"></maas-obj-field> |
156 | </div> |
157 | <div class="col-2 u-vertically-center"> |
158 | diff --git a/src/maasserver/static/partials/ssh-keys.html b/src/maasserver/static/partials/ssh-keys.html |
159 | index 0ddeb6c..9bdce51 100644 |
160 | --- a/src/maasserver/static/partials/ssh-keys.html |
161 | +++ b/src/maasserver/static/partials/ssh-keys.html |
162 | @@ -14,28 +14,29 @@ |
163 | <td aria-label="Source" class="col-4">{$ sourceTitles[group.source] $}</td> |
164 | <td data-ng-if="group.source === 'upload'" data-ng-bind-html="trustAsHtml(group.keys[0].display)" colspan="2" class="col-7"> </td> |
165 | <td data-ng-if="group.source !== 'upload'" aria-label="ID" class="col-4">{$ group.authId $}</td> |
166 | - <td data-ng-if="group.source !== 'upload'" aria-label="Number of keys" class="col-3"> |
167 | + <td data-ng-if="group.source !== 'upload'" aria-label="Number of keys" class="col-1"> |
168 | {$ group.keys.length $} |
169 | - <a class="p-tooltip p-tooltip--top-right" data-ng-click="open(group, 'view')" aria-label="View keys" data-ng-if="group.source !== 'upload' && (openRow !== group.id || rowMode === 'delete')"><i class="p-icon--plus"></i><span class="p-tooltip__message" role="tooltip">View keys</span></a> |
170 | - |
171 | - <a class="p-tooltip p-tooltip--top-right" data-ng-click="close()" aria-label="Hide keys" data-ng-if="group.source !== 'upload' && openRow === group.id && rowMode === 'view'"><i class="p-icon--minus"></i><span class="p-tooltip__message" role="tooltip">Hide keys</span></a> |
172 | </td> |
173 | - <td class="u-align--right" class="col-1"> |
174 | - <a class="p-tooltip p-tooltip--top-right js-delete-link" data-ng-click="open(group, 'delete')"><i class="p-icon--delete"></i><span class="p-tooltip__message" role="tooltip">Delete SSH key</span></a> |
175 | + <td class="u-align--right" class="col-3 u-align--right"> |
176 | + <a class="p-button u-no-margin--top" data-ng-click="open(group, 'view')" aria-label="Show keys" data-ng-if="group.source !== 'upload' && (openRow !== group.id || rowMode === 'delete')">Show keys</a> |
177 | + <a class="p-button u-no-margin--top" data-ng-click="close()" aria-label="Hide keys" data-ng-if="group.source !== 'upload' && openRow === group.id && rowMode === 'view'">Hide keys</a> |
178 | + <a class="p-button u-no-margin--top js-delete-link" data-ng-click="open(group, 'delete')">Delete SSH key</a> |
179 | </td> |
180 | <td class="p-table-expanding__panel col-12 u-no-margin--left" data-ng-class="{ 'u-hide': group.id !== openRow || rowMode !== 'view' }"> |
181 | <ul class="p-list"> |
182 | <li data-ng-repeat="key in group.keys" data-ng-bind-html="trustAsHtml(key.display)"></li> |
183 | </ul> |
184 | </td> |
185 | - <td class="p-table-expanding__panel col-12 u-no-margin--left" data-ng-class="{ 'u-hide': group.id !== openRow || rowMode !== 'delete' }"> |
186 | - <div class="col-8"> |
187 | - <span data-ng-if="group.source !== 'upload'"><span class="p-icon p-icon--warning"></span> Are you sure you want to remove this key source?</span> |
188 | - <span data-ng-if="group.source === 'upload'"><span class="p-icon p-icon--warning"></span> Are you sure you want to remove this key?</span> |
189 | - </div> |
190 | - <div class="col-4 u-align--right"> |
191 | - <button class="p-button--base" data-ng-click="close()">Cancel</button> |
192 | - <button class="p-button--negative" data-ng-click="confirmDelete(group)">Remove</button> |
193 | + <td class="p-table-expanding__panel" data-ng-class="{ 'u-hide': group.id !== openRow || rowMode !== 'delete' }"> |
194 | + <div class="row u-equal-height"> |
195 | + <div class="col-8 u-vertically-center"> |
196 | + <span data-ng-if="group.source !== 'upload'"><span class="p-icon p-icon--warning">Warning:</span> Are you sure you want to remove this key source?</span> |
197 | + <span data-ng-if="group.source === 'upload'"><span class="p-icon p-icon--warning">Warning:</span> Are you sure you want to remove this key?</span> |
198 | + </div> |
199 | + <div class="col-4 u-align--right"> |
200 | + <button class="p-button--base" data-ng-click="close()">Cancel</button> |
201 | + <button class="p-button--negative" data-ng-click="confirmDelete(group)">Remove</button> |
202 | + </div> |
203 | </div> |
204 | </td> |
205 | </tr> |
206 | diff --git a/src/maasserver/static/scss/_maas.scss b/src/maasserver/static/scss/_maas.scss |
207 | index f8386d3..6b4358d 100644 |
208 | --- a/src/maasserver/static/scss/_maas.scss |
209 | +++ b/src/maasserver/static/scss/_maas.scss |
210 | @@ -74,6 +74,13 @@ |
211 | float: none; |
212 | } |
213 | |
214 | + form { |
215 | + input[type="radio"], |
216 | + input[type="checkbox"] { |
217 | + float: left; |
218 | + } |
219 | + } |
220 | + |
221 | th, |
222 | td { |
223 | display: table-cell !important; |
224 | @@ -237,4 +244,11 @@ |
225 | .col-12 { |
226 | width: 100%; |
227 | } |
228 | + |
229 | + // Can be removed when the settings section is updated |
230 | + .errorlist { |
231 | + list-style: none; |
232 | + display: inline-block; |
233 | + margin-left: 0; |
234 | + } |
235 | } |
236 | diff --git a/src/maasserver/static/scss/_patterns_icons.scss b/src/maasserver/static/scss/_patterns_icons.scss |
237 | index aa5a8e9..9863264 100644 |
238 | --- a/src/maasserver/static/scss/_patterns_icons.scss |
239 | +++ b/src/maasserver/static/scss/_patterns_icons.scss |
240 | @@ -1,5 +1,5 @@ |
241 | @mixin maas-icon-edit($color) { |
242 | - background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='22' height='22' viewBox='0 0 22 22' xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eedit%3c/title%3e%3cg fill='" + rgba($color, 1) + "' fill-rule='evenodd'%3e%3cpath d='M17 15h5v1h-5zm-3 3h8v1h-8zm-3 3h11v1H11zm5.75-21L3.47 13.517S.956 17.465 0 21.987v.004l.002.004V22c4.532-.955 8.48-3.472 8.48-3.472L22 5.25 16.75 0zM4.51 14.555L7.454 17.5c-.2.114-2.99 2.064-5.544 2.602V20.093l-.002-.003c.537-2.546 2.485-5.334 2.602-5.537v.002z'/%3e%3cpath d='M2.234 18l1.85 1.85L1 21'/%3e%3c/g%3e%3c/svg%3e"); |
243 | + background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='22' height='22' viewBox='0 0 22 22' xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eedit%3c/title%3e%3cg fill='" + encodecolor($color) + "' fill-rule='evenodd'%3e%3cpath d='M17 15h5v1h-5zm-3 3h8v1h-8zm-3 3h11v1H11zm5.75-21L3.47 13.517S.956 17.465 0 21.987v.004l.002.004V22c4.532-.955 8.48-3.472 8.48-3.472L22 5.25 16.75 0zM4.51 14.555L7.454 17.5c-.2.114-2.99 2.064-5.544 2.602V20.093l-.002-.003c.537-2.546 2.485-5.334 2.602-5.537v.002z'/%3e%3cpath d='M2.234 18l1.85 1.85L1 21'/%3e%3c/g%3e%3c/svg%3e"); |
244 | } |
245 | |
246 | @mixin maas-icon-power-on($color) { |
247 | diff --git a/src/maasserver/templates/maasserver/form_field.html b/src/maasserver/templates/maasserver/form_field.html |
248 | index 0762bd3..a50a5af 100644 |
249 | --- a/src/maasserver/templates/maasserver/form_field.html |
250 | +++ b/src/maasserver/templates/maasserver/form_field.html |
251 | @@ -1,5 +1,6 @@ |
252 | {% load field_type %} |
253 | -<li class="{{ field.html_name }}{% if css_class %} {{ css_class }}{% endif %}{% if field.errors %} error{% endif %}{% if field.help_text %} help-msg{% endif %}"> |
254 | +<li class="p-list__item"> |
255 | +<div class="p-form-validation {{ field.html_name }}{% if css_class %} {{ css_class }}{% endif %}{% if field.errors %} is-error{% endif %}"> |
256 | {% if not field.is_hidden %} |
257 | {% ifequal field|field_type "CheckboxInput" %} |
258 | {{ field }} |
259 | @@ -17,7 +18,10 @@ |
260 | {{ field }} |
261 | {% endifnotequal %} |
262 | {% if field.errors %} |
263 | - <p class="p-form-validation__message"><strong>Error:</strong> {{ field.errors }}</p> |
264 | + <span class="p-form-validation__message"> |
265 | + <strong>Error:</strong> {{ field.errors }} |
266 | + </span> |
267 | {% endif %} |
268 | - <p class="p-form-help-text">{% if field.help_text %}{{ field.help_text }}{% endif %}</p> |
269 | -</li> |
270 | + <p>{% if field.help_text %}{{ field.help_text }}{% endif %}</p> |
271 | +</div> |
272 | +</li> |
273 | \ No newline at end of file |
274 | diff --git a/src/maasserver/templates/maasserver/user_view.html b/src/maasserver/templates/maasserver/user_view.html |
275 | index 0202600..81dd82c 100644 |
276 | --- a/src/maasserver/templates/maasserver/user_view.html |
277 | +++ b/src/maasserver/templates/maasserver/user_view.html |
278 | @@ -3,42 +3,51 @@ |
279 | {% block nav-active-settings %}active{% endblock %} |
280 | {% block title %}View user{% endblock %} |
281 | {% block page-title %}View user: {{ view_user.username }}{% endblock %} |
282 | -{% block layout-modifiers %}sidebar{% endblock %} |
283 | - |
284 | -{% block sidebar %} |
285 | -<div class="three-col append-one"> |
286 | - <h4>Actions</h4> |
287 | - <a href="{% url 'accounts-edit' view_user.username %}" class="button--secondary button--inline">Edit user</a> |
288 | - <a href="{% url 'accounts-del' view_user.username %}" class="button--destructive button--inline">Delete user</a> |
289 | -</div> |
290 | -{% endblock %} |
291 | |
292 | {% block content %} |
293 | -<div class="eight-col last-col"> |
294 | - <ul class="u-margin--left-none"> |
295 | - <li class="two-col"> |
296 | - <h4>Username</h4> |
297 | - <span>{{ view_user.username }}</span> |
298 | - </li> |
299 | - <li class="three-col"> |
300 | - <h4>Full name</h4> |
301 | - <span>{{ view_user.last_name }}</span> |
302 | - </li> |
303 | - <li class="three-col last-col"> |
304 | - <h4>Email address</h4> |
305 | - <span>{{ view_user.email }}</span> |
306 | - </li> |
307 | - <li class="two-col clear"> |
308 | - <h4>MAAS Keys</h4> |
309 | - <span> |
310 | - {{ user.userprofile.get_authorisation_tokens.count }} |
311 | - key{{ user.userprofile.get_authorisation_tokens.count|pluralize }} |
312 | - </span> |
313 | - </li> |
314 | - <li class="three-col"> |
315 | - <h4>MAAS Administrator</h4> |
316 | - <span>{{ view_user.is_superuser }}</span> |
317 | - </li> |
318 | - </ul> |
319 | -</div> |
320 | +<div class="p-strip"> |
321 | + <form class="p-form p-form--stacked"> |
322 | + <div class="row"> |
323 | + <div class="col-4"> |
324 | + <div class="p-form__group"> |
325 | + <p class="p-form__label"><strong>Username</strong></p> |
326 | + <div class="p-form__control u-clearfix"> |
327 | + <p>{{ view_user.username }}</p> |
328 | + </div> |
329 | + </div> |
330 | + <div class="p-form__group"> |
331 | + <p class="p-form__label"><strong>Full name</strong></p> |
332 | + <div class="p-form__control u-clearfix"> |
333 | + <p>{{ view_user.last_name }}</p> |
334 | + </div> |
335 | + </div> |
336 | + <div class="p-form__group"> |
337 | + <p class="p-form__label"><strong>Email address</strong></p> |
338 | + <div class="p-form__control u-clearfix"> |
339 | + <p>{{ view_user.email }}</p> |
340 | + </div> |
341 | + </div> |
342 | + </div> |
343 | + <div class="col-4"> |
344 | + <div class="p-form__group"> |
345 | + <p class="p-form__label"><strong>MAAS Keys</strong></p> |
346 | + <div class="p-form__control u-clearfix"> |
347 | + <p>{{ user.userprofile.get_authorisation_tokens.count }} |
348 | + key{{ user.userprofile.get_authorisation_tokens.count|pluralize }}</p> |
349 | + </div> |
350 | + </div> |
351 | + <div class="p-form__group"> |
352 | + <p class="p-form__label"><strong>MAAS Administrator</strong></p> |
353 | + <div class="p-form__control u-clearfix"> |
354 | + <p>{{ view_user.is_superuser }}</p> |
355 | + </div> |
356 | + </div> |
357 | + </div> |
358 | + <div class="col-3"> |
359 | + <h4>Actions</h4> |
360 | + <a href="{% url 'accounts-edit' view_user.username %}" class="p-button--neutral">Edit user</a> |
361 | + <a href="{% url 'accounts-del' view_user.username %}" class="p-button--negative">Delete user</a> |
362 | + </div> |
363 | + </div> |
364 | + </form> |
365 | {% endblock %} |
All issues addressed +1