Mercurial > libervia-backend
comparison sat/plugins/plugin_misc_merge_requests.py @ 4037:524856bd7b19
massive refactoring to switch from camelCase to snake_case:
historically, Libervia (SàT before) was using camelCase as allowed by PEP8 when using a
pre-PEP8 code, to use the same coding style as in Twisted.
However, snake_case is more readable and it's better to follow PEP8 best practices, so it
has been decided to move on full snake_case. Because Libervia has a huge codebase, this
ended with a ugly mix of camelCase and snake_case.
To fix that, this patch does a big refactoring by renaming every function and method
(including bridge) that are not coming from Twisted or Wokkel, to use fully snake_case.
This is a massive change, and may result in some bugs.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 08 Apr 2023 13:54:42 +0200 |
parents | a0666f17f300 |
children |
comparison
equal
deleted
inserted
replaced
4036:c4464d7ae97b | 4037:524856bd7b19 |
---|---|
67 | 67 |
68 def __init__(self, host): | 68 def __init__(self, host): |
69 log.info(_("Merge requests plugin initialization")) | 69 log.info(_("Merge requests plugin initialization")) |
70 self.host = host | 70 self.host = host |
71 self._s = self.host.plugins["XEP-0346"] | 71 self._s = self.host.plugins["XEP-0346"] |
72 self.namespace = self._s.getSubmittedNS(APP_NS_MERGE_REQUESTS) | 72 self.namespace = self._s.get_submitted_ns(APP_NS_MERGE_REQUESTS) |
73 host.registerNamespace('merge_requests', self.namespace) | 73 host.register_namespace('merge_requests', self.namespace) |
74 self._p = self.host.plugins["XEP-0060"] | 74 self._p = self.host.plugins["XEP-0060"] |
75 self._t = self.host.plugins["LISTS"] | 75 self._t = self.host.plugins["LISTS"] |
76 self._handlers = {} | 76 self._handlers = {} |
77 self._handlers_list = [] # handlers sorted by priority | 77 self._handlers_list = [] # handlers sorted by priority |
78 self._type_handlers = {} # data type => handler map | 78 self._type_handlers = {} # data type => handler map |
79 host.bridge.addMethod("mergeRequestsGet", ".plugin", | 79 host.bridge.add_method("merge_requests_get", ".plugin", |
80 in_sign='ssiassss', out_sign='s', | 80 in_sign='ssiassss', out_sign='s', |
81 method=self._get, | 81 method=self._get, |
82 async_=True | 82 async_=True |
83 ) | 83 ) |
84 host.bridge.addMethod("mergeRequestSet", ".plugin", | 84 host.bridge.add_method("merge_request_set", ".plugin", |
85 in_sign='ssssa{sas}ssss', out_sign='s', | 85 in_sign='ssssa{sas}ssss', out_sign='s', |
86 method=self._set, | 86 method=self._set, |
87 async_=True) | 87 async_=True) |
88 host.bridge.addMethod("mergeRequestsSchemaGet", ".plugin", | 88 host.bridge.add_method("merge_requests_schema_get", ".plugin", |
89 in_sign='sss', out_sign='s', | 89 in_sign='sss', out_sign='s', |
90 method=lambda service, nodeIdentifier, profile_key: | 90 method=lambda service, nodeIdentifier, profile_key: |
91 self._s._getUISchema(service, | 91 self._s._get_ui_schema(service, |
92 nodeIdentifier, | 92 nodeIdentifier, |
93 default_node=self.namespace, | 93 default_node=self.namespace, |
94 profile_key=profile_key), | 94 profile_key=profile_key), |
95 async_=True) | 95 async_=True) |
96 host.bridge.addMethod("mergeRequestParseData", ".plugin", | 96 host.bridge.add_method("merge_request_parse_data", ".plugin", |
97 in_sign='ss', out_sign='aa{ss}', | 97 in_sign='ss', out_sign='aa{ss}', |
98 method=self._parseData, | 98 method=self._parse_data, |
99 async_=True) | 99 async_=True) |
100 host.bridge.addMethod("mergeRequestsImport", ".plugin", | 100 host.bridge.add_method("merge_requests_import", ".plugin", |
101 in_sign='ssssa{ss}s', out_sign='', | 101 in_sign='ssssa{ss}s', out_sign='', |
102 method=self._import, | 102 method=self._import, |
103 async_=True | 103 async_=True |
104 ) | 104 ) |
105 | 105 |
139 continue | 139 continue |
140 self._type_handlers[data_type] = self._handlers[name] | 140 self._type_handlers[data_type] = self._handlers[name] |
141 | 141 |
142 def serialise(self, get_data): | 142 def serialise(self, get_data): |
143 tickets_xmlui, metadata, items_patches = get_data | 143 tickets_xmlui, metadata, items_patches = get_data |
144 tickets_xmlui_s, metadata = self._p.transItemsData((tickets_xmlui, metadata)) | 144 tickets_xmlui_s, metadata = self._p.trans_items_data((tickets_xmlui, metadata)) |
145 return data_format.serialise({ | 145 return data_format.serialise({ |
146 "items": tickets_xmlui_s, | 146 "items": tickets_xmlui_s, |
147 "metadata": metadata, | 147 "metadata": metadata, |
148 "items_patches": items_patches, | 148 "items_patches": items_patches, |
149 }) | 149 }) |
150 | 150 |
151 def _get(self, service='', node='', max_items=10, item_ids=None, sub_id=None, | 151 def _get(self, service='', node='', max_items=10, item_ids=None, sub_id=None, |
152 extra="", profile_key=C.PROF_KEY_NONE): | 152 extra="", profile_key=C.PROF_KEY_NONE): |
153 extra = data_format.deserialise(extra) | 153 extra = data_format.deserialise(extra) |
154 client, service, node, max_items, extra, sub_id = self._s.prepareBridgeGet( | 154 client, service, node, max_items, extra, sub_id = self._s.prepare_bridge_get( |
155 service, node, max_items, sub_id, extra, profile_key) | 155 service, node, max_items, sub_id, extra, profile_key) |
156 d = self.get(client, service, node or None, max_items, item_ids, sub_id or None, | 156 d = self.get(client, service, node or None, max_items, item_ids, sub_id or None, |
157 extra.rsm_request, extra.extra) | 157 extra.rsm_request, extra.extra) |
158 d.addCallback(self.serialise) | 158 d.addCallback(self.serialise) |
159 return d | 159 return d |
176 if extra is None: | 176 if extra is None: |
177 extra = {} | 177 extra = {} |
178 # XXX: Q&D way to get list for labels when displaying them, but text when we | 178 # XXX: Q&D way to get list for labels when displaying them, but text when we |
179 # have to modify them | 179 # have to modify them |
180 if C.bool(extra.get('labels_as_list', C.BOOL_FALSE)): | 180 if C.bool(extra.get('labels_as_list', C.BOOL_FALSE)): |
181 filters = {'labels': self._s.textbox2ListFilter} | 181 filters = {'labels': self._s.textbox_2_list_filter} |
182 else: | 182 else: |
183 filters = {} | 183 filters = {} |
184 tickets_xmlui, metadata = yield defer.ensureDeferred( | 184 tickets_xmlui, metadata = yield defer.ensureDeferred( |
185 self._s.getDataFormItems( | 185 self._s.get_data_form_items( |
186 client, | 186 client, |
187 service, | 187 service, |
188 node, | 188 node, |
189 max_items=max_items, | 189 max_items=max_items, |
190 item_ids=item_ids, | 190 item_ids=item_ids, |
197 parsed_patches = [] | 197 parsed_patches = [] |
198 if extra.get('parse', False): | 198 if extra.get('parse', False): |
199 for ticket in tickets_xmlui: | 199 for ticket in tickets_xmlui: |
200 request_type = ticket.named_widgets[FIELD_DATA_TYPE].value | 200 request_type = ticket.named_widgets[FIELD_DATA_TYPE].value |
201 request_data = ticket.named_widgets[FIELD_DATA].value | 201 request_data = ticket.named_widgets[FIELD_DATA].value |
202 parsed_data = yield self.parseData(request_type, request_data) | 202 parsed_data = yield self.parse_data(request_type, request_data) |
203 parsed_patches.append(parsed_data) | 203 parsed_patches.append(parsed_data) |
204 defer.returnValue((tickets_xmlui, metadata, parsed_patches)) | 204 defer.returnValue((tickets_xmlui, metadata, parsed_patches)) |
205 | 205 |
206 def _set(self, service, node, repository, method, values, schema=None, item_id=None, | 206 def _set(self, service, node, repository, method, values, schema=None, item_id=None, |
207 extra="", profile_key=C.PROF_KEY_NONE): | 207 extra="", profile_key=C.PROF_KEY_NONE): |
208 client, service, node, schema, item_id, extra = self._s.prepareBridgeSet( | 208 client, service, node, schema, item_id, extra = self._s.prepare_bridge_set( |
209 service, node, schema, item_id, extra, profile_key) | 209 service, node, schema, item_id, extra, profile_key) |
210 d = defer.ensureDeferred( | 210 d = defer.ensureDeferred( |
211 self.set( | 211 self.set( |
212 client, service, node, repository, method, values, schema, | 212 client, service, node, repository, method, values, schema, |
213 item_id or None, extra, deserialise=True | 213 item_id or None, extra, deserialise=True |
288 | 288 |
289 item_id = await self._t.set(client, service, node, values, schema, item_id, extra, | 289 item_id = await self._t.set(client, service, node, values, schema, item_id, extra, |
290 deserialise, form_ns=APP_NS_MERGE_REQUESTS) | 290 deserialise, form_ns=APP_NS_MERGE_REQUESTS) |
291 return item_id | 291 return item_id |
292 | 292 |
293 def _parseData(self, data_type, data): | 293 def _parse_data(self, data_type, data): |
294 d = self.parseData(data_type, data) | 294 d = self.parse_data(data_type, data) |
295 d.addCallback(lambda parsed_patches: | 295 d.addCallback(lambda parsed_patches: |
296 {key: str(value) for key, value in parsed_patches.items()}) | 296 {key: str(value) for key, value in parsed_patches.items()}) |
297 return d | 297 return d |
298 | 298 |
299 def parseData(self, data_type, data): | 299 def parse_data(self, data_type, data): |
300 """Parse a merge request data according to type | 300 """Parse a merge request data according to type |
301 | 301 |
302 @param data_type(unicode): type of the data to parse | 302 @param data_type(unicode): type of the data to parse |
303 @param data(unicode): data to parse | 303 @param data(unicode): data to parse |
304 @return(list[dict[unicode, unicode]]): parsed data | 304 @return(list[dict[unicode, unicode]]): parsed data |
312 .format(type=data_type)) | 312 .format(type=data_type)) |
313 return defer.maybeDeferred(handler.handler.parse, data, data_type) | 313 return defer.maybeDeferred(handler.handler.parse, data, data_type) |
314 | 314 |
315 def _import(self, repository, item_id, service=None, node=None, extra=None, | 315 def _import(self, repository, item_id, service=None, node=None, extra=None, |
316 profile_key=C.PROF_KEY_NONE): | 316 profile_key=C.PROF_KEY_NONE): |
317 client = self.host.getClient(profile_key) | 317 client = self.host.get_client(profile_key) |
318 service = jid.JID(service) if service else None | 318 service = jid.JID(service) if service else None |
319 d = self.import_request(client, repository, item_id, service, node or None, | 319 d = self.import_request(client, repository, item_id, service, node or None, |
320 extra=extra or None) | 320 extra=extra or None) |
321 return d | 321 return d |
322 | 322 |
323 @defer.inlineCallbacks | 323 @defer.inlineCallbacks |
324 def import_request(self, client, repository, item, service=None, node=None, | 324 def import_request(self, client, repository, item, service=None, node=None, |
325 extra=None): | 325 extra=None): |
326 """Import a merge request in specified directory | 326 """import a merge request in specified directory |
327 | 327 |
328 @param repository(unicode): path to the repository where the code stands | 328 @param repository(unicode): path to the repository where the code stands |
329 """ | 329 """ |
330 if not node: | 330 if not node: |
331 node = self.namespace | 331 node = self.namespace |
332 tickets_xmlui, metadata = yield defer.ensureDeferred( | 332 tickets_xmlui, metadata = yield defer.ensureDeferred( |
333 self._s.getDataFormItems( | 333 self._s.get_data_form_items( |
334 client, | 334 client, |
335 service, | 335 service, |
336 node, | 336 node, |
337 max_items=1, | 337 max_items=1, |
338 item_ids=[item], | 338 item_ids=[item], |