#!/usr/bin/python # # Copyright (c) 2007-2008 by Fred Morris Consult, Seattle WA USA # # Author: Fred Morris # Date: 17-Feb-2008 # # Licensed under the Perl Artistic License: "under the same terms # as Perl itself". """Data clients for the Potus sample. Usage: Looks similar to the httplib widgets (which it extends) but response.read() in particular returns data which is pertinent to precincts and election results. Parameters: Version: 1.0 Modification History: """ import sys from snakestation.dataclient import RESTRequest, XMLResponse class PrecinctResponse (XMLResponse): """The precinct list response syntax""" RECORD = 'precinct' FIELDS = ('name','county','ld') class PrecinctList (RESTRequest): """The Precinct List Request""" response_class = PrecinctResponse ADDITIONAL_PARAMS = (('product','precincts_xml'),) def request(self,precinct,leg_district,county): """Look up precincts""" if len(precinct): self.precinct = precinct if len(county): self.context_county = county elif len(leg_district): self.leg_district = leg_district elif len(county): self.county = county self.rest_request(('precinct','leg_district','county','context_county')) return class ResultsResponse (XMLResponse): """The voting results for the precinct race.""" RECORD = 'precinct_race' FIELDS = ('registered','counted','candidates') class PrecinctResults (RESTRequest): """The voting results request.""" response_class = ResultsResponse ADDITIONAL_PARAMS = ( ('product','precinct_race_xml'), ('reference_race','PRES/VICE PRES'), ('reference_year','2004') ) def request(self,precinct,county): """Get results""" self.precinct = precinct self.county = county self.rest_request(('precinct','county')) return