#!/usr/bin/python
# -*- coding: UTF-8 -*-
from fabric.api import env, run, cd
"""
структура примерно такая
/
opt/ <---- Тут любой удобный путь где будет храниться проект
my_project/ <---- Директория со всеми данными относящимся к проекту
env/ <---- виртуальное окружение
source/ <---- тут проект спуленный с репозитория
my_project_nginx.conf <---- конфиг для nginx
reload.txt <---- файл за которым следит uwsgi
other_files(yandex.metrika, google.analytics, ...)
"""
env.hosts = ['root@xxx.xxx.xxx.xxx', ]
project_path = '/opt/my_project/'
source_path = '/opt/my_project/source/'
branch = ''
def deploy():
with cd(source_path):
run('git pull')
with cd(project_path):
run('env/bin/pip install -r %srequirements.txt' % source_path)
run('env/bin/python %smanage.py migrate' % source_path)
run('env/bin/python %smanage.py collectstatic --noinput' % source_path)
run('touch reload.txt')
...
# migrations.AddField(
# model_name='communities',
# name='communitie_id',
# field=models.CharField(blank=True, max_length=255),
# ),
...
for obj in queryset:
data_row = []
for field in fields:
value = getattr(obj, field.name)
if isinstance(value, six.string_types):
data_row.append(value.encode('utf8'))
else:
data_row.append(value)
writer.writerow(data_row)