Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/controlpanel/network/model.py
blob: cbe0473fd08253a6c1d7d87de6f9727e1f9cc6b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Copyright (C) 2008 One Laptop Per Child
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#

import dbus
from gettext import gettext as _

from sugar import profile
from hardware import hardwaremanager

NM_SERVICE_NAME = 'org.freedesktop.NetworkManager'
NM_SERVICE_PATH = '/org/freedesktop/NetworkManager'
NM_SERVICE_IFACE = 'org.freedesktop.NetworkManager'
NM_ASLEEP = 1

KEYWORDS = ['network', 'jabber', 'radio', 'server']

class ReadError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)

def get_jabber():
    pro = profile.get_profile()    
    return pro.jabber_server

def print_jabber():
    print get_jabber()

def set_jabber(server):
    """Set the jabber server
    server : e.g. 'olpc.collabora.co.uk'
    """
    pro = profile.get_profile()
    pro.jabber_server = server
    pro.jabber_registered = False
    pro.save()
    return 1

def get_radio():    
    bus = dbus.SystemBus()
    proxy = bus.get_object(NM_SERVICE_NAME, NM_SERVICE_PATH)
    nm = dbus.Interface(proxy, NM_SERVICE_IFACE)
    state = nm.getWirelessEnabled()	
    if state in (0, 1):
        return state
    else:
        raise ReadError(_('State is unknown.'))
	
def print_radio():
    print ('off', 'on')[get_radio()]
    
def set_radio(state):
    """Turn Radio 'on' or 'off'
    state : 'on/off'
    """    
    if state == 'on' or state == 1:
        bus = dbus.SystemBus()
        proxy = bus.get_object(NM_SERVICE_NAME, NM_SERVICE_PATH)
        nm = dbus.Interface(proxy, NM_SERVICE_IFACE)
        nm.setWirelessEnabled(True)        
    elif state == 'off' or state == 0:
        bus = dbus.SystemBus()
        proxy = bus.get_object(NM_SERVICE_NAME, NM_SERVICE_PATH)
        nm = dbus.Interface(proxy, NM_SERVICE_IFACE)
        nm.setWirelessEnabled(False)
    else:
        raise ValueError(_("Error in specified radio argument use on/off."))

    return 0

def clear_registration():
    """Clear the registration with the schoolserver
    """
    pro = profile.get_profile()
    pro.backup1 = None
    pro.save()
    return 1

def clear_networks():
    """Clear saved passwords and network configurations.
    """
    network_manager = hardwaremanager.get_network_manager()
    if not network_manager:
        return
    network_manager.nminfo.delete_all_networks()
    return 1