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

View File

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