26 июл. 2012 г.

Virtualenv/Django автоматизация


Здравствуйте, ранее я писал об установке и запуске Django, сейчас же речь пойдет об автоматизации этого процесса.
Установка и пользование Virtualenv и Django не вызывает никакого труда, но уже через пару дней работы, я захотел автоматизировать некоторые процессы.
Каждый раз активировать Virtualenv напрягает, та и путь к проекту прописывать не хочется, иногда необходимо просто запустить сервер.

Шо делать? :D

Предлагаю написать скрипт на bash который бы помогал выполнять эту рутинную работу :)
Получилось следующее:
dj root - переносит нас в корневой каталог с проектами
dj new pr_name - создает проект, устанавливает Virtualenv(в env), Django, создает djcode
dj remove pr_name - удаляет проект по имени
dj quit - деактивация проекта и выход в /home/username/
dj act - активация текущего проекта
dj run - активация и запуск текущего проекта
dj pr_name act - активация проекта по имени
dj pr_name run - активация и запуск проекта по имени

Ниже представлен код:
#!/bin/bash
DJANGO_PROJECT_ROOT_FOLDER_PATH="/home/datysho/django_projects"
DJANGO_PROJECT_FOLDER_NAME="djcode"
VIRTUALENV_FOLDER_NAME="env"

if [ "$1" = "root" ]; then
  cd $DJANGO_PROJECT_ROOT_FOLDER_PATH
elif [ "$1" = "new" ]; then
  cd $DJANGO_PROJECT_ROOT_FOLDER_PATH
  mkdir $2
  cd $2
  virtualenv --no-site-packages $VIRTUALENV_FOLDER_NAME
  source $VIRTUALENV_FOLDER_NAME/bin/activate
  pip install django
  django-admin.py startproject $DJANGO_PROJECT_FOLDER_NAME
elif [ "$1" = "remove" ]; then
  sudo rm -rf $DJANGO_PROJECT_ROOT_FOLDER_PATH/$2
elif [ "$1" = "quit" ]; then
  deactivate
  cd
else
  if [ "$1" != "act" ] && [ "$1" != "run" ]; then  
    cd $DJANGO_PROJECT_ROOT_FOLDER_PATH/$1
    if [ "$2" = "act" ]; then
      source $PWD/$VIRTUALENV_FOLDER_NAME/bin/activate
    fi
    if [ "$2" = "run" ]; then
      source $PWD/$VIRTUALENV_FOLDER_NAME/bin/activate
      python $PWD/$DJANGO_PROJECT_FOLDER_NAME/manage.py runserver
    fi
  else
    if [ "$1" = "act" ]; then
      source $PWD/$VIRTUALENV_FOLDER_NAME/bin/activate
    fi
    if [ "$1" = "run" ]; then
      source $PWD/$VIRTUALENV_FOLDER_NAME/bin/activate
      python $PWD/$DJANGO_PROJECT_FOLDER_NAME/manage.py runserver
    fi
  fi
fi
Для корректной работы скрипта вам достаточно прописать значения трем переменным, а именно путь к папке с проектами, желаемое название папки Virtualenv и проекта Django.

Код необходимо сохранить в любой файл(в примере ниже показано для файла django-project) и прописать следующие строки:
cp django-project /usr/local/bin #копируем файл в директорию исполняемых файлов
chmod +x /usr/local/bin/django-project #делаем файл исполняемым
alias dj='source django-project' #прописываем елиас
Если у вас есть идеи, предложения, замечания - оставляйте оставляйте комменты, добавлю все шо душе угодно :D

P.S. alias прописанный в terminal'е живет только до конца сессии, для того чтобы это исправить нужно прописать его в соответствующий файл, для Ubuntu это ~/.bashrc

1 комментарий:

  1. обычно для этих целей используюется две альтернативы, для олдскула и лентяев: GNU Make (Makefiles), для тру питонщиков - Doit! пекейдж :) попробуй

    ОтветитьУдалить