Mercurial > libervia-backend
diff src/plugins/plugin_misc_merge_requests.py @ 2471:544c4d2fec45
plugins schema, merge_requests, tickets*: factorisation
Dode common in plugins using schema have been factorised in pubsub schema plugin, and filters users in tickets handling have been renamed in a more generic way and put there too.
"reporter*" fields in tickets have been renamed to "author*" as it is a more generic term which can be used elsewhere.
The use of new utils.partial function make easy the creation of simple plugins using schema.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 12 Jan 2018 15:58:54 +0100 |
parents | 637ac234424f |
children | 3f0a3a0ed290 |
line wrap: on
line diff
--- a/src/plugins/plugin_misc_merge_requests.py Fri Jan 12 15:45:37 2018 +0100 +++ b/src/plugins/plugin_misc_merge_requests.py Fri Jan 12 15:58:54 2018 +0100 @@ -20,10 +20,9 @@ from sat.core.i18n import _ from sat.core.constants import Const as C from sat.core import exceptions -from twisted.words.protocols.jabber import jid from twisted.internet import defer -from wokkel import generic from collections import namedtuple +from sat.tools import utils from sat.core.log import getLogger log = getLogger(__name__) @@ -34,7 +33,7 @@ C.PI_IMPORT_NAME: "MERGE_REQUESTS", C.PI_TYPE: "EXP", C.PI_PROTOCOLS: [], - C.PI_DEPENDENCIES: ["XEP-0060", "PUBSUB_SCHEMA", "TICKETS"], + C.PI_DEPENDENCIES: ["XEP-0060", "PUBSUB_SCHEMA"], C.PI_MAIN: "MergeRequests", C.PI_HANDLER: "no", C.PI_DESCRIPTION: _("""Merge requests management plugin""") @@ -69,7 +68,6 @@ host.registerNamespace('merge_requests', NS_MERGE_REQUESTS) self._p = self.host.plugins["XEP-0060"] self._s = self.host.plugins["PUBSUB_SCHEMA"] - self._t = self.host.plugins["TICKETS"] self._handlers = {} self._handlers_list = [] # handlers sorted by priority self._type_handlers = {} # data type => handler map @@ -84,7 +82,7 @@ async=True) host.bridge.addMethod("mergeRequestsSchemaGet", ".plugin", in_sign='sss', out_sign='s', - method=self._getSchema, + method=utils.partial(self._s._getUISchema, default_node=NS_MERGE_REQUESTS), async=True) host.bridge.addMethod("mergeRequestParseData", ".plugin", in_sign='ss', out_sign='aa{ss}', @@ -127,12 +125,9 @@ self._type_handlers[data_type] = self._handlers[name] def _get(self, service='', node='', max_items=10, item_ids=None, sub_id=None, extra_dict=None, profile_key=C.PROF_KEY_NONE): - client = self.host.getClient(profile_key) - service = jid.JID(service) if service else None - max_items = None if max_items == C.NO_LIMIT else max_items if extra_dict and 'parse' in extra_dict: extra_dict['parse'] = C.bool(extra_dict['parse']) - extra = self._p.parseExtra(extra_dict) + client, service, node, max_items, extra, sub_id = self._s.prepareBridgeGet(service, node, max_items, sub_id, extra_dict, profile_key) d = self.get(client, service, node or None, max_items, item_ids, sub_id or None, extra.rsm_request, extra.extra) d.addCallback(lambda (tickets, metadata, parsed_patches): ( self._p.serItemsData((tickets, metadata)) + @@ -153,7 +148,16 @@ """ if not node: node = NS_MERGE_REQUESTS - tickets_xmlui, metadata = yield self._t.get(client, service, node, max_items, item_ids, sub_id, rsm_request, extra, form_ns=NS_MERGE_REQUESTS) + tickets_xmlui, metadata = yield self._s.getDataFormItems( + client, + service, + node, + max_items=max_items, + item_ids=item_ids, + sub_id=sub_id, + rsm_request=rsm_request, + extra=extra, + form_ns=NS_MERGE_REQUESTS) parsed_patches = [] if extra.get('parse', False): for ticket in tickets_xmlui: @@ -164,14 +168,7 @@ defer.returnValue((tickets_xmlui, metadata, parsed_patches)) def _set(self, service, node, repository, method, values, schema=None, item_id=None, extra=None, profile_key=C.PROF_KEY_NONE): - client = self.host.getClient(profile_key) - service = None if not service else jid.JID(service) - if extra and 'update' in extra: - extra['update'] = C.bool(extra['update']) - if schema: - schema = generic.parseXml(schema.encode('utf-8')) - else: - schema = None + client, service, schema, extra = self._s.prepareBridgeSet(service, node, schema, extra) d = self.set(client, service, node or None, repository, method, values, schema, item_id or None, extra, deserialise=True) d.addCallback(lambda ret: ret or u'') return d @@ -188,9 +185,6 @@ other arguments are same as for [TICKETS.set] @return (unicode): id of the created item """ - if not node: - node = NS_MERGE_REQUESTS - if values is None: values = {} @@ -230,14 +224,9 @@ values[FIELD_DATA] = data - item_id = yield self._t.set(client, service, node, values, schema, item_id, extra, deserialise, form_ns=NS_MERGE_REQUESTS) + item_id = yield self._t.set(client, service, node, values, schema, item_id, extra, deserialise, default_node=NS_MERGE_REQUESTS, form_ns=NS_MERGE_REQUESTS) defer.returnValue(item_id) - def _getSchema(self, service, node, profile_key=C.PROF_KEY_NONE): - if not node: - node = NS_MERGE_REQUESTS - return self._s._getUISchema(service, node, profile_key) - def _parseData(self, data_type, data): d = self.parseData(data_type, data) d.addCallback(lambda parsed_patches: