[python-uk] Tell us what you did with Python this year....

Tim Golden mail at timgolden.me.uk
Tue Dec 21 11:33:11 CET 2010

Bit of this year and last...

We have a 3rd-party COTS Helpdesk system with a woeful desktop
interface and a naive [and that's being charitable] email ingest
mechanism. All the data's stored in a SQL Server and is fairly
clearly two different apps bolted together...

A few years ago I knocked up a simple cherrypy web interface for
it, mostly to avoid my having to use the egregious supplied UI.

Then about 18 months ago I got so annoyed at the email ingest
that I ran up an alternative as a proof of concept. At the
same time I added an email alerting mechanism which sends out
lightly-formatted emails on call updates.

Now, several editions (and additions) later, the email ingest
and alert mechanisms are easily the most used way to communicate
with the IT Helpdesk. We encourage users to "communicate through
the call" since it leaves the conversation trail visible to anyone
who needs to look; it handles attachments such as screenshots of
corrupts docs and is very easy to use. At the same time, the users
see the assignments and Support activity so there's much greater
transparency than before.

A number of the ideas are certainly inspired by the concepts
in Roundup (and possibly in other issue trackers) although I've
never looked at the code there, and the concepts are similar,
not identical.

Key features:

* Email ingest adequately determines the correct "conversation"
to link to, handles embedded or linked attachments, and does
a fairly good job of stripping out "noise".

* Some actions can be handled entirely by email such as reassignment,
status change, etc. although this isn't widely used.

* Email alerting notifies on call creation, closure, update
and a few specific status changes; includes attachment links
and does some header munging so the originator appears to be
the updater but the reply goes to the Helpdesk.

* "Nosy" list concept akin to Roundup's where several people
will receive call updates (even a distribution list...)

* Master / child call -- this is quite recent and we're still
playing with it, but basically a tree of calls can be closed
together and the upper ones show the lower updates. The key
requirement here is a split-assignment, such as when a new
Blackberry is requested and the ordering is handled through
the Facilities team while IT do the commissioning.

Key tools / libraries:

* Web interface: cherrypy, hand-crafted SQL, messy string-based
HTML with %-formatting. [Not proud of this part; it's in real
need of refactoring]

* Email ingest: Exchange emapi, regular expressions for stripping
out noise

* Email alerts: smtplib, AD, jinja2 for formatted emails, regexes
again for message manipulation

Future ideas:

* Alarms: eg allowing a call to "sleep" for an agreed period, to be
picked up later; notifying when SLA milestones are passed etc.


More information about the python-uk mailing list