From 21b7109c06695955632692814fed11b3717e0fc7 Mon Sep 17 00:00:00 2001 From: Nathan Fritz Date: Thu, 19 Aug 2010 16:09:00 -0700 Subject: fixed jobs --- sleekxmpp/plugins/jobs.py | 6 +- todo1.0 | 159 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 todo1.0 diff --git a/sleekxmpp/plugins/jobs.py b/sleekxmpp/plugins/jobs.py index bb2e2554..30a76989 100644 --- a/sleekxmpp/plugins/jobs.py +++ b/sleekxmpp/plugins/jobs.py @@ -1,6 +1,7 @@ from . import base import logging from xml.etree import cElementTree as ET +import types class jobs(base.base_plugin): def plugin_init(self): @@ -20,7 +21,7 @@ class jobs(base.base_plugin): def claimJob(self, host, node, jobid, ifrom=None): return self._setState(host, node, jobid, ET.Element('{http://andyet.net/protocol/pubsubjob}claimed')) - def unclaimJob(self, jobid): + def unclaimJob(self, host, node, jobid): return self._setState(host, node, jobid, ET.Element('{http://andyet.net/protocol/pubsubjob}unclaimed')) def finishJob(self, host, node, jobid, payload=None): @@ -38,7 +39,8 @@ class jobs(base.base_plugin): iq['psstate']['item'] = jobid iq['psstate']['payload'] = state result = iq.send() - if result is None or result['type'] != 'result': + if result is None or type(result) == types.BooleanType or result['type'] != 'result': + logging.error("Unable to change %s:%s to %s" % (node, jobid, state)) return False return True diff --git a/todo1.0 b/todo1.0 new file mode 100644 index 00000000..593185bc --- /dev/null +++ b/todo1.0 @@ -0,0 +1,159 @@ +Atom stanza? Should stanzas for plugins go in sleekxmpp.stanza or sleekxmpp.plugins.stanza? + +sleekxmpp.stanza __all__ out of date? + +stanza.error could be cleaned up, use _delSubText, etc + +stanza.htmlim could use _delSubText, etc. Why not msg['html']['body'] instead of msg['html']['html']? + +Unify timeout values - maybe xmlstream.stanzabase.TIMEOUT? + +Need to use registerStanzaPlugin in rootstanza instead of the manual steps + +Is exceptions.XMPPError raised anywhere? grep says no, is it still needed? + +Extra tostring method in xmlstream. Maybe modify the tostring/ packages to accept a stream and top namespace instead of assuming a stanza object? Change ElementBase __str__ to pass its stream object to new function instead of extending ToString. + +Move tostring and tostring26 to be a single package with import switch in a __init__.py that selects appropriate file to import. + +Remove thread remains from handler classes. + +Clarify what is meant by 'instream' for a handler. + +Allow for XPath matching to use basic [@att="value"] filter. <- eek? Alternative is to use xml mask, but those are longer. + +ElementBase sub_items not subitem? + +Only import cElementTree in stanzabase, everything else reference that. Would make using lxml instead of cElementTree easier if needed. + +*XMPP needs to use JID class instead of lots of fields. + +BaseXMPP set_jid, makeIqQuery, getjidresource, getjidbare not needed + +Is BaseXMPP.send used anywhere? + +Make top level examples folder, put example.py, component_example.py there. Maybe even the disco browser too. + +__getitem__ should be in BaseXMPP. get too, or remove it? + +xmlstreammod in ComponentXMPP can be removed, just use XMLStream. + +Why CamelCase and underscore_names? Document semantics. + +Make the common classes available using __init__.py + +Need to unit test stanzabase/elementbase. Heavily. + +conn_tests and sleekxmpp/tests and sleekxmpp/xmlstresm/test.* -> convert to either unit tests, or at least put in same place + +Update setup.py - github url, version # + +scheduler needs unit tests + +__init__.py stream:features handler should use new state machine + + + +-- PEP8 - all files + +Need to use spaces + +Docstrings are lacking. Need to document attributes and return values. + +Organize imports + +Use absolute, not relative imports + +Fix one-liner if statements + +Line length limit of 79 characters + + + +-- Plugins + +--- xep_0004 + +Need more unit tests + +--- xep_0009 + +Need stanza objects + +Need unit tests + +--- xep_0045 + +Need to use stanza objects + +A few TODO comments for checking roles and using defaults + +Need unit tests + +--- xep_0050 + +Need unit tests + +Need stanza objects - use new xep_0004 + +--- xep_0060 + +Need unit tests + +Need to use existing stanza objects + +--- xep_0078 + +Is it useful still? + +Need stanza objects/unit tests + +--- xep_0086 + +Is there a way to automate setting error codes? + +Seems like this should be part of the error stanza by default + +Use stanza objects + +--- xep_0092 + +Stanza objects + +Unit tests + +--- xep_0199 + +Stanza objects + +Unit tests + +Clean commented code + +Use the new scheduler + + + +-- Documentation + +Document the Zen/Tao/Whatever of SleekXMPP to explain design goals and decisions + +Write architecture description + +XMPP:TDG needs to be rewritten. + +Need to update docs that reference old JID attributes of sleekxmpp objects + +Page describing new JID class + +Message page needs updating + +Iq page needs to be written + +Make guides to go with example.py and component_example.py + +Page on xmlstream.matchers + +Page on xmlstream.handlers, especially waiters + +Page on using xmlstream.scheduler -- cgit v1.2.3