top/b2cconfig/__init__.py
* update the parce_dict_config() method ot accept a key_cast_type
  value to cast the dictionary key and key_case to alter the
  key case

top/b2cconfig/reporterb2cconfig.py
* refactor parse_config() method to handle key casting and
  key case modification
Tweak PE email template as per new business rules
defect/de-43 -- Comms - Warning/Error threshold comms failed in v0.36
PVT

top/commsdaemon.py
* corrected bug in the _message_queue_ok() method that was not setting
  the support recipients list correctly for comms queue threshed
  breaches
* corrected bug in the _message_queue_ok() calls to the create_comms()
  method to also capture the prod environment setting in it parameter
  list
Refactor the ADP bulk load facility configuration parsing
Patch broken uncollected report detected during v0.36 PVT
Refactor the Adp Bulk Load facility to use the new top.setter property
constructs
defect/de-45 -- ADP Bulk Load - exception raised due to special
character encoding failure

top/utils/files.py
* hardened the xlsx_to_csv_converter() method so that the write to the
  CSV file (implicit encoding) is wrapped in a UnicodeEncodeError
  exception
defect/de-46 -- ADP Bulk Load - prevent agent.parcel_size_code foreign
key constraint error

top/adp.py
* update the sanitise() method so that agent.parcel_size_code value
  defaults to "S" if no valid option is provided

top/adpdaemon.py
* update the set_adps() method so that only one code_header value is
  parsed from the CSV file.  All other attempts to load a non-unique
  code_header will log and error and skip that entry
Add an install and uninstall target to the Makefile
Add --with-xunit option to the nose command to generate a nosetests.xml
file.
Makefile
* replaced the Python executable call from PY="/usr/bin/env python" to
  PY="/usr/bin/python"
* updated the rpm target execution call to include the "fix-python"
  switch so that the build is not dependent on the environment-based
  version of Python

setup.cfg
* added optimize=1 to the [install] section to prevent *.pyo files
  from being generated
task/ta-147 - Bulk ADP Insert mode should be a configurable option

top/adp.py
* process method() now accepts an additional parameter mode that
  defaults to insert
* new method insert() that performs the ADP insert
* refactor the process() method so that the inserting is performed by
  the new insert() method

top/adpdaemon.py
* update the call to the process() method inside _start() to not
  include the "dry" status as this was redundant
task/ta-142 -- ADP bulk updater -- stub the update method

top/adp.py
* stubbed out new method update() that will be used to update the ADP
  DB details

top/adpdaemon.py
* new attribute "mode" that defines the mode of operation
* add new parameter "mode" to top.AdpDaemon __init__
* update the _start() method so that the call to Adp.process() includes
  the "mode" attribute value as a parameter call

top/bin/topadpd
* add new command line option, --update
* add logic to translate the value of the --update flag into a "mode"
  context
* call to the AdpDaemon() object includes the "mode" context
task/ta-144 -- Identify table fields to update

top/adp.py
* new method sanitise_agent_status() that prepares the agent.status
  value for further table column adjustment
* new method filter_update_fields() that remove keys from a given
  dictionary if the value is not an empty string or not None
* new method sanitise_agent_parcel_size_code() that prepares the
  agent.parcel_size_code value for further table column adjustment
* new method sanitise_delivery_partner_id() that converts the string
  value to the equivalent delivery_partner.id
* new method sanitise_login_account_status() that prepares the
  login_account.status value for further table column adjustment
* refactor the sanitise() method to utilise the new
  sanitise_agent_status(), sanitise_agent_parcel_size_code(),
  sanitise_login_account_status and sanitise_delivery_partner_id()
  methods
task/ta-145 -- ORM - update method

top/table/__init__.py
* new method sanitise() which prepares raw data for safe use in an SQL
  DML
* refactor the insert_sql() method to use the new sanitise() method
* new method update_sql() to build an SQL DML update statement based on
  given values
task/ta-146 -- Enable ADP bulk update for agents table

top/table/agent.py
* new method agent_code_sql() that provides an SQL wrapper to return
  the id associated with the agent.code field
top/adp.py
* update the update() method to perform the agent table update
task/ta-167 -- Provide support for lats and longs in the Agent table

top/adp.py
* new methods sanitise_latitude() and sanitise_longitude() (as the
  name says)
* update the sanitise() method to include the lat/long sanitisation
  calls
* update the update() method to include the lat/long sanitisation calls

top/conf/top.conf
* enable the lat and long columns under the [adp_headers] section

top/table/agent.py
* update the agent schema to support new latitude and longitude columns
Patch broken test harness
Roll over to dev release 0.37
Documentation update