Continue to add cname -> project link to enable flask app redirects.

break-out-core-urls-views
Eric Holscher 2016-03-09 11:30:22 -08:00
parent 3c3b981cf0
commit cf836627c6
2 changed files with 22 additions and 14 deletions

5
.gitignore vendored
View File

@ -10,11 +10,9 @@
.rope_project/
.ropeproject/
_build
cnames
bower_components/
deploy/.vagrant
dist/*
doc_root
local_settings.py
locks/*
logs/*
@ -35,8 +33,7 @@ prod_artifacts
wheelhouse
whoosh_index
xml_output
public_cnames
public_symlinks
public_web_root
public_cname_project
public_cname_root
.rope_project/

View File

@ -77,6 +77,7 @@ class Symlink(object):
CNAME_ROOT = os.path.join(settings.SITE_ROOT, 'public_cname_root')
WEB_ROOT = os.path.join(settings.SITE_ROOT, 'public_web_root')
PROJECT_CNAME_ROOT = os.path.join(settings.SITE_ROOT, 'public_cname_project')
def __init__(self, project):
self.project = project
@ -111,6 +112,12 @@ class Symlink(object):
elif not os.path.exists(self.PROJECT_ROOT):
os.makedirs(self.PROJECT_ROOT)
# CNAME root directories
if not os.path.lexists(self.CNAME_ROOT):
os.makedirs(self.CNAME_ROOT)
if not os.path.lexists(self.PROJECT_CNAME_ROOT):
os.makedirs(self.PROJECT_CNAME_ROOT)
def run(self):
"""
Create proper symlinks in the right order.
@ -133,8 +140,13 @@ class Symlink(object):
def symlink_cnames(self, domain=None):
"""Symlink project CNAME domains
Link from HOME/user_builds/$CNAME_ROOT/<cname> ->
HOME/user_builds/$WEB_ROOT/<project>
Link from HOME/$CNAME_ROOT/<cname> ->
HOME/$WEB_ROOT/<project>
Also give cname -> project link
Link from HOME/public_cname_project/<cname> ->
HOME/<project>/
"""
if domain:
domains = [domain]
@ -142,15 +154,14 @@ class Symlink(object):
domains = Domain.objects.filter(project=self.project)
for domain in domains:
self._log("Symlinking CNAME: {0} -> {1}".format(domain.domain, self.project.slug))
docs_dir = self.PROJECT_ROOT
symlink = os.path.join(self.CNAME_ROOT, domain.domain)
# Make sure containing directories exist
symlink_dir = os.sep.join(symlink.split(os.path.sep)[:-1])
if not os.path.lexists(symlink_dir):
os.makedirs(symlink_dir)
# Create proper symlinks
print run('ln -nsf {0} {1}'.format(docs_dir, symlink))
# CNAME to doc root
symlink = os.path.join(self.CNAME_ROOT, domain.domain)
run('ln -nsf {0} {1}'.format(self.PROJECT_ROOT, symlink))
# Project symlink
project_cname_symlink = os.path.join(self.PROJECT_CNAME_ROOT, domain.domain)
run('ln -nsf %s %s' % (self.project.doc_path, project_cname_symlink))
def remove_symlink_cname(self, domain):
"""Remove single_version symlink"""