[master/f20/rhel7] Change source spoke proxy handling to use local copy (#967805)

Vratislav Podzimek vpodzime at redhat.com
Tue Nov 12 07:19:05 UTC 2013


On Mon, 2013-11-11 at 16:21 -0800, Brian C. Lane wrote:
> From: "Brian C. Lane" <bcl at redhat.com>
> 
> The ProxyDialog was using self.data.method.proxy, but if the method has
> been changed that will be the wrong one to use.
> 
> Instead use a source spoke variable to keep track of the proxy url, pass
> this to the dialog for editing (or creation) and set it on the correct
> methods in _method_changed.
> ---
>  pyanaconda/ui/gui/spokes/source.py | 33 ++++++++++++++++++---------------
>  1 file changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/pyanaconda/ui/gui/spokes/source.py b/pyanaconda/ui/gui/spokes/source.py
> index e93e313..4ff558a 100644
> --- a/pyanaconda/ui/gui/spokes/source.py
> +++ b/pyanaconda/ui/gui/spokes/source.py
> @@ -70,8 +70,9 @@ class ProxyDialog(GUIObject):
>      mainWidgetName = "proxyDialog"
>      uiFile = "spokes/source.glade"
>  
> -    def __init__(self, data):
> +    def __init__(self, data, proxy_url):
>          GUIObject.__init__(self, data)
> +        self.proxyUrl = proxy_url
>  
>          self._proxyCheck = self.builder.get_object("enableProxyCheck")
>          self._proxyInfoBox = self.builder.get_object("proxyInfoBox")
> @@ -89,7 +90,7 @@ class ProxyDialog(GUIObject):
>          # If the user unchecked the proxy entirely, that means they want it
>          # disabled.
>          if not self._proxyCheck.get_active():
> -            self.data.method.proxy = ""
> +            self.proxyUrl = ""
>              self.window.destroy()
>              return
>  
> @@ -103,11 +104,11 @@ class ProxyDialog(GUIObject):
>  
>          try:
>              proxy = ProxyString(url=url, username=username, password=password)
> -            self.data.method.proxy = proxy.url
> +            self.proxyUrl = proxy.url
>          except ProxyStringError as e:
>              log.error("Failed to parse proxy for ProxyDialog Add - %s:%s@%s: %s", username, password, url, e)
>              # TODO - tell the user they entered an invalid proxy and let them retry
> -            self.data.method.proxy = ""
> +            self.proxyUrl = ""
>  
>          self.window.destroy()
>  
> @@ -120,8 +121,7 @@ class ProxyDialog(GUIObject):
>      def refresh(self):
>          GUIObject.refresh(self)
>  
> -
> -        if not (hasattr(self.data.method, "proxy") and self.data.method.proxy):
> +        if not self.proxyUrl:
>              self._proxyCheck.set_active(False)
>              self.on_proxy_enable_toggled(self._proxyCheck)
>              self._authCheck.set_active(False)
> @@ -129,14 +129,14 @@ class ProxyDialog(GUIObject):
>              return
>  
>          try:
> -            proxy = ProxyString(self.data.method.proxy)
> +            proxy = ProxyString(self.proxyUrl)
>              if proxy.username:
>                  self._proxyUsernameEntry.set_text(proxy.username)
>              if proxy.password:
>                  self._proxyPasswordEntry.set_text(proxy.password)
>              self._proxyURLEntry.set_text(proxy.noauth_url)
>          except ProxyStringError as e:
> -            log.error("Failed to parse proxy for ProxyDialog.refresh %s: %s", self.data.method.proxy, e)
> +            log.error("Failed to parse proxy for ProxyDialog.refresh %s: %s", self.proxyUrl, e)
>              return
>  
>          self._proxyCheck.set_active(True)
> @@ -293,6 +293,7 @@ class SourceSpoke(NormalSpoke):
>          self._currentIsoFile = None
>          self._ready = False
>          self._error = False
> +        self._proxyUrl = ""
>          self._proxyChange = False
>          self._cdrom = None
>  
> @@ -348,6 +349,7 @@ class SourceSpoke(NormalSpoke):
>          elif self._mirror_active():
>              # this preserves the url for later editing
>              self.data.method.method = None
> +            self.data.method.proxy = self._proxyUrl
>              if not old_source.method and self.payload.getBaseRepo(wait=True) and \
>                 not self._proxyChange:
>                  return False
> @@ -379,6 +381,7 @@ class SourceSpoke(NormalSpoke):
>                  return False
>  
>              self.data.method.method = "url"
> +            self.data.method.proxy = self._proxyUrl
>              if mirrorlist:
>                  self.data.method.mirrorlist = url
>                  self.data.method.url = ""
> @@ -703,6 +706,7 @@ class SourceSpoke(NormalSpoke):
>              self._urlEntry.set_sensitive(True)
>              self._urlEntry.set_text(proto[l:])
>              self._mirrorlistCheckbox.set_active(bool(self.data.method.mirrorlist))
> +            self._proxyUrl = self.data.method.proxy
>          elif self.data.method.method == "nfs":
>              self._networkButton.set_active(True)
>              self._protocolComboBox.set_active(PROTOCOL_NFS)
> @@ -730,6 +734,7 @@ class SourceSpoke(NormalSpoke):
>              else:
>                  self._networkButton.set_active(True)
>                  self.data.method.method = None
> +                self._proxyUrl = self.data.method.proxy
>  
>          self._setup_no_updates()
>  
> @@ -820,16 +825,14 @@ class SourceSpoke(NormalSpoke):
>                  self._verifyIsoButton.set_sensitive(True)
>  
>      def on_proxy_clicked(self, button):
> -        if not hasattr(self.data.method, "proxy"):
> -            old_proxy = None
> -        else:
> -            old_proxy = self.data.method.proxy
> -
> -        dialog = ProxyDialog(self.data)
> +        dialog = ProxyDialog(self.data, self._proxyUrl)
>          with enlightbox(self.window, dialog.window):
>              dialog.refresh()
>              dialog.run()
> -        self._proxyChange = old_proxy != self.data.method.proxy
> +
> +        if self._proxyUrl != dialog.proxyUrl:
> +            self._proxyChange = True
> +            self._proxyUrl = dialog.proxyUrl
>  
>      def on_verify_iso_clicked(self, button):
>          p = self._get_selected_partition()
ACK.

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list