monkeysphere: Handle unavailable imported domains

After a domain has been imported into a key and later the domain is
removed, handle the case properly.

- Show the Add Domains button only if there are domains that can be
  imported.

- Show domains that have been imported into a key but not available in
  the system specially.

- Sort list of domains shown.
This commit is contained in:
Sunil Mohan Adapa 2016-08-29 21:23:02 +05:30 committed by James Valleroy
parent cd96af6854
commit f9bea39483
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
2 changed files with 19 additions and 14 deletions

View File

@ -91,16 +91,20 @@
</td>
<td>
<ul>
{% for domain in key.available_domains %}
{% for domain in key.all_domains %}
<li>
{% if domain in key.imported_domains %}
<span class="label label-success"
><span class="glyphicon glyphicon-ok" aria-hidden="true"
></span></span>
{% else %}
{% if domain not in key.imported_domains %}
<span class="label label-default"
><span class="glyphicon glyphicon-remove" aria-hidden="true"
></span></span>
><span class="glyphicon glyphicon-remove"
aria-hidden="true"></span></span>
{% elif domain not in key.available_domains %}
<span class="label label-warning"
><span class="glyphicon glyphicon-warning-sign"
aria-hidden="true"></span></span>
{% else %}
<span class="label label-success"
><span class="glyphicon glyphicon-ok"
aria-hidden="true"></span></span>
{% endif %}
{{ domain }}
</li>
@ -138,7 +142,7 @@
{% trans "Publish Key" %}</button>
</form>
{% endif %}
{% if key.imported_domains != key.available_domains %}
{% if key.importable_domains %}
<form class="form pull-right" method="post"
action="{% url 'monkeysphere:import' key.ssh_fingerprint %}">
{% csrf_token %}

View File

@ -109,14 +109,15 @@ def get_keys(fingerprint=None):
for domains_of_a_type in names.domains.values()
for domain in domains_of_a_type]
for key in keys.values():
key['imported_domains'] = set(key.get('imported_domains', []))
key['available_domains'] = set(key.get('available_domains', []))
if '*' in key['available_domains']:
key['available_domains'] = set(domains)
else:
key['available_domains'] = set(key['available_domains'])
if 'imported_domains' in key:
key['imported_domains'] = set(key['imported_domains']) \
.intersection(key['available_domains'])
key['all_domains'] = sorted(
key['available_domains'].union(key['imported_domains']))
key['importable_domains'] = key['available_domains'] \
.difference(key['imported_domains'])
return keys