names: Make all apps use new api to retrieve domain names

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
Sunil Mohan Adapa 2019-07-09 13:15:52 -07:00 committed by James Valleroy
parent ab42b9b241
commit b684b07d11
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
10 changed files with 28 additions and 55 deletions

View File

@ -30,7 +30,6 @@ from django.utils.translation import get_language_info
from django.utils.translation import ugettext_lazy as _
import plinth
from plinth import utils
class AppForm(forms.Form):
@ -46,7 +45,10 @@ class DomainSelectionForm(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['domain_name'].choices = utils.get_domain_names()
from plinth.modules.names.components import DomainName
domains = list(DomainName.list_names())
self.fields['domain_name'].choices = zip(domains, domains)
domain_name = forms.ChoiceField(
label=_('Select a domain name to be used with this application'),

View File

@ -32,9 +32,9 @@ from plinth.modules import names
def access_info(request, **kwargs):
"""API view to return a list of domains and types."""
domains = [{
'domain': domain,
'type': domain_type
} for domain_type, domains in names.domains.items() for domain in domains]
'domain': domain.name,
'type': domain.domain_type.component_id
} for domain in names.components.DomainName.list()]
response = {'domains': domains}
return HttpResponse(json.dumps(response), content_type='application/json')

View File

@ -110,11 +110,9 @@ def init():
def setup(helper, old_version=None):
"""Install and configure the module."""
helper.install(managed_packages)
domains = [
domain for domains_of_a_type in names.domains.values()
for domain in domains_of_a_type
]
helper.call('post', actions.superuser_run, 'cockpit', ['setup'] + domains)
domains = names.components.DomainName.list_names('https')
helper.call('post', actions.superuser_run, 'cockpit',
['setup'] + list(domains))
helper.call('post', app.enable)

View File

@ -25,8 +25,7 @@ from django.utils.translation import ugettext as _
from django.views.generic import FormView
from plinth.forms import DomainSelectionForm
from plinth.modules import diaspora
from plinth.utils import get_domain_names
from plinth.modules import diaspora, names
from plinth.views import AppView
from .forms import DiasporaAppForm
@ -50,7 +49,8 @@ class DiasporaSetupView(FormView):
context = super().get_context_data(**kwargs)
context['description'] = self.description
context['title'] = self.title
context['domain_names'] = get_domain_names()
context['domain_names'] = names.components.DomainName.list_names(
'https')
return context

View File

@ -111,12 +111,9 @@ def diagnose():
"""Run diagnostics and return the results."""
results = []
for domain_type, domains in names.domains.items():
if domain_type == 'hiddenservice':
continue
for domain in domains:
results.append(action_utils.diagnose_url('https://' + domain))
for domain in names.components.DomainName.list():
if domain.domain_type.can_have_certificate:
results.append(action_utils.diagnose_url('https://' + domain.name))
return results
@ -203,13 +200,9 @@ def get_status():
status = actions.superuser_run('letsencrypt', ['get-status'])
status = json.loads(status)
for domain_type, domains in names.domains.items():
# XXX: Remove when Let's Encrypt supports .onion addresses
if domain_type == 'hiddenservice':
continue
for domain in domains:
status['domains'].setdefault(domain, {})
for domain in names.components.DomainName.list():
if domain.domain_type.can_have_certificate:
status['domains'].setdefault(domain.name, {})
return status

View File

@ -26,8 +26,7 @@ from django.views.generic import FormView
from plinth import actions
from plinth.forms import DomainSelectionForm
from plinth.modules import matrixsynapse
from plinth.utils import get_domain_names
from plinth.modules import matrixsynapse, names
from plinth.views import AppView
from . import get_public_registration_status
@ -51,7 +50,8 @@ class SetupView(FormView):
context['title'] = matrixsynapse.name
context['description'] = matrixsynapse.description
context['domain_names'] = get_domain_names()
context['domain_names'] = names.components.DomainName.list_names(
'matrix-synapse-plinth')
return context

View File

@ -51,10 +51,8 @@ class MinetestAppView(AppView): # pylint: disable=too-many-ancestors
def get_context_data(self, *args, **kwargs):
"""Add service to the context data."""
context = super().get_context_data(*args, **kwargs)
# Filter out onion addresses and get a unique list of domains
domains = set(domain for domains in names.domains.values()
for domain in domains if not domain.endswith('.onion'))
context['domains'] = domains
context['domains'] = names.components.DomainName.list_names(
'minetest-plinth')
return context
def form_valid(self, form):

View File

@ -109,10 +109,7 @@ def get_keys(fingerprint=None):
['host-show-keys'] + fingerprint)
keys = json.loads(output)['keys']
domains = [
domain for domains_of_a_type in names.domains.values()
for domain in domains_of_a_type
]
domains = names.components.DomainName.list_names()
for key in keys.values():
key['imported_domains'] = set(key.get('imported_domains', []))
key['available_domains'] = set(key.get('available_domains', []))

View File

@ -22,8 +22,7 @@ from django.urls import reverse_lazy
from django.views.generic import FormView
from plinth.forms import DomainSelectionForm
from plinth.modules import tahoe
from plinth.utils import get_domain_names
from plinth.modules import names, tahoe
from plinth.views import AppView
@ -44,7 +43,8 @@ class TahoeSetupView(FormView):
context = super().get_context_data(**kwargs)
context['description'] = self.description
context['title'] = self.title
context['domain_names'] = get_domain_names()
context['domain_names'] = names.components.DomainName.list_names(
'tahoe-plinth')
return context

View File

@ -74,21 +74,6 @@ def is_user_admin(request, cached=False):
return user_is_admin
def get_domain_names():
"""Return the domain name(s)"""
from plinth.modules import names
domain_names = []
for domain_type, domains in names.domains.items():
if domain_type == 'hiddenservice':
continue
for domain in domains:
domain_names.append((domain, domain))
return domain_names
class YAMLFile(object):
"""A context management class for updating YAML files"""