def AuthenticatedPost(self, org, event): # check votesmart API key is available try: config_key_db.get_config_key('votesmart') except: raise Exception("votesmart API key is not defined as a ConfigKey.") # get selected event selected_event = event_db.Event.get(self.request.get('event')) # decide filename in advance filename = "%s-officials-%s.zip" % ( selected_event.filename_friendly_name, timestamp_now() ) # package parameters for deferral params = {} params['org_pickle'] = pickle.dumps(org) params['event_pickle'] = pickle.dumps(event) params['post_pickle'] = pickle.dumps(self.request.POST) deferred.defer(self._write_csv, params, filename) # write filename out as json self.response.headers['Content-Type'] = 'application/json' self.response.out.write( json.dumps({ 'filename': filename }) )
def send_email_by_service(to, subject, body, cc=None, bcc=None, html_body=None): " Send by AWS SES if available, otherwise GAE. " assert not isinstance(to, basestring), "'to' must be a list or iterable" # check for AWS API keys aws_ses_region = get_config_key('aws_ses_region') aws_ses_access_key_id = get_config_key('aws_ses_access_key_id') aws_ses_secret_access_key = get_config_key('aws_ses_secret_access_key') # lookup addresses(s) to send from gae_sender_address = get_appengine_default_system_email_address() aws_sender_address = get_aws_ses_default_system_email_address() # send by AWS or fall back to GAE if can_send_by_aws_ses(aws_ses_region, aws_ses_access_key_id, aws_ses_secret_access_key, aws_sender_address): return send_email_via_aws_ses( aws_sender_address, to, subject, body, cc=cc, bcc=bcc, html_body=html_body, aws_ses_region=aws_ses_region, aws_ses_access_key_id=aws_ses_access_key_id, aws_ses_secret_access_key=aws_ses_secret_access_key ) else: return send_email_via_appengine( gae_sender_address, to, subject, body, cc=cc, bcc=bcc, html_body=html_body )
def send_email_by_service(to, subject, body, cc=None, bcc=None, html_body=None): " Send by AWS SES if available, otherwise GAE. " assert not isinstance(to, basestring), "'to' must be a list or iterable" # check for AWS API keys aws_ses_region = get_config_key('aws_ses_region') aws_ses_access_key_id = get_config_key('aws_ses_access_key_id') aws_ses_secret_access_key = get_config_key('aws_ses_secret_access_key') # lookup addresses(s) to send from gae_sender_address = get_appengine_default_system_email_address() aws_sender_address = get_aws_ses_default_system_email_address() # send by AWS or fall back to GAE # catch & log all exceptions to prevent blowing up requests due to email try: if can_send_by_aws_ses(aws_ses_region, aws_ses_access_key_id, aws_ses_secret_access_key, aws_sender_address): return send_email_via_aws_ses( aws_sender_address, to, subject, body, cc=cc, bcc=bcc, html_body=html_body, aws_ses_region=aws_ses_region, aws_ses_access_key_id=aws_ses_access_key_id, aws_ses_secret_access_key=aws_ses_secret_access_key ) else: return send_email_via_appengine( gae_sender_address, to, subject, body, cc=cc, bcc=bcc, html_body=html_body ) except: logging.exception("Exception caused generating email.")
def get_base_url(): configured_base_url = get_config_key('system_base_url') if configured_base_url: return configured_base_url else: # return http as the scheme and assume requests redirected return "http://" + get_default_version_hostname()
def send_email_by_service(to, subject, body, cc=None, bcc=None, html_body=None): " Send by AWS SES if available, otherwise GAE. " assert not isinstance(to, basestring), "'to' must be a list or iterable" # check for AWS API keys aws_ses_region = get_config_key('aws_ses_region') aws_ses_access_key_id = get_config_key('aws_ses_access_key_id') aws_ses_secret_access_key = get_config_key('aws_ses_secret_access_key') # lookup addresses(s) to send from gae_sender_address = get_appengine_default_system_email_address() aws_sender_address = get_aws_ses_default_system_email_address() # send by AWS or fall back to GAE # catch & log all exceptions to prevent blowing up requests due to email try: if can_send_by_aws_ses(aws_ses_region, aws_ses_access_key_id, aws_ses_secret_access_key, aws_sender_address): logging.error(aws_ses_secret_access_key) return send_email_via_aws_ses( aws_sender_address, to, subject, body, cc=cc, bcc=bcc, html_body=html_body, aws_ses_region=aws_ses_region, aws_ses_access_key_id=aws_ses_access_key_id, aws_ses_secret_access_key=aws_ses_secret_access_key) else: return send_email_via_appengine(gae_sender_address, to, subject, body, cc=cc, bcc=bcc, html_body=html_body) except: logging.exception("Exception caused generating email.")
def get(self, path): # path is assumed to be an incident short name -- check event = Event.all().filter('short_name', path).get() if not event: self.abort(404) # switch on config option config_setting = get_config_key('handle_incident_short_names') if config_setting == 'public_map': self.redirect('/public-map?initial_incident_id=' + event.short_name) return elif config_setting == 'authentication': self.redirect('/authentication?initial_event_name=' + event.name) return else: self.abort(404)
def get_aws_ses_default_system_email_address(): " From configuration " return get_config_key('system_email_address')
def get_api_key(): global _VOTESMART_API_KEY if _VOTESMART_API_KEY is None: _VOTESMART_API_KEY = config_key_db.get_config_key('votesmart') return _VOTESMART_API_KEY