Update project symlinks on save.

refactor-builder
Eric Holscher 2014-01-16 17:30:08 +07:00
parent d644591507
commit a1b3d35e9d
4 changed files with 30 additions and 22 deletions

View File

@ -3,21 +3,13 @@ import logging
from django.core.management.base import BaseCommand
from django.conf import settings
from projects import tasks
from projects import tasks, utils
from tastyapi import apiv2 as api
import redis
log = logging.getLogger(__name__)
def symlink(slug):
version_data = api.version().get(project=slug, slug='latest')['results'][0]
v = tasks.make_api_version(version_data)
log.info("Symlinking %s" % v)
tasks.symlink_subprojects(v)
tasks.symlink_cnames(v)
tasks.symlink_translations(v)
class Command(BaseCommand):
def handle(self, *args, **options):
if len(args):
@ -29,9 +21,9 @@ class Command(BaseCommand):
for slug in slugs:
try:
log.info("Got slug from redis: %s" % slug)
symlink(slug)
utils.symlink(project=slug)
except Exception, e:
print e
else:
for slug in args:
symlink(slug)
utils.symlink(project=slug)

View File

@ -17,7 +17,7 @@ from betterversion.better import version_windows, BetterVersion
from projects import constants
from projects.exceptions import ProjectImportError
from projects.templatetags.projects_tags import sort_version_aware
from projects.utils import highest_version as _highest, make_api_version
from projects.utils import highest_version as _highest, make_api_version, symlink
from taggit.managers import TaggableManager
from tastyapi.slum import api
@ -290,6 +290,7 @@ class Project(models.Model):
for owner in self.users.all():
assign('view_project', owner, self)
self.sync_supported_versions()
symlink(project=self.slug)
return obj
def get_absolute_url(self):

View File

@ -653,15 +653,18 @@ def update_intersphinx(version_pk, api=None):
def save_term(version, term, url):
redis_obj = redis.Redis(**settings.REDIS)
lang = "en"
project_slug = version.project.slug
version_slug = version.slug
redis_obj.sadd('redirects:v4:%s:%s:%s:%s' % (lang, version_slug,
project_slug, term), url)
redis_obj.setnx('redirects:v4:%s:%s:%s:%s:%s' % (lang, version_slug,
project_slug, term, url),
1)
try:
redis_obj = redis.Redis(**settings.REDIS)
lang = "en"
project_slug = version.project.slug
version_slug = version.slug
redis_obj.sadd('redirects:v4:%s:%s:%s:%s' % (lang, version_slug,
project_slug, term), url)
redis_obj.setnx('redirects:v4:%s:%s:%s:%s:%s' % (lang, version_slug,
project_slug, term, url),
1)
except:
pass
def symlink_cnames(version):
"""

View File

@ -9,13 +9,25 @@ import logging
from httplib2 import Http
from django.conf import settings
from distutils2.version import NormalizedVersion, suggest_normalized_version
import redis
log = logging.getLogger(__name__)
def symlink(project, version='latest'):
from projects import tasks
from builds.models import Version
from tastyapi import api
if getattr(settings, 'DONT_HIT_DB', True):
version_data = api.version().get(project=project, slug=version)['results'][0]
v = tasks.make_api_version(version_data)
else:
v = Version.objects.get(project__slug=project, slug=version)
log.info("Symlinking %s" % v)
tasks.symlink_subprojects(v)
tasks.symlink_cnames(v)
tasks.symlink_translations(v)
def find_file(file):
"""Find matching filenames in the current directory and its subdirectories,