From ce3f7af7109fe8813247586031216fbe34812fbe Mon Sep 17 00:00:00 2001 From: olegush Date: Thu, 31 Oct 2019 15:06:24 +0300 Subject: [PATCH 1/9] fix readme --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4baba280..d8105e8d 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,10 @@ bash alias dcp="docker-compose -f docker-compose-production.yml" #### Готовим код к работе ```bash +mkdir fidals && cd fidals +# clone outer dependency repository +git clone git@github.com:fidals/refarm-site.git +# clone shopelectro repository git clone git@github.com:fidals/shopelectro.git cd shopelectro/docker/ # this command will ask you to fill some files. @@ -42,21 +46,17 @@ dc exec app python manage.py price #### Файлы env `make deploy-dev` создаст файлы для окружения (env) со стандартными значениями. А затем попросит заполнить их. + Пару рекомендаций по заполнению: - Генерим случайные: Django secret key, пароли к локальным базам +- В файлах `shopelectro/docker/env_files/paths` и `shopelectro/docker/.env` определяем путь `REFARM_DIR=../../refarm-site`. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта +нужно поправить код refarm-site вместе с кодом сайта. - Запрашиваем у Архитектора: Пароль к FTP и почтовому серву + Проверяем адрес `http://127.0.0.1:8010` - загружается сайт. Вместо порта `8010` может быть другой - переменная окружения (env var) `VIRTUAL_HOST_EXPOSE_PORT`. -#### Установка refarm-site -Сайт использует refarm-site как внешнюю зависимость. -Интерфейс refarm-site нестабилен, -поэтому иногда при разработке фичи сайта -нужно поправить код refarm-site вместе с кодом сайта. -Для этого можно установить его как зависимость для разработки (`pip -e`). -И примонтировать внутрь контейнера app. -Смотрите на переменную окружения `REFARM_SITE`. #### Makefile `docker/Makefile` - единственная и полная инструкция для работы с локальным dev-окружением. From e370d4ee7bc4fdf0f4e8998414f1ccd96b2b55da Mon Sep 17 00:00:00 2001 From: olegush Date: Thu, 31 Oct 2019 15:49:08 +0300 Subject: [PATCH 2/9] some text fixes --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d8105e8d..5935805d 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,8 @@ bash alias dcp="docker-compose -f docker-compose-production.yml" #### Готовим код к работе ```bash -mkdir fidals && cd fidals -# clone outer dependency repository +# clone repositories git clone git@github.com:fidals/refarm-site.git -# clone shopelectro repository git clone git@github.com:fidals/shopelectro.git cd shopelectro/docker/ # this command will ask you to fill some files. @@ -49,11 +47,10 @@ dc exec app python manage.py price Пару рекомендаций по заполнению: - Генерим случайные: Django secret key, пароли к локальным базам -- В файлах `shopelectro/docker/env_files/paths` и `shopelectro/docker/.env` определяем путь `REFARM_DIR=../../refarm-site`. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта +- В файлах `shopelectro/docker/env_files/paths` и `shopelectro/docker/.env` определяем путь `REFARM_DIR=path_to_refarm-site`. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта нужно поправить код refarm-site вместе с кодом сайта. - Запрашиваем у Архитектора: Пароль к FTP и почтовому серву - Проверяем адрес `http://127.0.0.1:8010` - загружается сайт. Вместо порта `8010` может быть другой - переменная окружения (env var) `VIRTUAL_HOST_EXPOSE_PORT`. From 02a8c3e9fa2fbf2ba4b1e6c99b272184d2e2a5d1 Mon Sep 17 00:00:00 2001 From: olegush Date: Fri, 1 Nov 2019 09:40:01 +0300 Subject: [PATCH 3/9] Revert "minor fix" This reverts commit 553969741ea8169a55e30c143efc56f1ff5be7ca. From f22ba7373fd6eaa53bb60175b458b7eed6226523 Mon Sep 17 00:00:00 2001 From: olegush Date: Fri, 1 Nov 2019 09:48:05 +0300 Subject: [PATCH 4/9] Avoid hardcoded values in RSS template. --- shopelectro/management/commands/price.py | 3 +++ shopelectro/settings/base.py | 3 ++- templates/prices/price.rss | 8 ++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/shopelectro/management/commands/price.py b/shopelectro/management/commands/price.py index 40186cd9..55440250 100644 --- a/shopelectro/management/commands/price.py +++ b/shopelectro/management/commands/price.py @@ -57,6 +57,8 @@ def context(self) -> dict: ).products() return { + 'title': settings.CUSTOM_PAGES['index']['title'], + 'description': settings.CUSTOM_PAGES['index']['description'], 'base_url': settings.BASE_URL, 'categories': categories, 'products': products, @@ -221,3 +223,4 @@ def handle(self, *args, **options): template_path='prices/price.rss', ) ]).create() + print('context',Context('GM').context()) diff --git a/shopelectro/settings/base.py b/shopelectro/settings/base.py index f13ca17f..859107c0 100644 --- a/shopelectro/settings/base.py +++ b/shopelectro/settings/base.py @@ -333,7 +333,8 @@ def get_robots_content(): 'slug': '', 'name': 'Интернет-магазин элементов питания "ShopElectro"', 'menu_title': 'Главная', - 'title': 'Интернет-магазин Элементов питания с доставкой по России', + 'title': 'Интернет-магазин элементов питания с доставкой по России', + 'description': 'Элементы питания в СПб с доставкой по России - интернет магазин элементов питания ShopElectro', }, 'sitemap': { 'slug': 'sitemap', diff --git a/templates/prices/price.rss b/templates/prices/price.rss index 490ac221..60a2e0bf 100644 --- a/templates/prices/price.rss +++ b/templates/prices/price.rss @@ -3,13 +3,9 @@ - {% comment %} - @todo #1004:30m Avoid hardcoded values in RSS template. - Take values like site's title and description from DB. - {% endcomment %} - Интернет магазин Элементов питания с доставкой по России + {{ title }} {{ base_url }} - Элементы питания в СПб с доставкой по России - интернет магазин элементов питания ShopElectro + {{ description }} {% for product in products %} {{ product.name }} From ec51909cab1113d4de74ba1229a47ea1409c14a8 Mon Sep 17 00:00:00 2001 From: olegush Date: Fri, 1 Nov 2019 10:13:06 +0300 Subject: [PATCH 5/9] removed readme from PR --- README.md | 158 ------------------------------------------------------ 1 file changed, 158 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 5935805d..00000000 --- a/README.md +++ /dev/null @@ -1,158 +0,0 @@ -[![Build Status](https://ci.fidals.com/api/badges/fidals/shopelectro/status.svg)](https://ci.fidals.com/fidals/shopelectro) -[![PDD status](http://www.0pdd.com/svg?name=fidals/shopelectro)](http://www.0pdd.com/p?name=fidals/shopelectro) - - -# Shopelectro site documentation -Репозиторий интернет-магазина shopelectro. -Разрабатываем [по методологии PDD](http://fidals.com/dev). - -## Команда -[Линк на роли в команде](https://goo.gl/3HDwaq) разработки сайта. - -## Разворачиваем проект - -Инструкции для быстрой развёртки проекта для разработки. -Подробности смотрите в Makefile и в drone.yml. - -Инструкция работает только для Линукса. -Под Виндой нужна виртуалка. [Как настроить виртуалку под Виндой](https://fidals.com/dev/with-windows). - -Для сокращения введём такие алиасы:: - -```bash -bash alias dc="docker-compose" -bash alias dcp="docker-compose -f docker-compose-production.yml" -``` - -### Для разработки - -#### Готовим код к работе -```bash -# clone repositories -git clone git@github.com:fidals/refarm-site.git -git clone git@github.com:fidals/shopelectro.git -cd shopelectro/docker/ -# this command will ask you to fill some files. -# See this instruction below to get out how to do it. -make deploy-dev - -# optional -dc exec app python manage.py excel -dc exec app python manage.py price -``` - -#### Файлы env -`make deploy-dev` создаст файлы для окружения (env) со стандартными значениями. -А затем попросит заполнить их. - -Пару рекомендаций по заполнению: -- Генерим случайные: Django secret key, пароли к локальным базам -- В файлах `shopelectro/docker/env_files/paths` и `shopelectro/docker/.env` определяем путь `REFARM_DIR=path_to_refarm-site`. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта -нужно поправить код refarm-site вместе с кодом сайта. -- Запрашиваем у Архитектора: Пароль к FTP и почтовому серву - -Проверяем адрес `http://127.0.0.1:8010` - загружается сайт. -Вместо порта `8010` может быть другой - переменная окружения (env var) `VIRTUAL_HOST_EXPOSE_PORT`. - - -#### Makefile -`docker/Makefile` - единственная и полная инструкция для работы с локальным dev-окружением. -Содержит все скрипты, которые мы используем для разработки. -Например: подготовка среды, запуск тестов, внутренних команд приложения. - -#### Запускаем тесты -``` -# запускаем все тесты. -make test - -# запускаем один тест -dc exec app python manage.py test shopelectro.tests.tests_selenium.TestClass.test_method -``` - -#### Fixtures -Некоторые тесты используют fixtures. -Это заранее подготовленные данные из базы. -Подробнее о фикстурах [в документации Django](https://docs.djangoproject.com/en/1.11/topics/testing/tools/#fixture-loading). - -Наши фикстуры лежат в папке `shopelectro/fixtures` -Файл `shopelectro/fixtures/dump.json` сгенерирован специально для тестов. -Если вам нужно добавить данных в тесты, пересоздайте этот файл с новыми данными и закоммитьте. -Для пересоздания фикстур используйте команду `shopelectro/management/commands/test_db.py` -Файл `dump.json` в контроле версий всегда должен соответстовать коду команды `test_db`. - -#### Админка -Адрес: /admin/ - -Логин/пароль: -admin/asdfjkl; - -### Для деплоя -Этот раздел полезен только Архитекторам. -Деплой на сервер делаем руками. - -```bash -make deploy -``` - - -## Бекапы - -### Создаем бекап - -Запускаем специальный контейнер - `se-backup-data`: - -```bash -cd /docker -make backup -``` - -В результате работы контейнер создаст несколько архивов в хост-системе: - -* `/opt/backups/shopelectro/database.tar.gz` - дамп базы данных -* `/opt/backups/shopelectro/media.tar.gz` - дамп медиафайлов -* `/opt/backups/shopelectro/static.tar.gz` - дамп статики - -### Применяем бекап - -Для восстановления базы данных и медиафайлов достаточно запустить ``make restore``. -Скрипт скачает последний бекап с сервера и разместит файлы в продакшен-папках. -Для доступа к бэкап-серверу используются public+private ключи. - -* `/opt/database/shopelectro` - база данных, используется как volume контейнера se-postgres -* `/opt/media/shopelectro` - медиафайлы, используется как volume контейнера se-python -* `/opt/static/shopelectro` - статика, не подключается как volume, нужно скопировать вручную в директорию с статикой - -N.B.: Некоторые данные (например, медиафайлы) могут иметь большой размер. На момент написания этой заметки, архив с медиафайлами Shopelectro весил ~4GB. - -## Архитектура -- [Почему celery](https://github.com/fidals/shopelectro/pull/709#discussion_r251196075) - -# Continuous integration -Выполняет две задачи: -- Проверка. Тестит систему для каждого pull request'a, запускает линтеры для кода. -- Сборка. Собирает систему для dev и prod после каждого пуша в мастер-ветку. - -[Как устроен CI внутри](CI.md). - -# Фичи -https://github.com/fidals/refarm-site/blob/master/pages/README.md -- [Tracking aims](https://github.com/fidals/shopelectro/blob/master/doc/tracking_aims.md) -- *Retail Tags* and *SEO Templates*. -See [refarm-site module's doc](https://github.com/fidals/refarm-site/blob/master/pages/README.md) -for info about both of them. - -## Новый год -- Как добавляли - https://github.com/fidals/shopelectro/pull/224 -- Как удаляли - https://github.com/fidals/shopelectro/pull/278 - -## Товары без картинок -Есть отдельная ссылка на товары без картинок для удобства -- [Separated no-images link](https://www.shopelectro.ru/catalog/no-images/). -It's good to print list. -- [Link to no-images prods in admin panel](https://www.shopelectro.ru/admin/shopelectro/productpage/?has_images=no&is_active__exact=1). -It has filters. - -## Оптовые цены -Убрали их с интерфейса в этой задаче. -Есть небольшая вероятность, что вернём. -https://github.com/fidals/shopelectro/issues/801 From e2f1423a26fea6a293c31d5e82951508c3cfc12f Mon Sep 17 00:00:00 2001 From: olegush Date: Mon, 4 Nov 2019 09:11:39 +0300 Subject: [PATCH 6/9] removed task body #975 from the code --- templates/layout/tile_products.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/templates/layout/tile_products.html b/templates/layout/tile_products.html index 4ff1ebf5..d0ffe225 100644 --- a/templates/layout/tile_products.html +++ b/templates/layout/tile_products.html @@ -15,10 +15,6 @@ {% endwith %} - {% comment %} - @todo #971:60m Remove product tile cards code doubling. - Both in html templates and styles. - {% endcomment %}
Date: Fri, 8 Nov 2019 10:53:20 +0300 Subject: [PATCH 7/9] minor fixes and one new test --- shopelectro/management/commands/price.py | 1 - shopelectro/settings/base.py | 2 +- shopelectro/tests/tests_commands.py | 7 +++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/shopelectro/management/commands/price.py b/shopelectro/management/commands/price.py index 55440250..abf29a9a 100644 --- a/shopelectro/management/commands/price.py +++ b/shopelectro/management/commands/price.py @@ -223,4 +223,3 @@ def handle(self, *args, **options): template_path='prices/price.rss', ) ]).create() - print('context',Context('GM').context()) diff --git a/shopelectro/settings/base.py b/shopelectro/settings/base.py index 859107c0..81c25341 100644 --- a/shopelectro/settings/base.py +++ b/shopelectro/settings/base.py @@ -334,7 +334,7 @@ def get_robots_content(): 'name': 'Интернет-магазин элементов питания "ShopElectro"', 'menu_title': 'Главная', 'title': 'Интернет-магазин элементов питания с доставкой по России', - 'description': 'Элементы питания в СПб с доставкой по России - интернет магазин элементов питания ShopElectro', + 'description': 'Элементы питания в СПб с доставкой по России - интернет-магазин элементов питания ShopElectro', }, 'sitemap': { 'slug': 'sitemap', diff --git a/shopelectro/tests/tests_commands.py b/shopelectro/tests/tests_commands.py index 20476763..64d37d61 100644 --- a/shopelectro/tests/tests_commands.py +++ b/shopelectro/tests/tests_commands.py @@ -324,6 +324,13 @@ def test_items_in_price_rss(self): db_count = len(price.Context('GM').context()['products']) self.assertEqual(len(items), db_count) + def test_title_in_price_rss(self): + filename = 'gm.rss' + file_path = os.path.join(settings.ASSETS_DIR, filename) + root_node = ElementTree.parse(file_path) + title = root_node.getroot().find('channel').find('title').text + self.assertEqual(settings.CUSTOM_PAGES['index']['title'], title) + def test_categories_in_yandex_price(self): categories = self.prices['YM'].categories_node self.assertEqual( From b1008aa56548dc314cc0d2469373c51f948270bf Mon Sep 17 00:00:00 2001 From: olegush Date: Fri, 1 Nov 2019 10:13:06 +0300 Subject: [PATCH 8/9] Revert "removed readme from PR" This reverts commit ec51909cab1113d4de74ba1229a47ea1409c14a8. --- README.md | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..5935805d --- /dev/null +++ b/README.md @@ -0,0 +1,158 @@ +[![Build Status](https://ci.fidals.com/api/badges/fidals/shopelectro/status.svg)](https://ci.fidals.com/fidals/shopelectro) +[![PDD status](http://www.0pdd.com/svg?name=fidals/shopelectro)](http://www.0pdd.com/p?name=fidals/shopelectro) + + +# Shopelectro site documentation +Репозиторий интернет-магазина shopelectro. +Разрабатываем [по методологии PDD](http://fidals.com/dev). + +## Команда +[Линк на роли в команде](https://goo.gl/3HDwaq) разработки сайта. + +## Разворачиваем проект + +Инструкции для быстрой развёртки проекта для разработки. +Подробности смотрите в Makefile и в drone.yml. + +Инструкция работает только для Линукса. +Под Виндой нужна виртуалка. [Как настроить виртуалку под Виндой](https://fidals.com/dev/with-windows). + +Для сокращения введём такие алиасы:: + +```bash +bash alias dc="docker-compose" +bash alias dcp="docker-compose -f docker-compose-production.yml" +``` + +### Для разработки + +#### Готовим код к работе +```bash +# clone repositories +git clone git@github.com:fidals/refarm-site.git +git clone git@github.com:fidals/shopelectro.git +cd shopelectro/docker/ +# this command will ask you to fill some files. +# See this instruction below to get out how to do it. +make deploy-dev + +# optional +dc exec app python manage.py excel +dc exec app python manage.py price +``` + +#### Файлы env +`make deploy-dev` создаст файлы для окружения (env) со стандартными значениями. +А затем попросит заполнить их. + +Пару рекомендаций по заполнению: +- Генерим случайные: Django secret key, пароли к локальным базам +- В файлах `shopelectro/docker/env_files/paths` и `shopelectro/docker/.env` определяем путь `REFARM_DIR=path_to_refarm-site`. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта +нужно поправить код refarm-site вместе с кодом сайта. +- Запрашиваем у Архитектора: Пароль к FTP и почтовому серву + +Проверяем адрес `http://127.0.0.1:8010` - загружается сайт. +Вместо порта `8010` может быть другой - переменная окружения (env var) `VIRTUAL_HOST_EXPOSE_PORT`. + + +#### Makefile +`docker/Makefile` - единственная и полная инструкция для работы с локальным dev-окружением. +Содержит все скрипты, которые мы используем для разработки. +Например: подготовка среды, запуск тестов, внутренних команд приложения. + +#### Запускаем тесты +``` +# запускаем все тесты. +make test + +# запускаем один тест +dc exec app python manage.py test shopelectro.tests.tests_selenium.TestClass.test_method +``` + +#### Fixtures +Некоторые тесты используют fixtures. +Это заранее подготовленные данные из базы. +Подробнее о фикстурах [в документации Django](https://docs.djangoproject.com/en/1.11/topics/testing/tools/#fixture-loading). + +Наши фикстуры лежат в папке `shopelectro/fixtures` +Файл `shopelectro/fixtures/dump.json` сгенерирован специально для тестов. +Если вам нужно добавить данных в тесты, пересоздайте этот файл с новыми данными и закоммитьте. +Для пересоздания фикстур используйте команду `shopelectro/management/commands/test_db.py` +Файл `dump.json` в контроле версий всегда должен соответстовать коду команды `test_db`. + +#### Админка +Адрес: /admin/ + +Логин/пароль: +admin/asdfjkl; + +### Для деплоя +Этот раздел полезен только Архитекторам. +Деплой на сервер делаем руками. + +```bash +make deploy +``` + + +## Бекапы + +### Создаем бекап + +Запускаем специальный контейнер - `se-backup-data`: + +```bash +cd /docker +make backup +``` + +В результате работы контейнер создаст несколько архивов в хост-системе: + +* `/opt/backups/shopelectro/database.tar.gz` - дамп базы данных +* `/opt/backups/shopelectro/media.tar.gz` - дамп медиафайлов +* `/opt/backups/shopelectro/static.tar.gz` - дамп статики + +### Применяем бекап + +Для восстановления базы данных и медиафайлов достаточно запустить ``make restore``. +Скрипт скачает последний бекап с сервера и разместит файлы в продакшен-папках. +Для доступа к бэкап-серверу используются public+private ключи. + +* `/opt/database/shopelectro` - база данных, используется как volume контейнера se-postgres +* `/opt/media/shopelectro` - медиафайлы, используется как volume контейнера se-python +* `/opt/static/shopelectro` - статика, не подключается как volume, нужно скопировать вручную в директорию с статикой + +N.B.: Некоторые данные (например, медиафайлы) могут иметь большой размер. На момент написания этой заметки, архив с медиафайлами Shopelectro весил ~4GB. + +## Архитектура +- [Почему celery](https://github.com/fidals/shopelectro/pull/709#discussion_r251196075) + +# Continuous integration +Выполняет две задачи: +- Проверка. Тестит систему для каждого pull request'a, запускает линтеры для кода. +- Сборка. Собирает систему для dev и prod после каждого пуша в мастер-ветку. + +[Как устроен CI внутри](CI.md). + +# Фичи +https://github.com/fidals/refarm-site/blob/master/pages/README.md +- [Tracking aims](https://github.com/fidals/shopelectro/blob/master/doc/tracking_aims.md) +- *Retail Tags* and *SEO Templates*. +See [refarm-site module's doc](https://github.com/fidals/refarm-site/blob/master/pages/README.md) +for info about both of them. + +## Новый год +- Как добавляли - https://github.com/fidals/shopelectro/pull/224 +- Как удаляли - https://github.com/fidals/shopelectro/pull/278 + +## Товары без картинок +Есть отдельная ссылка на товары без картинок для удобства +- [Separated no-images link](https://www.shopelectro.ru/catalog/no-images/). +It's good to print list. +- [Link to no-images prods in admin panel](https://www.shopelectro.ru/admin/shopelectro/productpage/?has_images=no&is_active__exact=1). +It has filters. + +## Оптовые цены +Убрали их с интерфейса в этой задаче. +Есть небольшая вероятность, что вернём. +https://github.com/fidals/shopelectro/issues/801 From 6cc61b43c22a76e4c82055f226ad98629d456607 Mon Sep 17 00:00:00 2001 From: olegush Date: Fri, 1 Nov 2019 10:13:06 +0300 Subject: [PATCH 9/9] Revert "removed readme from PR" This reverts commit ec51909cab1113d4de74ba1229a47ea1409c14a8. --- README.md | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..5935805d --- /dev/null +++ b/README.md @@ -0,0 +1,158 @@ +[![Build Status](https://ci.fidals.com/api/badges/fidals/shopelectro/status.svg)](https://ci.fidals.com/fidals/shopelectro) +[![PDD status](http://www.0pdd.com/svg?name=fidals/shopelectro)](http://www.0pdd.com/p?name=fidals/shopelectro) + + +# Shopelectro site documentation +Репозиторий интернет-магазина shopelectro. +Разрабатываем [по методологии PDD](http://fidals.com/dev). + +## Команда +[Линк на роли в команде](https://goo.gl/3HDwaq) разработки сайта. + +## Разворачиваем проект + +Инструкции для быстрой развёртки проекта для разработки. +Подробности смотрите в Makefile и в drone.yml. + +Инструкция работает только для Линукса. +Под Виндой нужна виртуалка. [Как настроить виртуалку под Виндой](https://fidals.com/dev/with-windows). + +Для сокращения введём такие алиасы:: + +```bash +bash alias dc="docker-compose" +bash alias dcp="docker-compose -f docker-compose-production.yml" +``` + +### Для разработки + +#### Готовим код к работе +```bash +# clone repositories +git clone git@github.com:fidals/refarm-site.git +git clone git@github.com:fidals/shopelectro.git +cd shopelectro/docker/ +# this command will ask you to fill some files. +# See this instruction below to get out how to do it. +make deploy-dev + +# optional +dc exec app python manage.py excel +dc exec app python manage.py price +``` + +#### Файлы env +`make deploy-dev` создаст файлы для окружения (env) со стандартными значениями. +А затем попросит заполнить их. + +Пару рекомендаций по заполнению: +- Генерим случайные: Django secret key, пароли к локальным базам +- В файлах `shopelectro/docker/env_files/paths` и `shopelectro/docker/.env` определяем путь `REFARM_DIR=path_to_refarm-site`. Интерфейс refarm-site нестабилен, поэтому иногда при разработке фичи сайта +нужно поправить код refarm-site вместе с кодом сайта. +- Запрашиваем у Архитектора: Пароль к FTP и почтовому серву + +Проверяем адрес `http://127.0.0.1:8010` - загружается сайт. +Вместо порта `8010` может быть другой - переменная окружения (env var) `VIRTUAL_HOST_EXPOSE_PORT`. + + +#### Makefile +`docker/Makefile` - единственная и полная инструкция для работы с локальным dev-окружением. +Содержит все скрипты, которые мы используем для разработки. +Например: подготовка среды, запуск тестов, внутренних команд приложения. + +#### Запускаем тесты +``` +# запускаем все тесты. +make test + +# запускаем один тест +dc exec app python manage.py test shopelectro.tests.tests_selenium.TestClass.test_method +``` + +#### Fixtures +Некоторые тесты используют fixtures. +Это заранее подготовленные данные из базы. +Подробнее о фикстурах [в документации Django](https://docs.djangoproject.com/en/1.11/topics/testing/tools/#fixture-loading). + +Наши фикстуры лежат в папке `shopelectro/fixtures` +Файл `shopelectro/fixtures/dump.json` сгенерирован специально для тестов. +Если вам нужно добавить данных в тесты, пересоздайте этот файл с новыми данными и закоммитьте. +Для пересоздания фикстур используйте команду `shopelectro/management/commands/test_db.py` +Файл `dump.json` в контроле версий всегда должен соответстовать коду команды `test_db`. + +#### Админка +Адрес: /admin/ + +Логин/пароль: +admin/asdfjkl; + +### Для деплоя +Этот раздел полезен только Архитекторам. +Деплой на сервер делаем руками. + +```bash +make deploy +``` + + +## Бекапы + +### Создаем бекап + +Запускаем специальный контейнер - `se-backup-data`: + +```bash +cd /docker +make backup +``` + +В результате работы контейнер создаст несколько архивов в хост-системе: + +* `/opt/backups/shopelectro/database.tar.gz` - дамп базы данных +* `/opt/backups/shopelectro/media.tar.gz` - дамп медиафайлов +* `/opt/backups/shopelectro/static.tar.gz` - дамп статики + +### Применяем бекап + +Для восстановления базы данных и медиафайлов достаточно запустить ``make restore``. +Скрипт скачает последний бекап с сервера и разместит файлы в продакшен-папках. +Для доступа к бэкап-серверу используются public+private ключи. + +* `/opt/database/shopelectro` - база данных, используется как volume контейнера se-postgres +* `/opt/media/shopelectro` - медиафайлы, используется как volume контейнера se-python +* `/opt/static/shopelectro` - статика, не подключается как volume, нужно скопировать вручную в директорию с статикой + +N.B.: Некоторые данные (например, медиафайлы) могут иметь большой размер. На момент написания этой заметки, архив с медиафайлами Shopelectro весил ~4GB. + +## Архитектура +- [Почему celery](https://github.com/fidals/shopelectro/pull/709#discussion_r251196075) + +# Continuous integration +Выполняет две задачи: +- Проверка. Тестит систему для каждого pull request'a, запускает линтеры для кода. +- Сборка. Собирает систему для dev и prod после каждого пуша в мастер-ветку. + +[Как устроен CI внутри](CI.md). + +# Фичи +https://github.com/fidals/refarm-site/blob/master/pages/README.md +- [Tracking aims](https://github.com/fidals/shopelectro/blob/master/doc/tracking_aims.md) +- *Retail Tags* and *SEO Templates*. +See [refarm-site module's doc](https://github.com/fidals/refarm-site/blob/master/pages/README.md) +for info about both of them. + +## Новый год +- Как добавляли - https://github.com/fidals/shopelectro/pull/224 +- Как удаляли - https://github.com/fidals/shopelectro/pull/278 + +## Товары без картинок +Есть отдельная ссылка на товары без картинок для удобства +- [Separated no-images link](https://www.shopelectro.ru/catalog/no-images/). +It's good to print list. +- [Link to no-images prods in admin panel](https://www.shopelectro.ru/admin/shopelectro/productpage/?has_images=no&is_active__exact=1). +It has filters. + +## Оптовые цены +Убрали их с интерфейса в этой задаче. +Есть небольшая вероятность, что вернём. +https://github.com/fidals/shopelectro/issues/801