Mercurial > libervia-web
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""" |