/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to avatarproviders.py

  • Committer: Jelmer Vernooij
  • Date: 2011-10-30 08:07:30 UTC
  • mfrom: (739 trunk)
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: jelmer@samba.org-20111030080730-512dn70l3sxhsevn
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
        threading.Thread.__init__(self)
54
54
        self.__stop = threading.Event()
55
55
        self.__queue = Queue.Queue()
56
 
 
57
56
        self.__provider_method = provider_method
 
57
        self.__callback_method = None
 
58
        self.__error_method = None
58
59
 
59
60
    def stop(self):
60
61
        """ Stop this worker """
69
70
        return not self.__stop.is_set()
70
71
 
71
72
    def set_callback_method(self, method):
72
 
        """ Fire the given callback method when treatment is finished """
 
73
        """Fire the given callback method when treatment is finished."""
73
74
        self.__callback_method = method
74
75
 
 
76
    def set_error_method(self, method):
 
77
        """Fire the given callback when retrieving a avatar fails."""
 
78
        self.__error_method = method
 
79
 
75
80
    def queue(self, id_field):
76
81
        """Put in Queue the id_field to treat in the thread.
77
82
 
90
95
                # Call provider method to get fields to pass in the request
91
96
                url = self.__provider_method(id_field)
92
97
                # Execute the request
93
 
                response = urllib2.urlopen(url)
94
 
                # Fire the callback method
95
 
                if not self.__callback_method is None:
96
 
                    self.__callback_method(response, id_field)
 
98
                try:
 
99
                    response = urllib2.urlopen(url)
 
100
                except urllib2.URLError, e:
 
101
                    if self.__error_method is not None:
 
102
                        self.__error_method(e)
 
103
                else:
 
104
                    # Fire the callback method
 
105
                    if not self.__callback_method is None:
 
106
                        self.__callback_method(response, id_field)
97
107
                self.__queue.task_done()
98
108
            except Queue.Empty:
99
109
                # There is no more work to do.