Ejemplo n.º 1
0
    def __init__(self, env, db, tell_sentry, root):
        if self._have_ses(env):
            log_dammit("AWS SES is configured! We'll send mail through SES.")
            self._mailer = boto3.client(
                service_name='ses',
                region_name=env.aws_ses_default_region,
                aws_access_key_id=env.aws_ses_access_key_id,
                aws_secret_access_key=env.aws_ses_secret_access_key)
        else:
            log_dammit(
                "AWS SES is not configured! Mail will be dumped to the console here."
            )
            self._mailer = ConsoleMailer()

        self.db = db
        self.tell_sentry = tell_sentry
        self.sleep_for = env.email_queue_sleep_for
        self.allow_up_to = env.email_queue_allow_up_to

        templates = {}
        templates_dir = os.path.join(root, 'emails')
        assert os.path.isdir(templates_dir)
        i = len(templates_dir) + 1
        for spt in find_files(templates_dir, '*.spt'):
            base_name = spt[i:-4]
            templates[base_name] = compile_email_spt(spt)
        self._email_templates = templates
Ejemplo n.º 2
0
    def __init__(self, env, db, tell_sentry, root):
        if self._have_ses(env):
            log_dammit("AWS SES is configured! We'll send mail through SES.")
            self._mailer = boto3.client( service_name='ses'
                                       , region_name=env.aws_ses_default_region
                                       , aws_access_key_id=env.aws_ses_access_key_id
                                       , aws_secret_access_key=env.aws_ses_secret_access_key
                                        )
        else:
            log_dammit("AWS SES is not configured! Mail will be dumped to the console here.")
            self._mailer = ConsoleMailer()

        self.db = db
        self.tell_sentry = tell_sentry
        self.sleep_for = env.email_queue_sleep_for
        self.allow_up_to = env.email_queue_allow_up_to
        self.log_every = env.email_queue_log_metrics_every

        templates = {}
        templates_dir = os.path.join(root, 'emails')
        assert os.path.isdir(templates_dir)
        i = len(templates_dir) + 1
        for spt in find_files(templates_dir, '*.spt'):
            base_name = spt[i:-4]
            templates[base_name] = compile_email_spt(spt)
        self._email_templates = templates
Ejemplo n.º 3
0
def compile_assets(website):
    client = Client(website.www_root, website.project_root)
    client._website = website
    for spt in find_files(website.www_root + '/assets/', '*.spt'):
        filepath = spt[:-4]  # /path/to/www/assets/foo.css
        urlpath = spt[spt.rfind('/assets/'):-4]  # /assets/foo.css
        if urlpath == '/assets/_well-known/acme-challenge/%token':
            # This *should* be dynamic.
            continue
        try:
            # Remove any existing compiled asset, so we can access the dynamic
            # one instead (Aspen prefers foo.css over foo.css.spt).
            os.unlink(filepath)
        except:
            pass
        headers = {}
        if website.base_url:
            url = urlparse.urlparse(website.base_url)
            headers[b'HTTP_X_FORWARDED_PROTO'] = str(url.scheme)
            headers[b'HTTP_HOST'] = str(url.netloc)
        content = client.GET(urlpath, **headers).body
        tmpfd, tmpfpath = mkstemp(dir='.')
        os.write(tmpfd, content)
        os.close(tmpfd)
        os.rename(tmpfpath, filepath)
    atexit.register(lambda: clean_assets(website.www_root))
Ejemplo n.º 4
0
def clean_assets(www_root):
    if '__HACK_SUPPRESS_ASSET_CLEANING' in os.environ:
        return
    for spt in find_files(www_root + '/assets/', '*.spt'):
        try:
            os.unlink(spt[:-4])
        except:
            pass
Ejemplo n.º 5
0
def clean_assets(www_root):
    if '__HACK_SUPPRESS_ASSET_CLEANING' in os.environ:
        return
    for spt in find_files(www_root+'/assets/', '*.spt'):
        try:
            os.unlink(spt[:-4])
        except:
            pass
Ejemplo n.º 6
0
def compile_assets(website):
    client = Client(website.www_root, website.project_root)
    client._website = website
    for spt in find_files(website.www_root+'/assets/', '*.spt'):
        filepath = spt[:-4]                         # /path/to/www/assets/foo.css
        urlpath = spt[spt.rfind('/assets/'):-4]     # /assets/foo.css
        try:
            # Remove any existing compiled asset, so we can access the dynamic
            # one instead (Aspen prefers foo.css over foo.css.spt).
            os.unlink(filepath)
        except:
            pass
        headers = {}
        if website.base_url:
            url = urlparse.urlparse(website.base_url)
            headers[b'HTTP_X_FORWARDED_PROTO'] = str(url.scheme)
            headers[b'HTTP_HOST'] = str(url.netloc)
        content = client.GET(urlpath, **headers).body
        tmpfd, tmpfpath = mkstemp(dir='.')
        os.write(tmpfd, content.encode('utf8'))
        os.close(tmpfd)
        os.rename(tmpfpath, filepath)
    atexit.register(lambda: clean_assets(website.www_root))
Ejemplo n.º 7
0
def clean_assets(www_root):
    for spt in find_files(www_root + '/assets/', '*.spt'):
        try:
            os.unlink(spt[:-4])
        except:
            pass