Работа с устаревшим проектом django в новых локализованных проектах - PullRequest
4 голосов
/ 01 июля 2011

Я сейчас нахожусь в ситуации, чтобы спланировать интернационализацию проекта django, который содержит в основном устаревший код.Сам старый проект имеет разные приложения, которые сильно зависят друг от друга, поэтому их трудно разделить.Глядя на оставшееся время вообще невозможно.

Основные требования к интернационализации:

  • Наличие отдельных проектов для каждой страны
  • Каждая страна будет позжеиметь разные шаблоны
  • каждая страна представит новые функции, которые, возможно, захотят использовать и другие страны
  • основная старая кодовая база будет сохранена и должна работать с новыми функциями / изменениями в страновых проектах

Есть ли у вас какие-либо идеи / установки для работы со старым кодом и запуска новых проектов с зависимостью от старого кода и новых функций?Я хотел бы начать обсуждение этого вопроса.

1 Ответ

1 голос
/ 09 сентября 2011

Начните с развязки компонентов, где это возможно, и преобразуйте устаревший код в (переносимые) приложения, если это уже не так, и устаревший код не должен находиться под основным деревом проекта.

Любые новые функции должныбыть хорошо документированными и отделенными приложениями или самими общими библиотеками, даже если они переопределяют / взаимодействуют / зависят или даже monkeypatch унаследованный код.Вы хотите, чтобы большая часть вашего проекта находилась вне самого основного проекта, и устанавливалась через pip, как если бы они были сторонними приложениями.

Основное дерево проекта должно быть не намного больше, чем шаблоны основного проекта проекта.urls.py, settings.py, любые шаблоны конфигурации / развертывания и fabfile, а также любые основные приложения, которые будут редко настраиваться.

Каждая локализованная настройка должна быть либо самой «настройкой» приложений, либо небольшими изменениямиосновной проект (который должен быть воспроизведен с помощью fab или любого другого провайдера по вашему выбору)

Излишне говорить, что если каждая команда может принять участие в основном проекте, хороший рабочий процесс git / hg необходим,и используйте центральный CI-сервер с хорошим набором тестов.

...