def get_sorted_wifis(profile): """Get SSIDs from OS and merge with settings in DB.""" from vorta.models import WifiSettingModel if sys.platform == 'darwin': plist_path = '/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist' plist_file = open(plist_path, 'rb') wifis = plistlib.load(plist_file).get('KnownNetworks') if wifis is not None: for wifi in wifis.values(): timestamp = wifi.get('LastConnected', None) ssid = wifi['SSIDString'] db_wifi, created = WifiSettingModel.get_or_create( ssid=ssid, profile=profile.id, defaults={ 'last_connected': timestamp, 'allowed': True }) # update last connected time if not created and db_wifi.last_connected != timestamp: db_wifi.last_connected = timestamp db_wifi.save() # remove Wifis that were deleted in the system. deleted_wifis = WifiSettingModel.select() \ .where(WifiSettingModel.ssid.not_in([w['SSIDString'] for w in wifis.values()])) for wifi in deleted_wifis: wifi.delete_instance() return WifiSettingModel.select() \ .where(WifiSettingModel.profile == profile.id).order_by(-WifiSettingModel.last_connected)
def get_sorted_wifis(profile): """ Get Wifi networks known to the OS (only current one on macOS) and merge with networks from other profiles. Update last connected time. """ from vorta.models import WifiSettingModel # Pull networks known to OS and all other backup profiles system_wifis = get_network_status_monitor().get_known_wifis() from_other_profiles = WifiSettingModel.select() \ .where(WifiSettingModel.profile != profile.id).execute() for wifi in list(from_other_profiles) + system_wifis: db_wifi, created = WifiSettingModel.get_or_create( ssid=wifi.ssid, profile=profile.id, defaults={ 'last_connected': wifi.last_connected, 'allowed': True }) # Update last connected time if not created and db_wifi.last_connected != wifi.last_connected: db_wifi.last_connected = wifi.last_connected db_wifi.save() # Finally return list of networks and settings for that profile return WifiSettingModel.select() \ .where(WifiSettingModel.profile == profile.id).order_by(-WifiSettingModel.last_connected)
def get_sorted_wifis(profile): """Get SSIDs from OS and merge with settings in DB.""" from vorta.models import WifiSettingModel system_wifis = get_network_status_monitor().get_known_wifis() if system_wifis is None: # Don't show any networks if we can't get the current list return [] for wifi in system_wifis: db_wifi, created = WifiSettingModel.get_or_create( ssid=wifi.ssid, profile=profile.id, defaults={ 'last_connected': wifi.last_connected, 'allowed': True }) # update last connected time if not created and db_wifi.last_connected != wifi.last_connected: db_wifi.last_connected = wifi.last_connected db_wifi.save() # remove Wifis that were deleted in the system. deleted_wifis = WifiSettingModel.select() \ .where(WifiSettingModel.ssid.not_in([wifi.ssid for wifi in system_wifis])) for wifi in deleted_wifis: wifi.delete_instance() return WifiSettingModel.select() \ .where(WifiSettingModel.profile == profile.id).order_by(-WifiSettingModel.last_connected)