#!/usr/bin/env python # -*- coding: utf-8 -*- # from django.db import connection from deployer.node import Node, map_roles from deployer.utils import esc1 from app.deploy.service import * from app.deploy.django import * import app.deploy.tasks as tasks import os.path from app import settings class ZuykovWebSystem(Node): """ The base definition of our web system. roles: web, engine, database """ @map_roles(host='web') class Application(DjangoDeployment): def configure_base(self): self._configure_instance(tasks.common_configure) self._configure_instance(tasks.web_configure) def restart(self): self._configure_instance(tasks.reload_nginx + tasks.reload_uwsgi) def update(self): self.checkout() self.pull() def collect_static(self): self.run_management_command('collectstatic --noinput') def checkout(self, commit="."): with self.hosts.cd(settings.PROJECT_DIR, expand=True): self.hosts.run("git checkout '%s'" % esc1(commit)) def pull(self): with self.hosts.cd(settings.PROJECT_DIR, expand=True): self.hosts.run('git pull') def create(self): # Если созданы — удалить # TODO: Предварительно спросить self.Frontend.create() self.Engine.create() def deploy(self): self.Application.update() self.Application.python_packages_install() self.Application.collect_static() self.Application.restart() def update(self): self.Application.update() self.Application.collect_static() self.Application.restart()