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
            })
        )
Пример #2
0
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
        )
Пример #3
0
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.")
Пример #4
0
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()
Пример #5
0
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()
Пример #6
0
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)
Пример #8
0
    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)
Пример #9
0
def get_aws_ses_default_system_email_address():
    " From configuration "
    return get_config_key('system_email_address')
Пример #10
0
def get_aws_ses_default_system_email_address():
    " From configuration "
    return get_config_key('system_email_address')
Пример #11
0
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
Пример #12
0
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