comparison src/server/utils.py @ 1113:cdd389ef97bc

server: code style reformatting using black
author Goffi <goffi@goffi.org>
date Fri, 29 Jun 2018 17:45:26 +0200
parents 63ed5f6bd4eb
children
comparison
equal deleted inserted replaced
1112:f287fc8bb31a 1113:cdd389ef97bc
20 from twisted.internet import reactor 20 from twisted.internet import reactor
21 from twisted.internet import defer 21 from twisted.internet import defer
22 from sat.core import exceptions 22 from sat.core import exceptions
23 from sat.core.log import getLogger 23 from sat.core.log import getLogger
24 import urllib 24 import urllib
25
25 log = getLogger(__name__) 26 log = getLogger(__name__)
26 27
27 28
28 def quote(value, safe='@'): 29 def quote(value, safe="@"):
29 """shortcut to quote an unicode value for URL""" 30 """shortcut to quote an unicode value for URL"""
30 return urllib.quote(value.encode('utf-8'), safe=safe) 31 return urllib.quote(value.encode("utf-8"), safe=safe)
31 32
32 33
33 class ProgressHandler(object): 34 class ProgressHandler(object):
34 """class to help the management of progressions""" 35 """class to help the management of progressions"""
36
35 handlers = {} 37 handlers = {}
36 38
37 def __init__(self, host, progress_id, profile): 39 def __init__(self, host, progress_id, profile):
38 self.host = host 40 self.host = host
39 self.progress_id = progress_id 41 self.progress_id = progress_id
42 @classmethod 44 @classmethod
43 def _signal(cls, name, progress_id, data, profile): 45 def _signal(cls, name, progress_id, data, profile):
44 handlers = cls.handlers 46 handlers = cls.handlers
45 if profile in handlers and progress_id in handlers[profile]: 47 if profile in handlers and progress_id in handlers[profile]:
46 handler_data = handlers[profile][progress_id] 48 handler_data = handlers[profile][progress_id]
47 timeout = handler_data[u'timeout'] 49 timeout = handler_data[u"timeout"]
48 if timeout.active(): 50 if timeout.active():
49 timeout.cancel() 51 timeout.cancel()
50 cb = handler_data[name] 52 cb = handler_data[name]
51 if cb is not None: 53 if cb is not None:
52 cb(data) 54 cb(data)
53 if name == u'started': 55 if name == u"started":
54 pass 56 pass
55 elif name == u'finished': 57 elif name == u"finished":
56 handler_data[u'deferred'].callback(data) 58 handler_data[u"deferred"].callback(data)
57 handler_data[u'instance'].unregister_handler() 59 handler_data[u"instance"].unregister_handler()
58 elif name == u'error': 60 elif name == u"error":
59 handler_data[u'deferred'].errback(Exception(data)) 61 handler_data[u"deferred"].errback(Exception(data))
60 handler_data[u'instance'].unregister_handler() 62 handler_data[u"instance"].unregister_handler()
61 else: 63 else:
62 log.error(u'unexpected signal: {name}'.format(name=name)) 64 log.error(u"unexpected signal: {name}".format(name=name))
63 65
64 def _timeout(self): 66 def _timeout(self):
65 log.warning(_(u"No progress received, cancelling handler: {progress_id} [{profile}]").format( 67 log.warning(
66 progress_id = self.progress_id, profile = self.profile)) 68 _(
69 u"No progress received, cancelling handler: {progress_id} [{profile}]"
70 ).format(progress_id=self.progress_id, profile=self.profile)
71 )
67 72
68 def unregister_handler(self): 73 def unregister_handler(self):
69 """remove a previously registered handler""" 74 """remove a previously registered handler"""
70 try: 75 try:
71 del self.handlers[self.profile][self.progress_id] 76 del self.handlers[self.profile][self.progress_id]
72 except KeyError: 77 except KeyError:
73 log.warning(_(u"Trying to remove unknown handler: {progress_id} [{profile}]").format( 78 log.warning(
74 progress_id = self.progress_id, profile = self.profile)) 79 _(u"Trying to remove unknown handler: {progress_id} [{profile}]").format(
80 progress_id=self.progress_id, profile=self.profile
81 )
82 )
75 else: 83 else:
76 if not self.handlers[self.profile]: 84 if not self.handlers[self.profile]:
77 self.handlers[self.profile] 85 self.handlers[self.profile]
78 86
79 def register(self, started_cb=None, finished_cb=None, error_cb=None, timeout=30): 87 def register(self, started_cb=None, finished_cb=None, error_cb=None, timeout=30):
85 @param timeout(int): progress time out 93 @param timeout(int): progress time out
86 if nothing happen in this progression during this delay, 94 if nothing happen in this progression during this delay,
87 an exception is raised 95 an exception is raised
88 @return (D(dict[unicode,unicode])): a deferred called when progression is finished 96 @return (D(dict[unicode,unicode])): a deferred called when progression is finished
89 """ 97 """
90 handler_data = self.handlers.setdefault(self.profile, {}).setdefault(self.progress_id, {}) 98 handler_data = self.handlers.setdefault(self.profile, {}).setdefault(
99 self.progress_id, {}
100 )
91 if handler_data: 101 if handler_data:
92 raise exceptions.ConflictError(u"There is already one handler for this progression") 102 raise exceptions.ConflictError(
93 handler_data[u'instance'] = self 103 u"There is already one handler for this progression"
94 deferred = handler_data[u'deferred'] = defer.Deferred() 104 )
95 handler_data[u'started'] = started_cb 105 handler_data[u"instance"] = self
96 handler_data[u'finished'] = finished_cb 106 deferred = handler_data[u"deferred"] = defer.Deferred()
97 handler_data[u'error'] = error_cb 107 handler_data[u"started"] = started_cb
98 handler_data[u'timeout'] = reactor.callLater(timeout, self._timeout) 108 handler_data[u"finished"] = finished_cb
109 handler_data[u"error"] = error_cb
110 handler_data[u"timeout"] = reactor.callLater(timeout, self._timeout)
99 return deferred 111 return deferred
100 112
101 113
102 class SubPage(unicode): 114 class SubPage(unicode):
103 """use to mark subpages when generating a page path""" 115 """use to mark subpages when generating a page path"""