flask-shop

build status GitHub forks GitHub stars GitHub watchers GitHub issues

Shop - интернет магазин с базой данных из 1c

Проект для Яндекс.Лицей.

Функционал

  • чтение отсчёта из 1c
  • админ панель
  • поиск товара (elasticsearch)
  • cli утилита для сборки
  • изменение/добавление

изменение/добавление

  • файла отсчёта через админ панель
  • изображений
  • администраторов
  • категорий и подкатегорий
  • ключевых слов

ext.py

class ext.Parser
next_keyword()

следующая обработка строки по ключевым словам

next_1c()

следующая строка для db

read_cfg()

чтение конфига

keywords.py

Содержит два класса для проверки слова по шаблону.

Keyword

class Keyword(keyword, routing)

keyword (int) шаблон (регулярное выражение)

routing (int, str) путь (куда надо вставить)

__eq__()

сравнение с использованием re.fullmatch

KeywordTable

class KeywordTable(keywords)

класс ключевых слов

contains(item)

проверка, есть ли слово в шаблонах

build.py

Функционал:

  • --sql собрать базу данных Item из отчёта
  • --key запустить обработку ключевых слов
  • --search проиндексировать базу данных Item

Использует:

  • argparse (аргументы запуска)
  • multiprocessing.Pool
  • tqdm Progress Bar
  • elasticsearch для поиска
  • свой ext.Parser

Как работает:

  • --sql и --key последовательно работают, используя ext.Parser
  • --search работает, запуская пул процессов multiprocessing.Pool + elasticsearch для поиска

main.py

flask-admin

админка для сайта с поддержкой flask-login

в которой зарегистрированно все модели + Build (для сборки с сайта)

_images/admin.png _images/admin_build.png

поиск

использует:

  • @app.before_request запускается перед любым запросом
  • api (api/search)
  • ajax (для realtime обновления)
  • SearchForm (flask-wtf) форма для поиска
_images/search.png

контакты

использует: yandex-map-js

  • добавленны метки
  • информация на клик (картинка, контакты)
  • позиционирование по центру
_images/map.png

отображение товаров

использует bootstrap (v4) card

шаблон item.html получает список объктов

_images/items.png

INI

форма которая помогает состовлять новые ключевые слова

  • красный - только ini
  • зелёный - ini и regex
  • жёлтый - только regex
_images/ini.png

api

Items id=?

получение товаров по id=?

// http://dom59reg.ru/api/items?id=4643
{
  "item": {
    "Смеситель д/р ORCA \"Тулон\" ORC2421H14": {
      "cost": 1991,
      "id": 4643,
      "count": 2,
      "img": "first.jpg"
    }
  },
  "path": [
    "Сантехника (отдел)",
    "Смеситель",
    "Смеситель для раковины"
  ]
}

Items path=?

получение товаров по path=?

// http://dom59reg.ru/api/items?path=1.1.1
{
  "items": {
    "Смеситель д/р ORCA \"Тулон\" ORC2421H14": {
      "cost": 1991,
      "id": 4643,
      "count": 2,
      "img": "first.jpg"
    },
    // ...
  },
  "path": [
    "Сантехника (отдел)",
    "Смеситель",
    "Смеситель для раковины"
  ]
}

GoBuild

запуск build.py из админки

/api/gobuild?build_args=sql