remove login model/controller/view from subiquitycore

long ago subsumed into other code
This commit is contained in:
Michael Hudson-Doyle 2019-03-07 14:01:52 +13:00
parent 30a028b651
commit d0c41469a7
8 changed files with 1 additions and 222 deletions

View File

@ -16,12 +16,10 @@
""" console-conf controllers """
from .identity import IdentityController
from subiquitycore.controllers.login import LoginController
from subiquitycore.controllers.network import NetworkController
from .welcome import WelcomeController
__all__ = [
'IdentityController',
'LoginController',
'NetworkController',
'WelcomeController',
]

View File

@ -20,7 +20,6 @@ from .installprogress import InstallProgressController
from .keyboard import KeyboardController
from .proxy import ProxyController
from .mirror import MirrorController
from subiquitycore.controllers.login import LoginController
from subiquitycore.controllers.network import NetworkController
from .snaplist import SnapListController
from .ssh import SSHController
@ -33,7 +32,6 @@ __all__ = [
'KeyboardController',
'ProxyController',
'MirrorController',
'LoginController',
'NetworkController',
'SnapListController',
'SSHController',

View File

@ -1,36 +0,0 @@
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from subiquitycore.ui.views import LoginView
from subiquitycore.models import LoginModel
from subiquitycore.controller import BaseController
class LoginController(BaseController):
def __init__(self, common):
super().__init__(common)
self.model = LoginModel()
def default(self):
title = "Configuration Complete"
excerpt = "Your device is now configured. Login details below."
self.ui.set_header(title, excerpt)
view = LoginView(self.model, self.signal, self.model.user)
self.ui.set_body(view)
def cancel(self):
pass

View File

@ -239,7 +239,6 @@ class Application:
# "Filesystem",
# "Identity",
# "InstallProgress",
# "Login",
# ]
# The 'next-screen' and 'prev-screen' signals move through the list of
# controllers in order, calling the default method on the controller

View File

@ -14,6 +14,5 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from .identity import IdentityModel
from .login import LoginModel
from .network import NetworkModel
__all__ = ['IdentityModel', 'LoginModel', 'NetworkModel']
__all__ = ['IdentityModel', 'NetworkModel']

View File

@ -1,49 +0,0 @@
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
log = logging.getLogger('subiquitycore.login')
class LoginModel(object):
""" Model representing Final login screen
"""
signals = [
("Login view",
'menu:login:main',
'login')
]
configured_logins = [
'local',
'ssh'
]
def get_signals(self):
return self.signals
def get_menu(self):
return self.configured_logins
def get_signal_by_name(self, selection):
for x, y, z in self.get_menu():
if x == selection:
return y
def __repr__(self):
return "<Configured: {}>".format(self.configured_logins)

View File

@ -13,12 +13,9 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from .login import LoginView
from .network_default_route import NetworkSetDefaultRouteView
from .network import NetworkView
__all__ = [
'LoginView',
'NetworkBondInterfacesView',
'NetworkSetDefaultRouteView',
'NetworkView',
]

View File

@ -1,127 +0,0 @@
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" Login
Login provides user with language selection
"""
import logging
from urwid import Text
from subiquitycore.ui.buttons import done_btn
from subiquitycore.ui.container import Pile, ListBox
from subiquitycore.ui.utils import Padding
from subiquitycore.view import BaseView
log = logging.getLogger("subiquitycore.views.login")
class LoginView(BaseView):
def __init__(self, model, controller, ifaces):
self.model = model
self.controller = controller
self.ifaces = ifaces
self.items = []
self.body = [
Padding.line_break(""),
Padding.line_break(""),
Padding.line_break(""),
Padding.center_79(self._build_model_inputs()),
Padding.line_break(""),
Padding.fixed_10(self._build_buttons())
]
super().__init__(ListBox(self.body))
def _build_buttons(self):
self.buttons = [
done_btn(on_press=self.done),
]
return Pile(self.buttons)
def auth_name(self, idstr):
if idstr is None:
return None
# lp:<id>
# gh:<id>
# sso:<id>
auth_type = idstr.split(":")[0]
auth_to_name = {
'lp': 'Launchpad',
'gh': 'Github',
'sso': 'Ubuntu SSO'
}
return auth_to_name.get(auth_type, 'Unknown Authentication')
def _build_model_inputs(self):
"""
This device is registered to Ryan Harper. Ryan Harper added
a user, raharper, to the device for local access on the console.
Remote access was enabled via authentication with Launchpad as
lp:raharper and public ssh keys were added to the system for
remote access.
Ryan Harper can remotely connect to this system via SSH:
ssh rharper@192.168.11.58
ssh rharper@192.168.11.44
"""
local_tpl = (
"This device is registered to {realname}. {realname} added a"
" user, <{username}> to the device for access.")
remote_tpl = (
"\n\nRemote access was enabled via authentication with {auth} user"
" <{ssh_import_id}>.\nPublic SSH keys were added to the device "
"for remote access.\n\n{realname} can connect remotely to this "
"device via SSH:")
sl = []
ssh = []
user = self.model.user
login_info = {
'realname': user.realname,
'username': user.username,
}
login_text = local_tpl.format(**login_info)
if user.ssh_import_id:
login_info.update({
'auth': self.auth_name(user.ssh_import_id),
'ssh_import_id': user.ssh_import_id.split(":")[-1]
})
login_text += remote_tpl.format(**login_info)
ips = []
for dev in self.ifaces:
for addr in dev.actual_ip_addresses:
ips.append(addr)
for ip in ips:
ssh_iface = " ssh %s@%s" % (user.username, ip)
ssh += [Padding.center_50(Text(ssh_iface))]
print(login_info)
sl += [Text(login_text),
Padding.line_break("")] + ssh
return Pile(sl)
def done(self, button):
self.controller.login_done()