plugin tickets: fill reporter field when it is not already filled
This commit is contained in:
parent
c336351115
commit
774d9a37a4
1 changed files with 21 additions and 4 deletions
|
|
@ -35,7 +35,7 @@ PLUGIN_INFO = {
|
|||
C.PI_IMPORT_NAME: "TICKETS",
|
||||
C.PI_TYPE: "EXP",
|
||||
C.PI_PROTOCOLS: [],
|
||||
C.PI_DEPENDENCIES: ["XEP-0060", "PUBSUB_SCHEMA", "XEP-0277"],
|
||||
C.PI_DEPENDENCIES: ["XEP-0060", "PUBSUB_SCHEMA", "XEP-0277", "IDENTITY"],
|
||||
C.PI_MAIN: "Tickets",
|
||||
C.PI_HANDLER: "no",
|
||||
C.PI_DESCRIPTION: _("""Tickets management plugin""")
|
||||
|
|
@ -50,6 +50,7 @@ class Tickets(object):
|
|||
self._p = self.host.plugins["XEP-0060"]
|
||||
self._s = self.host.plugins["PUBSUB_SCHEMA"]
|
||||
self._m = self.host.plugins["XEP-0277"]
|
||||
self._i = self.host.plugins["IDENTITY"]
|
||||
host.bridge.addMethod("ticketsGet", ".plugin",
|
||||
in_sign='ssiassa{ss}s', out_sign='(asa{ss})',
|
||||
method=self._get,
|
||||
|
|
@ -64,7 +65,19 @@ class Tickets(object):
|
|||
method=self._getSchema,
|
||||
async=True)
|
||||
|
||||
def _labelsFilter(self, widget_type, args, kwargs):
|
||||
def _reporterFilter(self, client, form_xmlui, widget_type, args, kwargs):
|
||||
if not args[0]:
|
||||
# if reporter is not filled, we use user part of publisher
|
||||
# (if we have it)
|
||||
try:
|
||||
publisher = jid.JID(form_xmlui.named_widgets['publisher'].value)
|
||||
except (KeyError, RuntimeError):
|
||||
pass
|
||||
else:
|
||||
args[0] = publisher.user.capitalize()
|
||||
return widget_type, args, kwargs
|
||||
|
||||
def _labelsFilter(self, form_xmlui, widget_type, args, kwargs):
|
||||
if widget_type != u'textbox':
|
||||
return widget_type, args, kwargs
|
||||
widget_type = u'list'
|
||||
|
|
@ -74,7 +87,7 @@ class Tickets(object):
|
|||
'styles': (u'noselect', u'extensible', u'reducible')}
|
||||
return widget_type, args, kwargs
|
||||
|
||||
def _dateFilter(self, widget_type, args, kwargs):
|
||||
def _dateFilter(self, form_xmlui, widget_type, args, kwargs):
|
||||
if widget_type != u'string':
|
||||
return widget_type, args, kwargs
|
||||
# we convert XMPP date to timestamp
|
||||
|
|
@ -101,7 +114,8 @@ class Tickets(object):
|
|||
"""
|
||||
if not node:
|
||||
node = NS_TICKETS
|
||||
filters = {u'labels': self._labelsFilter,
|
||||
filters = {u'reporter': lambda *args: self._reporterFilter(client, *args),
|
||||
u'labels': self._labelsFilter,
|
||||
u'created': self._dateFilter,
|
||||
u'updated': self._dateFilter,
|
||||
}
|
||||
|
|
@ -167,6 +181,9 @@ class Tickets(object):
|
|||
values['comments_uri'] = uri.buildXMPPUri(u'pubsub', subtype='microblog', path=comments_service.full(), node=comments_node)
|
||||
|
||||
values['updated'] = now
|
||||
if not values.get('reporter'):
|
||||
identity = yield self._i.getIdentity(client, client.jid)
|
||||
values['reporter'] = identity['nick']
|
||||
item_id = yield self._s.sendDataFormItem(client, service, node, values, schema, item_id, extra, deserialise)
|
||||
defer.returnValue(item_id)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue