Attachments you submit will be routed for moderation. If you have an account, please log in first.

Ticket #1673: 0001-fix-discard-history-1673-for-uruguay-consensus.patch

File 0001-fix-discard-history-1673-for-uruguay-consensus.patch, 7.3 KB (added by quozl, 3 years ago)
  • extensions/cpsection/network/model.py

    From 954dc489c4a75991ccb385efdee41ce3e1777a33 Mon Sep 17 00:00:00 2001
    From: James Cameron <quozl@laptop.org>
    Date: Wed, 25 Aug 2010 15:49:27 +1000
    Subject: [PATCH] fix discard history #1673
    
    User interface changes:
    
    - enable the discard network history button in the network control
      panel, which also now forces a disconnect, and will be insensitive
      if there are no networks to be discarded, (rather than the button
      doing nothing),
    
    Design changes:
    
    - expose trusted access point list count for network control panel,
    
    - changes to the autoconnect connection flag are now cascaded to
      NetworkManager using the Updated signal,
    
    - discarding network history is now cascaded to NetworkManager using
      the Removed signal,
    
    - factoring of connections.cfg path and empty file creation,
    
    Tested extensively on Sugar 0.84.
    Not tested on Sugar 0.88.
    
    References:
    
        http://dev.laptop.org/ticket/9977 (fixes a workaround)
        http://bugs.sugarlabs.org/ticket/1673
    ---
     extensions/cpsection/network/model.py |    6 +++-
     extensions/cpsection/network/view.py  |    8 ++++-
     src/jarabe/model/network.py           |   58 +++++++++++++++++++++++++++------
     3 files changed, 60 insertions(+), 12 deletions(-)
    
    diff --git a/extensions/cpsection/network/model.py b/extensions/cpsection/network/model.py
    index e1c3dab..eed0b03 100644
    a b  
    1717 
    1818import dbus 
    1919from gettext import gettext as _ 
     20from jarabe.model import network 
    2021import gconf 
    2122 
    2223_NM_SERVICE = 'org.freedesktop.NetworkManager' 
     
    116117def clear_networks(): 
    117118    """Clear saved passwords and network configurations. 
    118119    """ 
    119     pass 
     120    network.clear_wifi_connections() 
     121 
     122def count_networks(): 
     123    return network.count_wifi_connections() 
    120124 
    121125def get_publish_information(): 
    122126    client = gconf.client_get_default() 
  • extensions/cpsection/network/view.py

    diff --git a/extensions/cpsection/network/view.py b/extensions/cpsection/network/view.py
    index 588daeb..b0f1336 100644
    a b  
    104104        self._clear_history_button = gtk.Button() 
    105105        self._clear_history_button.set_label(_('Discard network history')) 
    106106        box_clear_history.pack_start(self._clear_history_button, expand=False) 
     107        if self._model.count_networks() == 0: 
     108            self._clear_history_button.set_sensitive(False) 
    107109        self._clear_history_button.show() 
    108110        box_wireless.pack_start(box_clear_history, expand=False) 
    109111        box_clear_history.show() 
     
    217219            self._radio_alert.props.msg = detail 
    218220            self._radio_valid = False 
    219221        else: 
    220             self._radio_valid = True             
     222            self._radio_valid = True 
     223            if self._model.count_networks() != 0: 
     224                self._clear_history_button.set_sensitive(True) 
    221225 
    222226        self._validate() 
    223227        return False 
     
    248252 
    249253    def __network_configuration_reset_cb(self, widget): 
    250254        self._model.clear_networks() 
     255        if self._model.count_networks() == 0: 
     256            self._clear_history_button.set_sensitive(False) 
  • src/jarabe/model/network.py

    diff --git a/src/jarabe/model/network.py b/src/jarabe/model/network.py
    index 66d86d8..2c0afe3 100644
    a b  
    508508        self.secrets_request.send(self, connection=sender, 
    509509                                  response=kwargs['response']) 
    510510 
     511    def clear_wifi_connections(self): 
     512        for uuid in self.connections.keys(): 
     513            conn = self.connections[uuid] 
     514            if conn.type == NM_CONNECTION_TYPE_802_11_WIRELESS: 
     515                conn.Removed() 
     516                self.connections.pop(uuid) 
     517 
    511518class SecretsResponse(object): 
    512519    ''' Intermediate object to report the secrets from the dialog 
    513520    back to the connection object and which will inform NM 
     
    536543        self._settings = settings 
    537544        self._secrets = secrets 
    538545 
     546    @dbus.service.signal(dbus_interface=NM_CONNECTION_IFACE, 
     547                         signature='') 
     548    def Removed(self): 
     549        pass 
     550 
     551    @dbus.service.signal(dbus_interface=NM_CONNECTION_IFACE, 
     552                         signature='a{sa{sv}}') 
     553    def Updated(self, settings): 
     554        pass 
     555 
    539556    def set_connected(self): 
    540557        if self._settings.connection.type == NM_CONNECTION_TYPE_GSM: 
    541558            self._settings.connection.timestamp = int(time.time()) 
     
    544561                self._settings.connection.autoconnect = True 
    545562                self._settings.connection.timestamp = int(time.time()) 
    546563                if self._settings.connection.type == NM_CONNECTION_TYPE_802_11_WIRELESS: 
     564                    self.Updated(self._settings.get_dict()) 
    547565                    self.save() 
    548566 
     567    def set_disconnected(self): 
     568        if self._settings.connection.type != NM_CONNECTION_TYPE_GSM and \ 
     569               self._settings.connection.autoconnect: 
     570            self._settings.connection.autoconnect = False 
     571            self._settings.connection.timestamp = None 
     572            self.Updated(self._settings.get_dict()) 
     573            self.save() 
     574 
    549575    def set_secrets(self, secrets): 
    550576        self._secrets = secrets 
    551577        if self._settings.connection.type == NM_CONNECTION_TYPE_802_11_WIRELESS: 
     
    555581        return self._settings 
    556582 
    557583    def save(self): 
    558         profile_path = env.get_profile_path() 
    559         config_path = os.path.join(profile_path, 'nm', 'connections.cfg') 
     584        config_path = get_wifi_connections_path() 
    560585 
    561586        config = ConfigParser.ConfigParser() 
    562587        try: 
     
    777802    _nm_settings.add_connection(uuid, conn) 
    778803    return conn 
    779804 
    780 def load_wifi_connections(): 
     805def get_wifi_connections_path(): 
    781806    profile_path = env.get_profile_path() 
    782     config_path = os.path.join(profile_path, 'nm', 'connections.cfg') 
     807    return os.path.join(profile_path, 'nm', 'connections.cfg') 
    783808 
    784     config = ConfigParser.ConfigParser() 
     809def create_wifi_connections(config_path): 
     810    if not os.path.exists(os.path.dirname(config_path)): 
     811        os.makedirs(os.path.dirname(config_path), 0755) 
     812    f = open(config_path, 'w') 
     813    f.close() 
     814 
     815def load_wifi_connections(): 
     816    config_path = get_wifi_connections_path() 
    785817 
    786818    if not os.path.exists(config_path): 
    787         if not os.path.exists(os.path.dirname(config_path)): 
    788             os.makedirs(os.path.dirname(config_path), 0755) 
    789         f = open(config_path, 'w') 
    790         config.write(f) 
    791         f.close() 
     819        create_wifi_connections(config_path) 
    792820 
     821    config = ConfigParser.ConfigParser() 
    793822    try: 
    794823        if not config.read(config_path): 
    795824            logging.error('Error reading the nm config file') 
     
    895924 
    896925    logging.debug('There is no gsm connection in the NMSettings.') 
    897926    return None 
     927 
     928def count_wifi_connections(): 
     929    return len(get_settings().connections) 
     930 
     931def clear_wifi_connections(): 
     932    _nm_settings.clear_wifi_connections() 
     933 
     934    config_path = get_wifi_connections_path() 
     935    create_wifi_connections(config_path)